From 8d08968173c74c0f919ca8a4c6d516013d1b3c0e Mon Sep 17 00:00:00 2001 From: taoser Date: Mon, 10 May 2021 13:59:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E6=A0=B8=E5=BF=83=E6=A1=86?= =?UTF-8?q?=E6=9E=B6=EF=BC=8Clayui2.6.6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/AuthRule.php | 58 +- app/admin/controller/FileManager.php | 124 + app/admin/view/auth_rule/add.html | 84 +- app/admin/view/auth_rule/edit.html | 82 +- app/admin/view/auth_rule/index.html | 556 ++-- app/admin/view/file_manager/index.html | 80 + composer.json | 3 +- composer.lock | 178 +- config/taoler.php | 2 +- .../LocalBridge/FileManagerApi.php | 662 +++++ ...503_074912_com-ss-android-article-news.jpg | Bin 0 -> 309956 bytes extend/AngularFilemanager/t.jpg | Bin 0 -> 88782 bytes public/file/src/js/providers/config.js | 76 + public/lang/de.json | 18 + public/lang/en.json | 18 + public/lang/fr.json | 18 + public/lang/it.json | 18 + public/lang/ko.json | 18 + public/lang/sk.json | 18 + public/static/admin/modules/iconPicker.js | 400 +++ public/static/admin/modules/treeTable.js | 2265 +++++++++++++++++ public/static/admin/modules/xmSelect.js | 8 + public/static/admin/style/admin.css | 16 + public/static/admin/tree/css/demo.css | 212 ++ public/static/admin/tree/css/icon_date.png | Bin 0 -> 314 bytes public/static/admin/tree/css/treeTable.css | 437 ++++ public/static/admin/tree/treeTable.js | 2265 +++++++++++++++++ public/static/layui/css/layui.css | 2 +- .../css/modules/laydate/default/laydate.css | 2 +- public/static/layui/layui.js | 7 +- vendor/composer/InstalledVersions.php | 65 +- vendor/composer/autoload_files.php | 1 + vendor/composer/autoload_psr4.php | 1 + vendor/composer/autoload_static.php | 9 + vendor/composer/installed.json | 202 +- vendor/composer/installed.php | 65 +- vendor/composer/platform_check.php | 1 + vendor/firebase/php-jwt/README.md | 13 + vendor/firebase/php-jwt/src/JWK.php | 1 + vendor/phpmailer/phpmailer/README.md | 127 +- vendor/phpmailer/phpmailer/SECURITY.md | 4 +- vendor/phpmailer/phpmailer/VERSION | 2 +- vendor/phpmailer/phpmailer/composer.json | 8 +- .../phpmailer/phpmailer/get_oauth_token.php | 24 +- .../phpmailer/language/phpmailer.lang-cs.php | 2 + .../phpmailer/language/phpmailer.lang-sk.php | 2 + .../language/phpmailer.lang-sr_latn.php | 28 + .../phpmailer/language/phpmailer.lang-uk.php | 4 +- vendor/phpmailer/phpmailer/phpunit.xml.dist | 35 + vendor/phpmailer/phpmailer/src/OAuth.php | 2 +- vendor/phpmailer/phpmailer/src/PHPMailer.php | 409 +-- vendor/phpmailer/phpmailer/src/POP3.php | 44 +- vendor/phpmailer/phpmailer/src/SMTP.php | 116 +- vendor/psr/container/README.md | 14 +- vendor/psr/container/composer.json | 9 +- .../src/ContainerExceptionInterface.php | 3 - .../psr/container/src/ContainerInterface.php | 9 +- .../src/NotFoundExceptionInterface.php | 3 - vendor/psr/log/Psr/Log/AbstractLogger.php | 32 +- vendor/psr/log/Psr/Log/LoggerAwareTrait.php | 2 +- vendor/psr/log/composer.json | 2 +- vendor/services.php | 2 +- .../symfony/polyfill-mbstring/bootstrap80.php | 72 +- .../symfony/var-dumper/Caster/DateCaster.php | 2 +- .../var-dumper/Caster/ReflectionCaster.php | 21 +- .../var-dumper/Command/ServerDumpCommand.php | 4 +- vendor/topthink/framework/src/think/App.php | 43 +- .../topthink/framework/src/think/Request.php | 18 + .../topthink/framework/src/think/Response.php | 2 +- .../topthink/framework/src/think/Validate.php | 2 +- .../src/think/console/input/Argument.php | 25 +- .../framework/src/think/event/LogRecord.php | 29 + .../framework/src/think/log/Channel.php | 4 + .../framework/src/think/route/RuleGroup.php | 20 +- .../src/think/session/driver/File.php | 2 +- vendor/topthink/think-orm/.gitattributes | 3 + vendor/topthink/think-orm/composer.json | 16 +- vendor/topthink/think-orm/src/DbManager.php | 24 +- vendor/topthink/think-orm/src/Model.php | 41 +- .../topthink/think-orm/src/db/BaseQuery.php | 8 +- vendor/topthink/think-orm/src/db/Builder.php | 16 +- .../topthink/think-orm/src/db/Connection.php | 43 +- .../think-orm/src/db/ConnectionInterface.php | 4 +- .../think-orm/src/db/PDOConnection.php | 186 +- .../think-orm/src/db/builder/Mysql.php | 4 +- .../think-orm/src/db/connector/Mongo.php | 15 +- .../src/db/exception/DbException.php | 108 +- vendor/topthink/think-orm/src/facade/Db.php | 57 +- .../think-orm/src/model/Collection.php | 15 + .../think-orm/src/model/concern/Attribute.php | 72 +- .../src/model/concern/Conversion.php | 30 +- .../src/model/concern/RelationShip.php | 11 +- .../src/model/concern/SoftDelete.php | 7 +- .../think-orm/src/model/relation/MorphOne.php | 71 +- vendor/topthink/think-orm/stubs/Exception.php | 59 + vendor/topthink/think-orm/stubs/Facade.php | 65 + .../topthink/think-orm/stubs/load_stubs.php | 9 + vendor/wamkj/thinkphp6.0-databackup/LICENSE | 201 ++ vendor/wamkj/thinkphp6.0-databackup/README.md | 58 + .../thinkphp6.0-databackup/composer.json | 21 + .../thinkphp6.0-databackup/src/Backup.php | 430 ++++ 101 files changed, 9442 insertions(+), 1244 deletions(-) create mode 100644 app/admin/controller/FileManager.php create mode 100644 app/admin/view/file_manager/index.html create mode 100644 extend/AngularFilemanager/LocalBridge/FileManagerApi.php create mode 100644 extend/AngularFilemanager/creenshot_20210503_074912_com-ss-android-article-news.jpg create mode 100644 extend/AngularFilemanager/t.jpg create mode 100644 public/file/src/js/providers/config.js create mode 100644 public/lang/de.json create mode 100644 public/lang/en.json create mode 100644 public/lang/fr.json create mode 100644 public/lang/it.json create mode 100644 public/lang/ko.json create mode 100644 public/lang/sk.json create mode 100644 public/static/admin/modules/iconPicker.js create mode 100644 public/static/admin/modules/treeTable.js create mode 100644 public/static/admin/modules/xmSelect.js create mode 100644 public/static/admin/tree/css/demo.css create mode 100644 public/static/admin/tree/css/icon_date.png create mode 100644 public/static/admin/tree/css/treeTable.css create mode 100644 public/static/admin/tree/treeTable.js create mode 100644 vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php create mode 100644 vendor/phpmailer/phpmailer/phpunit.xml.dist create mode 100644 vendor/topthink/framework/src/think/event/LogRecord.php create mode 100644 vendor/topthink/think-orm/.gitattributes create mode 100644 vendor/topthink/think-orm/stubs/Exception.php create mode 100644 vendor/topthink/think-orm/stubs/Facade.php create mode 100644 vendor/topthink/think-orm/stubs/load_stubs.php create mode 100644 vendor/wamkj/thinkphp6.0-databackup/LICENSE create mode 100644 vendor/wamkj/thinkphp6.0-databackup/README.md create mode 100644 vendor/wamkj/thinkphp6.0-databackup/composer.json create mode 100644 vendor/wamkj/thinkphp6.0-databackup/src/Backup.php diff --git a/app/admin/controller/AuthRule.php b/app/admin/controller/AuthRule.php index 437b3cb..169a277 100644 --- a/app/admin/controller/AuthRule.php +++ b/app/admin/controller/AuthRule.php @@ -20,11 +20,11 @@ class AuthRule extends AdminController $count = count($auth_rules); $res = []; if($auth_rules){ - $res = ['code'=>0,'msg'=>'','count'=>$count]; + $res = ['code'=>0,'msg'=>'ok','count'=>$count]; foreach($auth_rules as $k => $v){ //$data = $v->getData(); - $data = ['id'=>$v['id'],'sort'=>$v['sort'],'title'=>str_repeat('---',$v['level']*2).$v['title'],'name'=>$v['name'],'icon'=>$v['icon'],'status'=>$v['status'],'level'=>$v['level']+1,'ishidden'=>$v['ishidden']]; + $data = ['id'=>$v['id'],'pid'=>$v['pid'],'title'=>$v['title'],'url'=>$v['name'],'icon'=>$v['icon'],'status'=>$v['status'],'isMenu'=>$v['ishidden'],'sort'=>$v['sort'],'ctime'=>$v['create_time']]; $res['data'][] = $data; } } @@ -33,6 +33,58 @@ class AuthRule extends AdminController return View::fetch(); } + + //权限树 + public function tree() + { + + //$res = $this->treeTr($this->getMenus()); + //var_dump($res); + /* + 支持获取三级菜单 + */ + $result = $this->getMenus(); + + $count = count($result); + $tree = []; + if($result){ + $tree = ['code'=>0,'msg'=>'','count'=>$count]; + + $res = []; //auth_rule储存数据表中的表结构 + foreach($result as $k => $v){ + //第一层子权限 + $children = []; + if(isset($v['children'])){ + + foreach($v['children'] as $m => $j){ + //第二层子权限 + $chichi = []; + if(isset($j['children'])){ + //第三层子权限 + foreach($j as $s){ + if(isset($s['children'])){ + $chichi[] = ['id'=>$s['id'],'title'=>$s['title'],'pid'=>$s['pid']]; //子数据的子数据 + } + } + } + + //if($j['level'] < 3){} + $children[] = ['id'=>$j['id'],'title'=>$j['title'],'pid'=>$j['pid'],'children'=>$chichi]; //子数据 + } + } + + + $data[] = ['id'=>$v['id'],'title'=>$v['title'],'pid'=>$v['pid'],'children'=>$children]; + + } + + //构造一个顶级菜单pid=0的数组。把权限放入顶级菜单下子权限中 + $tree['data'][] = ['id'=>0,'title'=>'顶级','pid'=>0,'children'=>$data]; + } + + return json($tree); + } + //添加权限 public function add() { @@ -66,7 +118,7 @@ class AuthRule extends AdminController $rule = new AuthRuleModel(); if(Request::isAjax()){ - $data = Request::param(); + $data = Request::param(['id','pid','title','name','icon','sort','ishidden']); $ruId = $rule->find($data['pid']); //查询出上级ID if($ruId){ $plevel = $ruId->level; //上级level等级 diff --git a/app/admin/controller/FileManager.php b/app/admin/controller/FileManager.php new file mode 100644 index 0000000..5b65274 --- /dev/null +++ b/app/admin/controller/FileManager.php @@ -0,0 +1,124 @@ +post([$fileManagerApi, 'postHandler']) + ->get([$fileManagerApi, 'getHandler']) + ->handle(); + } + + public function data() + { + + + + + $url = 'http://api.aieok.com/v1/handler'; +/* + $data = json([ + 'action'=>'list', + 'path'=> '/' + ])->header([ + 'Cache-control' => 'no-cache,must-revalidate', + 'Content-Type' => 'application/json' + ]); + +*/ + $datas = [ + 'action'=>'list', + 'path'=> '/' + ]; + $jsonStr = json_encode($datas); + list($returnCode, $returnContent) = $this->http_post_json($url, $jsonStr); + + if($returnCode == 200){ + $res = trim($returnContent,'"'); + return json_decode($res); + } + + + + //var_dump($data); + //$apiRes = Api::urlPost($url,$data); + //var_dump($apiRes); + + //return $apiRes; + + + //$path = app()->getRootPath(); + // var_dump($path); + //Listing (URL: fileManagerConfig.listUrl, Method: POST) + + /* + $fileManagerApi = new FileManagerApi(); + $file = $fileManagerApi->listActionData('/'); + + $data['result'] = $file; + + + */ + //$rest = new Rest('post'); + //$rest->post([$fileManagerApi, 'postHandler']) + // ->get([$fileManagerApi, 'getHandler']) + // ->handle(); + + //$res = $fileManagerApi->postHandler([],['action'=>'list', 'path'=>'../'],''); + //$rest = new Rest(); + //$rest->post([$fileManagerApi, 'postHandler']) + //->handle(); + + + } + + + public function http_post_json($url, $jsonStr) + { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 20); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_HTTPHEADER, array( + 'Content-Type: application/json; charset=utf-8', + + ) + ); + curl_setopt($ch, CURLOPT_HEADER, 0); // ʾصHeader + curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr); + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + return array($httpCode,$response); + } +} + + diff --git a/app/admin/view/auth_rule/add.html b/app/admin/view/auth_rule/add.html index 0ce8454..4e917ec 100644 --- a/app/admin/view/auth_rule/add.html +++ b/app/admin/view/auth_rule/add.html @@ -7,42 +7,40 @@
- +
- +
- +
- +
+
- +
- +
-
- +
+
- + + +
@@ -57,9 +55,63 @@ base: '/static/admin/' //静态资源所在路径 }).extend({ index: 'lib/index' //主入口模块 - }).use(['index', 'form'], function(){ + }).use(['index', 'form','admin', 'xmSelect', 'iconPicker'], function(){ var $ = layui.$ ,form = layui.form ; - }) + var admin = layui.admin; + var xmSelect = layui.xmSelect; + var iconPicker = layui.iconPicker; + + + //初始化图标选择 + iconPicker.render({ + elem: '#iconPicker', + type: 'fontClass', + search: false, + page: true, + limit: 12, + click: function (data) { + //console.log(data); + } + }); + + //权限菜单结构 + admin.req({ + type: "post", + url: "{:url('AuthRule/tree')}", + data:{}, + done:function(res){ + var data = res.data; + + // 渲染下拉树 + xmSelect.render({ + el: '#menuSelectBox', + name: 'pid', + height: '250px', + layVerify: 'required', + layVerType: 'tips', + data: data, + initValue: [], + model: {label: {type: 'text'}}, + prop: { + name: 'title', + value: 'id' + }, + radio: true, + clickClose: true, + tree: { + show: true, + indent: 15, + strict: false, + expandedKeys: true + }, + tips: '请选择上级菜单' + }); + } + + }); + + + }); {/block} \ No newline at end of file diff --git a/app/admin/view/auth_rule/edit.html b/app/admin/view/auth_rule/edit.html index a34a71a..3dd2a63 100644 --- a/app/admin/view/auth_rule/edit.html +++ b/app/admin/view/auth_rule/edit.html @@ -10,16 +10,11 @@
- +
- +
@@ -27,25 +22,27 @@
- +
- +
- +
-
- +
+
- + + +
@@ -60,9 +57,66 @@ base: '/static/admin/' //静态资源所在路径 }).extend({ index: 'lib/index' //主入口模块 - }).use(['index', 'form'], function(){ + }).use(['index', 'form','admin', 'xmSelect', 'iconPicker'], function(){ var $ = layui.$ ,form = layui.form ; + + var admin = layui.admin; + var xmSelect = layui.xmSelect; + var iconPicker = layui.iconPicker; + + + //初始化图标选择 + iconPicker.render({ + elem: '#iconPicker', + type: 'fontClass', + search: false, + page: true, + limit: 12, + click: function (data) { + //console.log(data); + } + }); + + //权限菜单结构 + admin.req({ + type: "post", + url: "{:url('AuthRule/tree')}", + data:{}, + done:function(res){ + var data = res.data; + + // 渲染下拉树 + xmSelect.render({ + el: '#menuSelectBox', + name: 'pid', + height: '250px', + layVerify: 'required', + layVerType: 'tips', + data: data, + initValue: [{$rules['pid']}], + model: {label: {type: 'text'}}, + prop: { + name: 'title', + value: 'id' + }, + radio: true, + clickClose: true, + tree: { + show: true, + indent: 15, + strict: false, + expandedKeys: true + }, + tips: '请选择上级菜单' + }); + } + + }); + + + + }) {/block} \ No newline at end of file diff --git a/app/admin/view/auth_rule/index.html b/app/admin/view/auth_rule/index.html index d9d3ea3..fe48c77 100644 --- a/app/admin/view/auth_rule/index.html +++ b/app/admin/view/auth_rule/index.html @@ -1,269 +1,319 @@ + {extend name="public:base" /} - +{block name="css"}{/block} {block name="body"} -
-
-
权限菜单
- -
-
- -
-
- - - - - - - -
+ + + +
+ +
+
-
+
+ + + {/block} + {block name="js"} - -{/block} + +{/block} \ No newline at end of file diff --git a/app/admin/view/file_manager/index.html b/app/admin/view/file_manager/index.html new file mode 100644 index 0000000..b69f85c --- /dev/null +++ b/app/admin/view/file_manager/index.html @@ -0,0 +1,80 @@ + + + + + + + angular-filemanager + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/composer.json b/composer.json index 2bf5ae8..de22082 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,8 @@ "phpmailer/phpmailer": "^6.1", "zzstudio/think-addons": "^2.0", "firebase/php-jwt": "^5.2", - "lotofbadcode/phpspirit_databackup": "^1.1" + "lotofbadcode/phpspirit_databackup": "^1.1", + "wamkj/thinkphp6.0-databackup": "^1.0" }, "require-dev": { "symfony/var-dumper": "^4.2", diff --git a/composer.lock b/composer.lock index 3203907..8bcc91e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f4ac487289cab0dba8660f5759f64a21", + "content-hash": "c6dc1dcd45b2b2cd2e7bd36c0e76eb04", "packages": [ { "name": "firebase/php-jwt", - "version": "v5.2.0", + "version": "v5.2.1", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb" + "reference": "f42c9110abe98dd6cfe9053c49bc86acc70b2d23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/feb0e820b8436873675fd3aca04f3728eb2185cb", - "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/f42c9110abe98dd6cfe9053c49bc86acc70b2d23", + "reference": "f42c9110abe98dd6cfe9053c49bc86acc70b2d23", "shasum": "", "mirrors": [ { @@ -62,9 +62,9 @@ ], "support": { "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/master" + "source": "https://github.com/firebase/php-jwt/tree/v5.2.1" }, - "time": "2020-03-25T18:49:23+00:00" + "time": "2021-02-12T00:02:00+00:00" }, { "name": "league/flysystem", @@ -338,16 +338,16 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.2.0", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "e38888a75c070304ca5514197d4847a59a5c853f" + "reference": "9256f12d8fb0cd0500f93b19e18c356906cbed3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f", - "reference": "e38888a75c070304ca5514197d4847a59a5c853f", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/9256f12d8fb0cd0500f93b19e18c356906cbed3d", + "reference": "9256f12d8fb0cd0500f93b19e18c356906cbed3d", "shasum": "", "mirrors": [ { @@ -371,7 +371,7 @@ "yoast/phpunit-polyfills": "^0.2.0" }, "suggest": { - "ext-mbstring": "Needed to send email in multibyte encoding charset", + "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", "league/oauth2-google": "Needed for Google XOAUTH2 authentication", "psr/log": "For optional PSR-3 debug logging", @@ -408,7 +408,7 @@ "description": "PHPMailer is a full-featured email creation and transfer class for PHP", "support": { "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.2.0" + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.4.1" }, "funding": [ { @@ -416,7 +416,7 @@ "type": "github" } ], - "time": "2020-11-25T15:24:57+00:00" + "time": "2021-04-29T12:25:04+00:00" }, { "name": "psr/cache", @@ -475,16 +475,16 @@ }, { "name": "psr/container", - "version": "1.0.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", "shasum": "", "mirrors": [ { @@ -494,14 +494,9 @@ ] }, "require": { - "php": ">=5.3.0" + "php": ">=7.2.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -514,7 +509,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -528,22 +523,22 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/master" + "source": "https://github.com/php-fig/container/tree/1.1.1" }, - "time": "2017-02-14T16:28:37+00:00" + "time": "2021-03-05T17:36:06+00:00" }, { "name": "psr/log", - "version": "1.1.3", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "", "mirrors": [ { @@ -573,7 +568,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for logging libraries", @@ -584,9 +579,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.3" + "source": "https://github.com/php-fig/log/tree/1.1.4" }, - "time": "2020-03-23T09:12:05+00:00" + "time": "2021-05-03T11:20:27+00:00" }, { "name": "psr/simple-cache", @@ -706,16 +701,16 @@ }, { "name": "topthink/framework", - "version": "v6.0.7", + "version": "v6.0.8", "source": { "type": "git", "url": "https://github.com/top-think/framework.git", - "reference": "db8fe22520a9660dd5e4c87e304034ac49e39270" + "reference": "4789343672aef06d571d556da369c0e156609bce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/top-think/framework/zipball/db8fe22520a9660dd5e4c87e304034ac49e39270", - "reference": "db8fe22520a9660dd5e4c87e304034ac49e39270", + "url": "https://api.github.com/repos/top-think/framework/zipball/4789343672aef06d571d556da369c0e156609bce", + "reference": "4789343672aef06d571d556da369c0e156609bce", "shasum": "", "mirrors": [ { @@ -771,9 +766,9 @@ ], "support": { "issues": "https://github.com/top-think/framework/issues", - "source": "https://github.com/top-think/framework/tree/v6.0.7" + "source": "https://github.com/top-think/framework/tree/v6.0.8" }, - "time": "2021-01-25T14:48:29+00:00" + "time": "2021-04-27T00:41:08+00:00" }, { "name": "topthink/think-captcha", @@ -939,16 +934,16 @@ }, { "name": "topthink/think-orm", - "version": "v2.0.36", + "version": "v2.0.40", "source": { "type": "git", "url": "https://github.com/top-think/think-orm.git", - "reference": "f48dc09050f25029d41a66bfc9c3c403e4f82024" + "reference": "1119d979b850849f3725856460cf108eec1c3eb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/top-think/think-orm/zipball/f48dc09050f25029d41a66bfc9c3c403e4f82024", - "reference": "f48dc09050f25029d41a66bfc9c3c403e4f82024", + "url": "https://api.github.com/repos/top-think/think-orm/zipball/1119d979b850849f3725856460cf108eec1c3eb8", + "reference": "1119d979b850849f3725856460cf108eec1c3eb8", "shasum": "", "mirrors": [ { @@ -959,17 +954,23 @@ }, "require": { "ext-json": "*", + "ext-pdo": "*", "php": ">=7.1.0", "psr/log": "~1.0", "psr/simple-cache": "^1.0", "topthink/think-helper": "^3.1" }, + "require-dev": { + "phpunit/phpunit": "^7|^8|^9.5" + }, "type": "library", "autoload": { "psr-4": { "think\\": "src" }, - "files": [] + "files": [ + "stubs/load_stubs.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -988,9 +989,9 @@ ], "support": { "issues": "https://github.com/top-think/think-orm/issues", - "source": "https://github.com/top-think/think-orm/tree/v2.0.36" + "source": "https://github.com/top-think/think-orm/tree/v2.0.40" }, - "time": "2021-01-12T09:08:52+00:00" + "time": "2021-04-19T13:29:37+00:00" }, { "name": "topthink/think-template", @@ -1086,6 +1087,57 @@ }, "time": "2019-11-06T11:40:13+00:00" }, + { + "name": "wamkj/thinkphp6.0-databackup", + "version": "v1.0", + "source": { + "type": "git", + "url": "https://github.com/wamkj/thinkphp6.0-databackup.git", + "reference": "28a0e406d827132942723a3c9f69bb20c98e652f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wamkj/thinkphp6.0-databackup/zipball/28a0e406d827132942723a3c9f69bb20c98e652f", + "reference": "28a0e406d827132942723a3c9f69bb20c98e652f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1.0", + "topthink/framework": "^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "wamkj\\thinkphp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "wamkj", + "email": "1149183529@qq.com" + } + ], + "description": "thinkphp6.0的数据库自动备份扩展", + "keywords": [ + "think-databackup", + "thinkphp" + ], + "support": { + "issues": "https://github.com/wamkj/thinkphp6.0-databackup/issues", + "source": "https://github.com/wamkj/thinkphp6.0-databackup/tree/v1.0" + }, + "time": "2020-02-15T13:04:16+00:00" + }, { "name": "zzstudio/think-addons", "version": "2.0.5", @@ -1152,16 +1204,16 @@ "packages-dev": [ { "name": "symfony/polyfill-mbstring", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13" + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", - "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1", "shasum": "", "mirrors": [ { @@ -1218,7 +1270,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1" }, "funding": [ { @@ -1234,11 +1286,11 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", @@ -1300,7 +1352,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.22.1" }, "funding": [ { @@ -1320,7 +1372,7 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", @@ -1389,7 +1441,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" }, "funding": [ { @@ -1409,16 +1461,16 @@ }, { "name": "symfony/var-dumper", - "version": "v4.4.19", + "version": "v4.4.22", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "a1eab2f69906dc83c5ddba4632180260d0ab4f7f" + "reference": "c194bcedde6295f3ec3e9eba1f5d484ea97c41a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/a1eab2f69906dc83c5ddba4632180260d0ab4f7f", - "reference": "a1eab2f69906dc83c5ddba4632180260d0ab4f7f", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c194bcedde6295f3ec3e9eba1f5d484ea97c41a7", + "reference": "c194bcedde6295f3ec3e9eba1f5d484ea97c41a7", "shasum": "", "mirrors": [ { @@ -1484,7 +1536,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v4.4.19" + "source": "https://github.com/symfony/var-dumper/tree/v4.4.22" }, "funding": [ { @@ -1500,7 +1552,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-04-19T13:36:17+00:00" }, { "name": "topthink/think-trace", diff --git a/config/taoler.php b/config/taoler.php index acf2d9f..dc756fc 100644 --- a/config/taoler.php +++ b/config/taoler.php @@ -7,7 +7,7 @@ return [ //应用名,此项不可更改 'appname' => 'TaoLer', //版本配置 - 'version' => '1.7.1', + 'version' => '1.7.3', //加盐 'salt' => 'taoler', //数据库备份目录 diff --git a/extend/AngularFilemanager/LocalBridge/FileManagerApi.php b/extend/AngularFilemanager/LocalBridge/FileManagerApi.php new file mode 100644 index 0000000..34782a0 --- /dev/null +++ b/extend/AngularFilemanager/LocalBridge/FileManagerApi.php @@ -0,0 +1,662 @@ + + */ +class FileManagerApi +{ + private $basePath = null; + + private $translate; + + public function __construct($basePath = null, $lang = 'en', $muteErrors = true) + { + if ($muteErrors) { + ini_set('display_errors', 0); + } + + $this->basePath = $basePath ?: dirname(__DIR__); + $this->translate = new Translate($lang); + } + + public function postHandler($query, $request, $files) + { + $t = $this->translate; + + // Probably file upload + if (!isset($request['action']) + && (isset($_SERVER["CONTENT_TYPE"]) + && strpos($_SERVER["CONTENT_TYPE"], 'multipart/form-data') !== false) + ) { + $uploaded = $this->uploadAction($request['destination'], $files); + if ($uploaded === true) { + $response = $this->simpleSuccessResponse(); + } else { + $response = $this->simpleErrorResponse($t->upload_failed); + } + + return $response; + } + + switch ($request['action']) { + case 'list': + $list = $this->listAction($request['path']); + + if (!is_array($list)) { + $response = $this->simpleErrorResponse($t->listing_failed); + } else { + $response = new Response(); + $response->setData([ + 'result' => $list + ]); + } + break; + + case 'rename': + $renamed = $this->renameAction($request['item'], $request['newItemPath']); + if ($renamed === true) { + $response = $this->simpleSuccessResponse(); + } elseif ($renamed === 'notfound') { + $response = $this->simpleErrorResponse($t->file_not_found); + } else { + $response = $this->simpleErrorResponse($t->renaming_failed); + } + break; + + case 'move': + $moved = $this->moveAction($request['items'], $request['newPath']); + if ($moved === true) { + $response = $this->simpleSuccessResponse(); + } else { + $response = $this->simpleErrorResponse($t->moving_failed); + } + break; + + case 'copy': + $copied = $this->copyAction($request['items'], $request['newPath']); + if ($copied === true) { + $response = $this->simpleSuccessResponse(); + } else { + $response = $this->simpleErrorResponse($t->copying_failed); + } + break; + + case 'remove': + $removed = $this->removeAction($request['items']); + if ($removed === true) { + $response = $this->simpleSuccessResponse(); + } elseif ($removed === 'notempty') { + $response = $this->simpleErrorResponse($t->removing_failed_directory_not_empty); + } else { + $response = $this->simpleErrorResponse($t->removing_failed); + } + break; + + case 'edit': + $edited = $this->editAction($request['item'], $request['content']); + if ($edited !== false) { + $response = $this->simpleSuccessResponse(); + } else { + $response = $this->simpleErrorResponse($t->saving_failed); + } + break; + + case 'getContent': + $content = $this->getContentAction($request['item']); + if ($content !== false) { + $response = new Response(); + $response->setData([ + 'result' => $content + ]); + } else { + $response = $this->simpleErrorResponse($t->file_not_found); + } + break; + + case 'createFolder': + $created = $this->createFolderAction($request['newPath']); + if ($created === true) { + $response = $this->simpleSuccessResponse(); + } elseif ($created === 'exists') { + $response = $this->simpleErrorResponse($t->folder_already_exists); + } else { + $response = $this->simpleErrorResponse($t->folder_creation_failed); + } + break; + + case 'changePermissions': + $changed = $this->changePermissionsAction($request['items'], $request['perms'], $request['recursive']); + if ($changed === true) { + $response = $this->simpleSuccessResponse(); + } elseif ($changed === 'missing') { + $response = $this->simpleErrorResponse($t->file_not_found); + } else { + $response = $this->simpleErrorResponse($t->permissions_change_failed); + } + break; + + case 'compress': + $compressed = $this->compressAction( + $request['items'], + $request['destination'], + $request['compressedFilename'] + ); + if ($compressed === true) { + $response = $this->simpleSuccessResponse(); + } else { + $response = $this->simpleErrorResponse($t->compression_failed); + } + break; + + case 'extract': + $extracted = $this->extractAction($request['destination'], $request['item'], $request['folderName']); + if ($extracted === true) { + $response = $this->simpleSuccessResponse(); + } elseif ($extracted === 'unsupported') { + $response = $this->simpleErrorResponse($t->archive_opening_failed); + } else { + $response = $this->simpleErrorResponse($t->extraction_failed); + } + break; + + default: + $response = $this->simpleErrorResponse($t->function_not_implemented); + break; + } + + return $response; + } + + public function getHandler($queries) + { + $t = $this->translate; + + switch ($queries['action']) { + case 'download': + $downloaded = $this->downloadAction($queries['path']); + if ($downloaded === true) { + exit; + } else { + $response = $this->simpleErrorResponse($t->file_not_found); + } + + break; + + case 'downloadMultiple': + $downloaded = $this->downloadMultipleAction($queries['items'], $queries['toFilename']); + if ($downloaded === true) { + exit; + } else { + $response = $this->simpleErrorResponse($t->file_not_found); + } + + break; + + default: + $response = $this->simpleErrorResponse($t->function_not_implemented); + break; + } + + return $response; + } + + private function downloadAction($path) + { + $file_name = basename($path); + $path = $this->canonicalizePath($this->basePath . $path); + + if (!file_exists($path)) { + return false; + } + + $finfo = finfo_open(FILEINFO_MIME_TYPE); + $mime_type = finfo_file($finfo, $path); + finfo_close($finfo); + + if (ob_get_level()) { + ob_end_clean(); + } + + header("Content-Disposition: attachment; filename=\"$file_name\""); + header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); + header("Content-Type: $mime_type"); + header('Pragma: public'); + header('Content-Length: ' . filesize($path)); + readfile($path); + + return true; + } + + private function downloadMultipleAction($items, $archiveName) + { + $archivePath = tempnam('../', 'archive'); + + $zip = new \ZipArchive(); + if ($zip->open($archivePath, \ZipArchive::CREATE) !== true) { + unlink($archivePath); + return false; + } + + foreach ($items as $path) { + $zip->addFile($this->basePath . $path, basename($path)); + } + + $zip->close(); + + header("Content-Disposition: attachment; filename=\"$archiveName\""); + header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); + header("Content-Type: application/zip"); + header('Pragma: public'); + header('Content-Length: ' . filesize($archivePath)); + readfile($archivePath); + + unlink($archivePath); + + return true; + } + + private function uploadAction($path, $files) + { + $path = $this->canonicalizePath($this->basePath . $path); + + foreach ($_FILES as $file) { + $fileInfo = pathinfo($file['name']); + $fileName = $this->normalizeName($fileInfo['filename']) . '.' . $fileInfo['extension']; + + $uploaded = move_uploaded_file( + $file['tmp_name'], + $path . DIRECTORY_SEPARATOR . $fileName + ); + if ($uploaded === false) { + return false; + } + } + + return true; + } + + private function listAction($path) + { + $files = array_values(array_filter( + scandir($this->basePath . $path), + function ($path) { + return !($path === '.' || $path === '..'); + } + )); + + $files = array_map(function ($file) use ($path) { + $file = $this->canonicalizePath( + $this->basePath . $path . DIRECTORY_SEPARATOR . $file + ); + $date = new \DateTime('@' . filemtime($file)); + + return [ + 'name' => basename($file), + 'rights' => $this->parsePerms(fileperms($file)), + 'size' => filesize($file), + 'date' => $date->format('Y-m-d H:i:s'), + 'type' => is_dir($file) ? 'dir' : 'file' + ]; + }, $files); + + return $files; + } + + public function listActionData($path) + { + $files = array_values(array_filter( + scandir($this->basePath . $path), + function ($path) { + return !($path === '.' || $path === '..'); + } + )); + + $files = array_map(function ($file) use ($path) { + $file = $this->canonicalizePath( + $this->basePath . $path . DIRECTORY_SEPARATOR . $file + ); + $date = new \DateTime('@' . filemtime($file)); + + return [ + 'name' => basename($file), + 'rights' => $this->parsePerms(fileperms($file)), + 'size' => filesize($file), + 'date' => $date->format('Y-m-d H:i:s'), + 'type' => is_dir($file) ? 'dir' : 'file' + ]; + }, $files); + + return $files; + } + + private function renameAction($oldPath, $newPath) + { + $oldPath = $this->basePath . $oldPath; + $newPath = $this->basePath . $newPath; + + if (! file_exists($oldPath)) { + return 'notfound'; + } + + return rename($oldPath, $newPath); + } + + private function moveAction($oldPaths, $newPath) + { + $newPath = $this->basePath . $this->canonicalizePath($newPath) . DIRECTORY_SEPARATOR; + + foreach ($oldPaths as $oldPath) { + if (!file_exists($this->basePath . $oldPath)) { + return false; + } + + $renamed = rename($this->basePath . $oldPath, $newPath . basename($oldPath)); + if ($renamed === false) { + return false; + } + } + + return true; + } + + private function copyAction($oldPaths, $newPath) + { + $newPath = $this->basePath . $this->canonicalizePath($newPath) . DIRECTORY_SEPARATOR; + + foreach ($oldPaths as $oldPath) { + if (!file_exists($this->basePath . $oldPath)) { + return false; + } + + $copied = copy( + $this->basePath . $oldPath, + $newPath . basename($oldPath) + ); + if ($copied === false) { + return false; + } + } + + return true; + } + + private function removeAction($paths) + { + foreach ($paths as $path) { + $path = $this->canonicalizePath($this->basePath . $path); + + if (is_dir($path)) { + $dirEmpty = (new \FilesystemIterator($path))->valid(); + + if ($dirEmpty) { + return 'notempty'; + } else { + $removed = rmdir($path); + } + } else { + $removed = unlink($path); + } + + if ($removed === false) { + return false; + } + } + + return true; + } + + private function editAction($path, $content) + { + $path = $this->basePath . $path; + return file_put_contents($path, $content); + } + + private function getContentAction($path) + { + $path = $this->basePath . $path; + + if (! file_exists($path)) { + return false; + } + + return file_get_contents($path); + } + + private function createFolderAction($path) + { + $path = $this->basePath . $path; + + if (file_exists($path) && is_dir($path)) { + return 'exists'; + } + + return mkdir($path); + } + + private function changePermissionsAction($paths, $permissions, $recursive) + { + foreach ($paths as $path) { + if (!file_exists($this->basePath . $path)) { + return 'missing'; + } + + if (is_dir($path) && $recursive === true) { + $iterator = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($path), + RecursiveIteratorIterator::SELF_FIRST + ); + + foreach ($iterator as $item) { + $changed = chmod($this->basePath . $item, octdec($permissions)); + + if ($changed === false) { + return false; + } + } + } + + return chmod($this->basePath . $path, octdec($permissions)); + } + } + + private function compressAction($paths, $destination, $archiveName) + { + $archivePath = $this->basePath . $destination . $archiveName; + + $zip = new \ZipArchive(); + if ($zip->open($archivePath, \ZipArchive::CREATE) !== true) { + return false; + } + + foreach ($paths as $path) { + $fullPath = $this->basePath . $path; + + if (is_dir($fullPath)) { + $dirs = [ + [ + 'dir' => basename($path), + 'path' => $this->canonicalizePath($this->basePath . $path), + ] + ]; + + while (count($dirs)) { + $dir = current($dirs); + $zip->addEmptyDir($dir['dir']); + + $dh = opendir($dir['path']); + while ($file = readdir($dh)) { + if ($file != '.' && $file != '..') { + $filePath = $dir['path'] . DIRECTORY_SEPARATOR . $file; + if (is_file($filePath)) { + $zip->addFile( + $dir['path'] . DIRECTORY_SEPARATOR . $file, + $dir['dir'] . '/' . basename($file) + ); + } elseif (is_dir($filePath)) { + $dirs[] = [ + 'dir' => $dir['dir'] . '/' . $file, + 'path' => $dir['path'] . DIRECTORY_SEPARATOR . $file + ]; + } + } + } + closedir($dh); + array_shift($dirs); + } + } else { + $zip->addFile($path, basename($path)); + } + } + + return $zip->close(); + } + + private function extractAction($destination, $archivePath, $folderName) + { + $archivePath = $this->basePath . $archivePath; + $folderPath = $this->basePath . $this->canonicalizePath($destination) . DIRECTORY_SEPARATOR . $folderName; + + $zip = new \ZipArchive; + if ($zip->open($archivePath) === false) { + return 'unsupported'; + } + + mkdir($folderPath); + $zip->extractTo($folderPath); + return $zip->close(); + } + + private function simpleSuccessResponse() + { + $response = new Response(); + $response->setData([ + 'result' => [ + 'success' => true + ] + ]); + + return $response; + } + + private function simpleErrorResponse($message) + { + $response = new Response(); + $response + ->setStatus(500, 'Internal Server Error') + ->setData([ + 'result' => [ + 'success' => false, + 'error' => $message + ] + ]); + + return $response; + } + + private function parsePerms($perms) + { + if (($perms & 0xC000) == 0xC000) { + // Socket + $info = 's'; + } elseif (($perms & 0xA000) == 0xA000) { + // Symbolic Link + $info = 'l'; + } elseif (($perms & 0x8000) == 0x8000) { + // Regular + $info = '-'; + } elseif (($perms & 0x6000) == 0x6000) { + // Block special + $info = 'b'; + } elseif (($perms & 0x4000) == 0x4000) { + // Directory + $info = 'd'; + } elseif (($perms & 0x2000) == 0x2000) { + // Character special + $info = 'c'; + } elseif (($perms & 0x1000) == 0x1000) { + // FIFO pipe + $info = 'p'; + } else { + // Unknown + $info = 'u'; + } + + // Owner + $info .= (($perms & 0x0100) ? 'r' : '-'); + $info .= (($perms & 0x0080) ? 'w' : '-'); + $info .= (($perms & 0x0040) ? + (($perms & 0x0800) ? 's' : 'x' ) : + (($perms & 0x0800) ? 'S' : '-')); + + // Group + $info .= (($perms & 0x0020) ? 'r' : '-'); + $info .= (($perms & 0x0010) ? 'w' : '-'); + $info .= (($perms & 0x0008) ? + (($perms & 0x0400) ? 's' : 'x' ) : + (($perms & 0x0400) ? 'S' : '-')); + + // World + $info .= (($perms & 0x0004) ? 'r' : '-'); + $info .= (($perms & 0x0002) ? 'w' : '-'); + $info .= (($perms & 0x0001) ? + (($perms & 0x0200) ? 't' : 'x' ) : + (($perms & 0x0200) ? 'T' : '-')); + + return $info; + } + + private function canonicalizePath($path) + { + $dirSep = DIRECTORY_SEPARATOR; + $wrongDirSep = DIRECTORY_SEPARATOR === '/' ? '\\' : '/'; + + // Replace incorrect dir separators + $path = str_replace($wrongDirSep, $dirSep, $path); + + $path = explode($dirSep, $path); + $stack = array(); + foreach ($path as $seg) { + if ($seg == '..') { + // Ignore this segment, remove last segment from stack + array_pop($stack); + continue; + } + + if ($seg == '.') { + // Ignore this segment + continue; + } + + $stack[] = $seg; + } + + // Remove last / + if (empty($stack[count($stack) - 1])) { + array_pop($stack); + } + + return implode($dirSep, $stack); + } + + /** + * Creates ASCII name + * + * @param string name encoded in UTF-8 + * @return string name containing only numbers, chars without diacritics, underscore and dash + * @copyright Jakub Vrána, https://php.vrana.cz/ + */ + private function normalizeName($name) + { + $name = preg_replace('~[^\\pL0-9_]+~u', '-', $name); + $name = trim($name, "-"); + //$name = iconv("utf-8", "us-ascii//TRANSLIT", $name); + $name = preg_replace('~[^-a-z0-9_]+~', '', $name); + return $name; + } +} diff --git a/extend/AngularFilemanager/creenshot_20210503_074912_com-ss-android-article-news.jpg b/extend/AngularFilemanager/creenshot_20210503_074912_com-ss-android-article-news.jpg new file mode 100644 index 0000000000000000000000000000000000000000..86f7e77beb2a5e445e4c62c83070cfb185d27ea9 GIT binary patch literal 309956 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�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

nxSZIpdh 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 z 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 literal 0 HcmV?d00001 diff --git a/extend/AngularFilemanager/t.jpg b/extend/AngularFilemanager/t.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f33a7d134787771d3d0f0fa3431fe9ac95862343 GIT binary patch literal 88782 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'; + } else { + oriIcon += ORIGINAL_ELEM_VALUE; + } + oriIcon += ''; + + var selectHtml = '
    ' + + '
    ' + + '
    '+ + '' + + oriIcon + + ''+ + '' + + '
    '+ + '
    ' + + '
    ' + + '123' + + '
    '; + $(elem).after(selectHtml); + return a; + }, + /** + * 展开/折叠下拉框 + */ + toggleSelect: function () { + var item = '#' + TITLE_ID + ' .layui-iconpicker-item,#' + TITLE_ID + ' .layui-iconpicker-item .layui-edge'; + a.event('click', item, function (e) { + var $icon = $('#' + ICON_BODY); + if ($icon.hasClass(selected)) { + $icon.removeClass(selected).addClass(unselect); + } else { + // 隐藏其他picker + $('.layui-form-select').removeClass(selected); + // 显示当前picker + $icon.addClass(selected).removeClass(unselect); + } + e.stopPropagation(); + }); + return a; + }, + /** + * 绘制主体部分 + */ + createBody: function () { + // 获取数据 + var searchHtml = ''; + + if (search) { + searchHtml = ''; + } + + // 组合dom + var bodyHtml = '
    ' + + searchHtml + + '
    '+ + '
    '; + $('#' + ICON_BODY).find('.layui-anim').eq(0).html(bodyHtml); + a.search().createList().check().page(); + + return a; + }, + /** + * 绘制图标列表 + * @param text 模糊查询关键字 + * @returns {string} + */ + createList: function (text) { + var d = data, + l = d.length, + pageHtml = '', + listHtml = $('
    ')//'
    '; + + // 计算分页数据 + var _limit = limit, // 每页显示数量 + _pages = l % _limit === 0 ? l / _limit : parseInt(l / _limit + 1), // 总计多少页 + _id = PAGE_ID; + + // 图标列表 + var icons = []; + + for (var i = 0; i < l; i++) { + var obj = d[i]; + + // 判断是否模糊查询 + if (text && obj.indexOf(text) === -1) { + continue; + } + + // 是否自定义格子宽度 + var style = ''; + if (cellWidth !== null) { + style += ' style="width:' + cellWidth + '"'; + } + + // 每个图标dom + var icon = '
    '; + if (isFontClass){ + icon += ''; + } else { + icon += ''+ obj.replace('amp;', '') +''; + } + icon += '
    '; + + icons.push(icon); + } + + // 查询出图标后再分页 + l = icons.length; + _pages = l % _limit === 0 ? l / _limit : parseInt(l / _limit + 1); + for (var i = 0; i < _pages; i++) { + // 按limit分块 + var lm = $('
    '); + + for (var j = i * _limit; j < (i+1) * _limit && j < l; j++) { + lm.append(icons[j]); + } + + listHtml.append(lm); + } + + // 无数据 + if (l === 0) { + listHtml.append('

    无数据

    '); + } + + // 判断是否分页 + if (page){ + $('#' + PICKER_BODY).addClass('layui-iconpicker-body-page'); + pageHtml = '
    ' + + '
    ' + + '1/' + + ''+ _pages +'' + + ' ('+ l +')' + + '
    ' + + '
    ' + + ' ' + + ' ' + + '
    ' + + '
    '; + } + + + $('#' + ICON_BODY).find('.layui-anim').find('.' + LIST_BOX).html('').append(listHtml).append(pageHtml); + return a; + }, + // 阻止Layui的一些默认事件 + preventEvent: function() { + var item = '#' + ICON_BODY + ' .layui-anim'; + a.event('click', item, function (e) { + e.stopPropagation(); + }); + return a; + }, + // 分页 + page: function () { + var icon = '#' + PAGE_ID + ' .layui-iconpicker-page-operate .layui-icon'; + + $(icon).unbind('click'); + a.event('click', icon, function (e) { + var elem = e.currentTarget, + total = parseInt($('#' +PAGE_ID + '-pages').html()), + isPrev = $(elem).attr('prev') !== undefined, + // 按钮上标的页码 + index = parseInt($(elem).attr('data-index')), + $cur = $('#' +PAGE_ID + '-current'), + // 点击时正在显示的页码 + current = parseInt($cur.html()); + + // 分页数据 + if (isPrev && current > 1) { + current=current-1; + $(icon + '[prev]').attr('data-index', current); + } else if (!isPrev && current < total){ + current=current+1; + $(icon + '[next]').attr('data-index', current); + } + $cur.html(current); + + // 图标数据 + $('#'+ ICON_BODY + ' .layui-iconpicker-icon-limit').hide(); + $('#layui-iconpicker-icon-limit-' + tmp + current).show(); + e.stopPropagation(); + }); + return a; + }, + /** + * 搜索 + */ + search: function () { + var item = '#' + PICKER_BODY + ' .layui-iconpicker-search .layui-input'; + a.event('input propertychange', item, function (e) { + var elem = e.target, + t = $(elem).val(); + a.createList(t); + }); + return a; + }, + /** + * 点击选中图标 + */ + check: function () { + var item = '#' + PICKER_BODY + ' .layui-iconpicker-icon-item'; + a.event('click', item, function (e) { + var el = $(e.currentTarget).find('.layui-icon'), + icon = ''; + if (isFontClass) { + var clsArr = el.attr('class').split(/[\s\n]/), + cls = clsArr[1], + icon = cls; + $('#' + TITLE_ID).find('.layui-iconpicker-item .layui-icon').html('').attr('class', clsArr.join(' ')); + } else { + var cls = el.html(), + icon = cls; + $('#' + TITLE_ID).find('.layui-iconpicker-item .layui-icon').html(icon); + } + + $('#' + ICON_BODY).removeClass(selected).addClass(unselect); + $(elem).val(icon).attr('value', icon); + // 回调 + if (click) { + click({ + icon: icon + }); + } + + }); + return a; + }, + // 监听原始input数值改变 + inputListen: function(){ + var el = $(elem); + a.event('change', elem, function(){ + var value = el.val(); + }) + // el.change(function(){ + + // }); + return a; + }, + event: function (evt, el, fn) { + $(BODY).on(evt, el, fn); + } + }; + + var common = { + /** + * 加载样式表 + */ + loadCss: function () { + var css = '.layui-iconpicker {max-width: 280px;}.layui-iconpicker .layui-anim{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #d2d2d2;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12);box-sizing:border-box;}.layui-iconpicker-item{border:1px solid #e6e6e6;width:90px;height:38px;border-radius:4px;cursor:pointer;position:relative;}.layui-iconpicker-icon{border-right:1px solid #e6e6e6;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;width:60px;height:100%;float:left;text-align:center;background:#fff;transition:all .3s;}.layui-iconpicker-icon i{line-height:38px;font-size:18px;}.layui-iconpicker-item > .layui-edge{left:70px;}.layui-iconpicker-item:hover{border-color:#D2D2D2!important;}.layui-iconpicker-item:hover .layui-iconpicker-icon{border-color:#D2D2D2!important;}.layui-iconpicker.layui-form-selected .layui-anim{display:block;}.layui-iconpicker-body{padding:6px;}.layui-iconpicker .layui-iconpicker-list{background-color:#fff;border:1px solid #ccc;border-radius:4px;}.layui-iconpicker .layui-iconpicker-icon-item{display:inline-block;width:21.1%;line-height:36px;text-align:center;cursor:pointer;vertical-align:top;height:36px;margin:4px;border:1px solid #ddd;border-radius:2px;transition:300ms;}.layui-iconpicker .layui-iconpicker-icon-item i.layui-icon{font-size:17px;}.layui-iconpicker .layui-iconpicker-icon-item:hover{background-color:#eee;border-color:#ccc;-webkit-box-shadow:0 0 2px #aaa,0 0 2px #fff inset;-moz-box-shadow:0 0 2px #aaa,0 0 2px #fff inset;box-shadow:0 0 2px #aaa,0 0 2px #fff inset;text-shadow:0 0 1px #fff;}.layui-iconpicker-search{position:relative;margin:0 0 6px 0;border:1px solid #e6e6e6;border-radius:2px;transition:300ms;}.layui-iconpicker-search:hover{border-color:#D2D2D2!important;}.layui-iconpicker-search .layui-input{cursor:text;display:inline-block;width:86%;border:none;padding-right:0;margin-top:1px;}.layui-iconpicker-search .layui-icon{position:absolute;top:11px;right:4%;}.layui-iconpicker-tips{text-align:center;padding:8px 0;cursor:not-allowed;}.layui-iconpicker-page{margin-top:6px;margin-bottom:-6px;font-size:12px;padding:0 2px;}.layui-iconpicker-page-count{display:inline-block;}.layui-iconpicker-page-operate{display:inline-block;float:right;cursor:default;}.layui-iconpicker-page-operate .layui-icon{font-size:12px;cursor:pointer;}.layui-iconpicker-body-page .layui-iconpicker-icon-limit{display:none;}.layui-iconpicker-body-page .layui-iconpicker-icon-limit:first-child{display:block;}'; + var $style = $('head').find('style[iconpicker]'); + if ($style.length === 0) { + $('head').append(''); + } + }, + /** + * 获取数据 + */ + getData: { + fontClass: function () { + var arr = ["layui-icon-rate-half","layui-icon-rate","layui-icon-rate-solid","layui-icon-cellphone","layui-icon-vercode","layui-icon-login-wechat","layui-icon-login-qq","layui-icon-login-weibo","layui-icon-password","layui-icon-username","layui-icon-refresh-3","layui-icon-auz","layui-icon-spread-left","layui-icon-shrink-right","layui-icon-snowflake","layui-icon-tips","layui-icon-note","layui-icon-home","layui-icon-senior","layui-icon-refresh","layui-icon-refresh-1","layui-icon-flag","layui-icon-theme","layui-icon-notice","layui-icon-website","layui-icon-console","layui-icon-face-surprised","layui-icon-set","layui-icon-template-1","layui-icon-app","layui-icon-template","layui-icon-praise","layui-icon-tread","layui-icon-male","layui-icon-female","layui-icon-camera","layui-icon-camera-fill","layui-icon-more","layui-icon-more-vertical","layui-icon-rmb","layui-icon-dollar","layui-icon-diamond","layui-icon-fire","layui-icon-return","layui-icon-location","layui-icon-read","layui-icon-survey","layui-icon-face-smile","layui-icon-face-cry","layui-icon-cart-simple","layui-icon-cart","layui-icon-next","layui-icon-prev","layui-icon-upload-drag","layui-icon-upload","layui-icon-download-circle","layui-icon-component","layui-icon-file-b","layui-icon-user","layui-icon-find-fill","layui-icon-loading","layui-icon-loading-1","layui-icon-add-1","layui-icon-play","layui-icon-pause","layui-icon-headset","layui-icon-video","layui-icon-voice","layui-icon-speaker","layui-icon-fonts-del","layui-icon-fonts-code","layui-icon-fonts-html","layui-icon-fonts-strong","layui-icon-unlink","layui-icon-picture","layui-icon-link","layui-icon-face-smile-b","layui-icon-align-left","layui-icon-align-right","layui-icon-align-center","layui-icon-fonts-u","layui-icon-fonts-i","layui-icon-tabs","layui-icon-radio","layui-icon-circle","layui-icon-edit","layui-icon-share","layui-icon-delete","layui-icon-form","layui-icon-cellphone-fine","layui-icon-dialogue","layui-icon-fonts-clear","layui-icon-layer","layui-icon-date","layui-icon-water","layui-icon-code-circle","layui-icon-carousel","layui-icon-prev-circle","layui-icon-layouts","layui-icon-util","layui-icon-templeate-1","layui-icon-upload-circle","layui-icon-tree","layui-icon-table","layui-icon-chart","layui-icon-chart-screen","layui-icon-engine","layui-icon-triangle-d","layui-icon-triangle-r","layui-icon-file","layui-icon-set-sm","layui-icon-add-circle","layui-icon-404","layui-icon-about","layui-icon-up","layui-icon-down","layui-icon-left","layui-icon-right","layui-icon-circle-dot","layui-icon-search","layui-icon-set-fill","layui-icon-group","layui-icon-friends","layui-icon-reply-fill","layui-icon-menu-fill","layui-icon-log","layui-icon-picture-fine","layui-icon-face-smile-fine","layui-icon-list","layui-icon-release","layui-icon-ok","layui-icon-help","layui-icon-chat","layui-icon-top","layui-icon-star","layui-icon-star-fill","layui-icon-close-fill","layui-icon-close","layui-icon-ok-circle","layui-icon-add-circle-fine"]; + return arr; + }, + unicode: function () { + return ["&#xe6c9;","&#xe67b;","&#xe67a;","&#xe678;","&#xe679;","&#xe677;","&#xe676;","&#xe675;","&#xe673;","&#xe66f;","&#xe9aa;","&#xe672;","&#xe66b;","&#xe668;","&#xe6b1;","&#xe702;","&#xe66e;","&#xe68e;","&#xe674;","&#xe669;","&#xe666;","&#xe66c;","&#xe66a;","&#xe667;","&#xe7ae;","&#xe665;","&#xe664;","&#xe716;","&#xe656;","&#xe653;","&#xe663;","&#xe6c6;","&#xe6c5;","&#xe662;","&#xe661;","&#xe660;","&#xe65d;","&#xe65f;","&#xe671;","&#xe65e;","&#xe659;","&#xe735;","&#xe756;","&#xe65c;","&#xe715;","&#xe705;","&#xe6b2;","&#xe6af;","&#xe69c;","&#xe698;","&#xe657;","&#xe65b;","&#xe65a;","&#xe681;","&#xe67c;","&#xe601;","&#xe857;","&#xe655;","&#xe770;","&#xe670;","&#xe63d;","&#xe63e;","&#xe654;","&#xe652;","&#xe651;","&#xe6fc;","&#xe6ed;","&#xe688;","&#xe645;","&#xe64f;","&#xe64e;","&#xe64b;","&#xe62b;","&#xe64d;","&#xe64a;","&#xe64c;","&#xe650;","&#xe649;","&#xe648;","&#xe647;","&#xe646;","&#xe644;","&#xe62a;","&#xe643;","&#xe63f;","&#xe642;","&#xe641;","&#xe640;","&#xe63c;","&#xe63b;","&#xe63a;","&#xe639;","&#xe638;","&#xe637;","&#xe636;","&#xe635;","&#xe634;","&#xe633;","&#xe632;","&#xe631;","&#xe630;","&#xe62f;","&#xe62e;","&#xe62d;","&#xe62c;","&#xe629;","&#xe628;","&#xe625;","&#xe623;","&#xe621;","&#xe620;","&#xe61f;","&#xe61c;","&#xe60b;","&#xe619;","&#xe61a;","&#xe603;","&#xe602;","&#xe617;","&#xe615;","&#xe614;","&#xe613;","&#xe612;","&#xe611;","&#xe60f;","&#xe60e;","&#xe60d;","&#xe60c;","&#xe60a;","&#xe609;","&#xe605;","&#xe607;","&#xe606;","&#xe604;","&#xe600;","&#xe658;","&#x1007;","&#x1006;","&#x1005;","&#xe608;"]; + } + } + }; + + a.init(); + return new IconPicker(); + }; + + /** + * 选中图标 + * @param filter lay-filter + * @param iconName 图标名称,自动识别fontClass/unicode + */ + IconPicker.prototype.checkIcon = function (filter, iconName){ + var el = $('*[lay-filter='+ filter +']'), + p = el.next().find('.layui-iconpicker-item .layui-icon'), + c = iconName; + + if (c.indexOf('#xe') > 0){ + p.html(c); + } else { + p.html('').attr('class', 'layui-icon ' + c); + } + el.attr('value', c).val(c); + }; + + var iconPicker = new IconPicker(); + exports(_MOD, iconPicker); +}); \ No newline at end of file diff --git a/public/static/admin/modules/treeTable.js b/public/static/admin/modules/treeTable.js new file mode 100644 index 0000000..f795756 --- /dev/null +++ b/public/static/admin/modules/treeTable.js @@ -0,0 +1,2265 @@ +/** 树形表格3.x Created by wangfan on 2020-05-12 https://gitee.com/whvse/treetable-lay */ + +layui.define(['laytpl', 'form', 'util'], function (exports) { + var $ = layui.jquery; + var laytpl = layui.laytpl; + var form = layui.form; + var util = layui.util; + var device = layui.device(); + var MOD_NAME = 'treeTable'; // 模块名 + var _instances = {}; // 记录所有实例 + + /* 表格默认参数 */ + var defaultOption = { + elem: undefined, // 容器 + cols: undefined, // 列参数 + url: undefined, // url模式请求 + method: undefined, // url模式请求方式 + where: undefined, // url模式请求条件 + contentType: undefined, // url模式请求类型 + headers: undefined, // url模式请求headers + parseData: undefined, // url模式处理请求数据 + request: {pidName: 'pid'}, // url模式请求字段自定义 + toolbar: undefined, // 表头工具栏 + defaultToolbar: undefined, // 表头工具栏右侧按钮 + width: undefined, // 容器宽度 + height: undefined, // 容器高度 + cellMinWidth: 90, // 单元格最小宽度 + done: undefined, // 数据处理完回调 + data: undefined, // 直接赋值数据 + title: undefined, // 定义table大标题,文件导出会用到 + skin: undefined, // 表格风格 + even: undefined, // 是否开启隔行变色 + size: undefined, // 表格尺寸 + text: { + none: '无数据' // 空数据提示 + }, + reqData: undefined, // 自定义加载数据方法 + useAdmin: false, // 是否使用admin.ajax + tree: { + idName: 'id', // id的字段名 + pidName: 'pid', // pid的字段名 + childName: 'children', // children的字段名 + haveChildName: 'haveChild', // 是否有children标识的字段名 + haveChildReverse: false, // 是否将children标识的字段取反 + openName: 'open', // 是否默认展开的字段名 + iconIndex: 0, // 图标列的索引 + arrowType: undefined, // 折叠箭头类型 + onlyIconControl: undefined, // 仅点击图标控制展开折叠 + getIcon: function (d) { // 自定义图标 + var haveChild = d[this.haveChildName]; + if (haveChild !== undefined) { + haveChild = haveChild === true || haveChild === 'true'; + if (this.haveChildReverse) haveChild = !haveChild; + } + else if (d[this.childName]) haveChild = d[this.childName].length > 0; + if (haveChild) return ''; + else return ''; + } + } + }; + /* 列默认参数 */ + var colDefaultOption = { + field: undefined, // 字段名 + title: undefined, // 标题 + width: undefined, // 宽度 + minWidth: undefined, // 最小宽度 + type: 'normal', // 列类型 + fixed: undefined, // 固定列 + hide: undefined, // 是否初始隐藏列 + unresize: undefined, // 禁用拖拽列宽 + style: undefined, // 单元格样式 + align: undefined, // 对齐方式 + colspan: undefined, // 单元格所占的列数 + rowspan: undefined, // 单元格所占的行数 + templet: undefined, // 自定义模板 + toolbar: undefined, // 工具列 + 'class': undefined, // 单元格class + singleLine: undefined // 是否一行显示 + }; + + /** TreeTable类构造方法 */ + var TreeTable = function (options) { + _instances[options.elem.substring(1)] = this; + this.reload(options); + }; + + /** + * 根据ID查找数据 + * @param id 数据条目的ID + */ + TreeTable.prototype.findDataById = function (id) { + var options = this.options; + function each(data) { + for (var i = 0; i < data.length; i++) { + if (data[i][options.tree.idName] === id) return data[i]; + if (data[i][options.tree.childName]) { + var res = each(data[i][options.tree.childName]); + if (res) return res; + } + } + } + return each(options.data); + } + + /** 参数设置 */ + TreeTable.prototype.initOptions = function (opt) { + var that = this; + + // 处理特殊列 + function initCol(item) { + if (!item.INIT_OK) item = $.extend({INIT_OK: true}, colDefaultOption, item); + // 特殊列处理 + if (item.type === 'space') { // 空列 + if (!item.width) item.width = 15; + item.minWidth = item.width; + } else if (item.type === 'numbers') { // 序号列 + if (!item.width) item.width = 40; + item.minWidth = item.width; + if (!item.singleLine) item.singleLine = false; + if (!item.unresize) item.unresize = true; + if (!item.align) item.align = 'center'; + } else if (item.type === 'checkbox' || item.type === 'radio') { // 复/单选框列 + if (!item.width) item.width = 48; + item.minWidth = item.width; + if (!item.singleLine) item.singleLine = false; + if (!item.unresize) item.unresize = true; + if (!item.align) item.align = 'center'; + } + if (item.toolbar) item.type = 'tool'; + return item; + } + + // 初始化列参数 + if ('Array' !== isClass(opt.cols[0])) opt.cols = [opt.cols]; + + // 恢复cols参数初始状态 + for (var m = 0; m < opt.cols.length; m++) { + for (var n = 0; n < opt.cols[m].length; n++) { + opt.cols[m][n].INIT_OK = undefined; + opt.cols[m][n].key = undefined; + opt.cols[m][n].colGroup = undefined; + opt.cols[m][n].HAS_PARENT = undefined; + opt.cols[m][n].parentKey = undefined; + opt.cols[m][n].PARENT_COL_INDEX = undefined; + } + } + + // cols参数处理 + var colArrays = [], colIndex = 0; + for (var i1 = 0; i1 < opt.cols.length; i1++) { + var item1 = opt.cols[i1]; + for (var i2 = 0; i2 < item1.length; i2++) { + var item2 = item1[i2]; + if (!item2) { + item1.splice(i2, 1); + continue; + } + item2 = initCol(item2); + // 合并单元格处理 + item2.key = i1 + '-' + i2; + var CHILD_COLS = undefined; + if (item2.colGroup || item2.colspan > 1) { + item2.colGroup = true; + item2.type = 'group'; + CHILD_COLS = []; + colIndex++; + var childIndex = 0; + for (var i22 = 0; i22 < opt.cols[i1 + 1].length; i22++) { + var item22 = $.extend({INIT_OK: true}, colDefaultOption, opt.cols[i1 + 1][i22]); + if (item22.HAS_PARENT || (childIndex > 1 && childIndex == item2.colspan)) { + opt.cols[i1 + 1][i22] = item22; + continue; + } + item22.HAS_PARENT = true; + item22.parentKey = i1 + '-' + i2; + item22.key = (i1 + 1) + '-' + i22; + item22.PARENT_COL_INDEX = colIndex; + item22 = initCol(item22); + CHILD_COLS.push(item22); + childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1); + opt.cols[i1 + 1][i22] = item22; + } + } + item2.CHILD_COLS = CHILD_COLS; + if (!item2.PARENT_COL_INDEX) colArrays.push(item2); + opt.cols[i1][i2] = item2; + } + } + this.options = $.extend(true, {}, defaultOption, opt); + this.options.colArrays = colArrays; + + // url加载模式转为reqData模式 + if (this.options.url) { + this.options.reqData = function (data, callback) { + if (!that.options.where) that.options.where = {}; + if (data) that.options.where[that.options.request.pidName] = data[that.options.tree.idName]; + (that.options.useAdmin ? layui.admin : $).ajax({ + url: that.options.url, + data: that.options.contentType && that.options.contentType.indexOf('application/json') === 0 ? JSON.stringify(that.options.where) : that.options.where, + headers: that.options.headers, + type: that.options.method, + dataType: 'json', + contentType: that.options.contentType, + success: function (res) { + if (that.options.parseData) res = that.options.parseData(res); + if (res.code == 0) callback(res.data); + else callback(res.msg || '加载失败'); + }, + error: function (xhr) { + callback(xhr.status + ' - ' + xhr.statusText); + } + }); + }; + } else if (this.options.data && this.options.data.length > 0 && this.options.tree.isPidData) { // pid形式数据转children形式 + this.options.data = tt.pidToChildren(this.options.data, this.options.tree.idName, this.options.tree.pidName, this.options.tree.childName); + } + + // toolbar参数处理 + if ('default' === this.options.toolbar) { + this.options.toolbar = [ + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ' + ].join(''); + } + if (this.options.defaultToolbar === undefined) this.options.defaultToolbar = ['filter', 'exports', 'print']; + + // 自定义图标参数处理 + if (typeof this.options.tree.getIcon === 'string') { + var icon = this.options.tree.getIcon; + this.options.tree.getIcon = function (d) { + if (icon !== 'ew-tree-icon-style2') return icon; + var haveChild = d[this.haveChildName]; + if (haveChild !== undefined) { + haveChild = haveChild === true || haveChild === 'true'; + if (this.haveChildReverse) haveChild = !haveChild; + } + else if (d[this.childName]) haveChild = d[this.childName].length > 0; + if (haveChild) return ''; + else return ''; + } + } + }; + /** 初始化表格 */ + TreeTable.prototype.init = function () { + var options = this.options; + var $elem = $(options.elem); // 原始表格 + var tbFilter = options.elem.substring(1); // 表格的filter + // 第一次生成树表格dom + $elem.removeAttr('lay-filter'); + if ($elem.next('.ew-tree-table').length === 0) { + $elem.css('display', 'none'); + $elem.after([ + '
    ', + ' ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', options.text.none || '', '
    ', + '
    ', + '
    ' + ].join('')); + } + // 获取各个组件 + var components = this.getComponents(); + + // 基础参数设置 + if (options.skin) components.$table.attr('lay-skin', options.skin); + if (options.size) components.$table.attr('lay-size', options.size); + if (options.even) components.$table.attr('lay-even', options.even); + + // 头部工具栏 + components.$toolbar.empty(); + if (options.toolbar === false || options.toolbar === undefined) { + components.$toolbar.hide(); + } else { + components.$toolbar.show(); + if (typeof options.toolbar === 'string') { + laytpl($(options.toolbar).html()).render({}, function (html) { + components.$toolbar.html('
    ' + html + '
    '); + }); + } + var tbRights = ['
    ']; + for (var i = 0; i < options.defaultToolbar.length; i++) { + var tbItem; + if ('filter' === options.defaultToolbar[i]) { + tbItem = {title: '筛选', layEvent: 'LAYTABLE_COLS', icon: 'layui-icon-cols'}; + } else if ('exports' === options.defaultToolbar[i]) { + tbItem = {title: '导出', layEvent: 'LAYTABLE_EXPORT', icon: 'layui-icon-export'}; + } else if ('print' === options.defaultToolbar[i]) { + tbItem = {title: '打印', layEvent: 'LAYTABLE_PRINT', icon: 'layui-icon-print'}; + } else { + tbItem = options.defaultToolbar[i]; + } + if (tbItem) { + tbRights.push('
    '); + tbRights.push('
    '); + } + } + components.$toolbar.append(tbRights.join('') + '
    '); + } + + // 固定宽度 + if (options.width) { + components.$view.css('width', options.width); + components.$tHeadGroup.css('width', options.width); + components.$tBodyGroup.css('width', options.width); + } + // 表格尺寸设置 + var colgroupHtml = this.resize(true); + // 生成thead + var headHtml = '' + this.renderBodyTh() + ''; + + // 渲染表头及空的表主体的结构 + components.$tBodyGroup.children('style').remove(); + if (options.height) { // 固定表头 + components.$tHead.html(colgroupHtml + headHtml); + components.$tBody.html(colgroupHtml + ''); + if (options.height.indexOf('full-') === 0) { // 差值高度 + var h = parseFloat(options.height.substring(5)) + components.$toolbar.outerHeight() + + components.$tHeadGroup.outerHeight() + 1; + components.$tBodyGroup.append([ + '' + ].join('')); + components.$tBodyGroup.data('full', h); + components.$tBodyGroup.css('height', ''); + } else { // 固定高度 + components.$tBodyGroup.css('height', options.height); + components.$tBodyGroup.data('full', ''); + } + components.$tHeadGroup.show(); + } else { + components.$tHeadGroup.hide(); + var trH = {lg: 50, sm: 30, md: 38}; + components.$tBodyGroup.append([ + '' + ].join('')); + components.$tBody.html(colgroupHtml + headHtml + ''); + } + form.render('checkbox', tbFilter); // 渲染表头的表单元素 + + // 默认隐藏列修正colspan + function patchHide($tr) { + var parentKey = $tr.data('parent'), pCol; + if (!parentKey) return; + var $parent = components.$table.children('thead').children('tr').children('[data-key="' + parentKey + '"]'); + var colspan = $parent.attr('colspan') - 1; + $parent.attr('colspan', colspan); + if (colspan === 0) $parent.addClass('layui-hide'); + patchHide($parent); + } + + components.$table.children('thead').children('tr').children('th.layui-hide').each(function () { + patchHide($(this)); + }); + + // 渲染数据 + if (options.reqData) { // 异步加载 + this.options.data = undefined; + this.renderBodyAsync(); + } else if (options.data && options.data.length > 0) { + this.renderBodyData(options.data); + } else { + components.$loading.hide(); + components.$empty.show(); + } + }; + + /** 绑定各项事件 */ + TreeTable.prototype.bindEvents = function () { + var that = this; + var options = this.options; + var components = this.getComponents(); + var $allBody = components.$table.children('tbody'); + + /* 行事件公共返回对象 */ + var member = function (ext) { + // 获取行dom + var $tr = $(this); + if (!$tr.is('tr')) { + var $temp = $tr.parent('tr'); + if ($temp.length > 0) $tr = $temp; + else $tr = $tr.parentsUntil('tr').last().parent(); + } + var data = that.getDataByTr($tr); // 行对应数据 + var obj = { + tr: $tr, + data: data, + del: function () { // 删除行 + var index = $tr.data('index'); + var indent = parseInt($tr.data('indent')); + // 删除子级 + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= indent) return false; + $(this).remove(); + }); + // 更新后面同辈的index + var indexLength = (typeof index === 'number' ? 1 : index.split('-').length); + $tr.nextAll('tr').each(function () { + var $this = $(this); + if (parseInt($this.data('indent')) < indent) return false; + var _index = $this.data('index').toString().split('-'); + _index[indexLength - 1] = parseInt(_index[indexLength - 1]) - 1; + $this.data('index', _index.join('-')); + }); + // 删除当前行 + var $pTr = $tr.prevAll('tr'); + that.del(undefined, index); + $tr.remove(); + that.renderNumberCol(); // 渲染序号列 + // 联动父级多选框 + $pTr.each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd >= indent) return true; + that.checkParentCB($(this)); + indent = tInd; + }); + that.checkChooseAllCB(); // 联动全选框 + if (options.data.length === 0) components.$empty.show(); + updateFixedTbHead(components.$view); // 更新滚动条补丁 + }, + update: function (fields) { // 修改行 + data = $.extend(true, data, fields); + var indent = parseInt($tr.data('indent')); + that.renderBodyTr(data, indent, undefined, $tr); // 更新界面 + form.render(null, components.filter); // 渲染表单元素 + that.renderNumberCol(); // 渲染序号列 + // 联动父级多选框 + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd >= indent) return true; + that.checkParentCB($(this)); + indent = tInd; + }); + that.checkChooseAllCB(); // 联动全选框 + } + }; + return $.extend(obj, ext); + }; + + // 绑定折叠展开事件 + $allBody.off('click.fold').on('click.fold', '.ew-tree-pack', function (e) { + layui.stope(e); + var $tr = $(this).parentsUntil('tr').last().parent(); + if ($tr.hasClass('ew-tree-table-loading')) return; // 已是加载中 + var haveChild = $tr.data('have-child'); + if (haveChild !== true && haveChild !== 'true') return; // 子节点 + var open = $tr.hasClass('ew-tree-table-open'); + var data = that.getDataByTr($tr); + if (!open && !data[options.tree.childName]) { + that.renderBodyAsync(data, $tr); + } else { + data[options.tree.openName] = toggleRow($tr); + } + }); + + // 绑定lay-event事件 + $allBody.off('click.tool').on('click.tool', '*[lay-event]', function (e) { + layui.stope(e); + var $this = $(this); + layui.event.call(this, MOD_NAME, 'tool(' + components.filter + ')', member.call(this, { + event: $this.attr('lay-event') + })); + }); + + // 绑定单选框事件 + form.on('radio(' + components.radioFilter + ')', function (data) { + var d = that.getDataByTr($(data.elem).parentsUntil('tr').last().parent()); + that.removeAllChecked(); + d.LAY_CHECKED = true; // 同时更新数据 + d.LAY_INDETERMINATE = false; + layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')', + {checked: true, data: d, type: 'one'}); + }); + + // 绑定复选框事件 + form.on('checkbox(' + components.checkboxFilter + ')', function (data) { + var checked = data.elem.checked; + var $cb = $(data.elem); + var $layCb = $cb.next('.layui-form-checkbox'); + // 如果是半选状态,点击全选 + if (!checked && $cb.hasClass('ew-form-indeterminate')) { + checked = true; + $cb.prop('checked', checked); + $layCb.addClass('layui-form-checked'); + $cb.removeClass('ew-form-indeterminate'); + } + var $tr = $cb.parentsUntil('tr').last().parent(); + var d = that.getDataByTr($tr); + d.LAY_CHECKED = checked; // 同时更新数据 + d.LAY_INDETERMINATE = false; + // 联动操作 + if (d[options.tree.childName] && d[options.tree.childName].length > 0) { + that.checkSubCB($tr, checked); // 联动子级 + } + var indent = parseInt($tr.data('indent')); + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < indent) { + that.checkParentCB($(this)); // 联动父级 + indent = tInd; + } + }); + that.checkChooseAllCB(); // 联动全选框 + // 回调事件 + layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')', + {checked: checked, data: d, type: 'more'}); + }); + + // 绑定全选复选框事件 + form.on('checkbox(' + components.chooseAllFilter + ')', function (data) { + var checked = data.elem.checked; + var $cb = $(data.elem); + var $layCb = $cb.next('.layui-form-checkbox'); + if (!options.data || options.data.length === 0) { // 如果数据为空 + $cb.prop('checked', false); + $layCb.removeClass('layui-form-checked'); + $cb.removeClass('ew-form-indeterminate'); + return; + } + // 如果是半选状态,点击全选 + if (!checked && $cb.hasClass('ew-form-indeterminate')) { + checked = true; + $cb.prop('checked', checked); + $layCb.addClass('layui-form-checked'); + $cb.removeClass('ew-form-indeterminate'); + } + layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')', {checked: checked, type: 'all'}); + that.checkSubCB(components.$tBody.children('tbody'), checked); // 联动操作 + }); + + // 绑定行单击事件 + $allBody.off('click.row').on('click.row', 'tr', function () { + layui.event.call(this, MOD_NAME, 'row(' + components.filter + ')', member.call(this, {})); + }); + + // 绑定行双击事件 + $allBody.off('dblclick.rowDouble').on('dblclick.rowDouble', 'tr', function () { + layui.event.call(this, MOD_NAME, 'rowDouble(' + components.filter + ')', member.call(this, {})); + }); + + // 绑定单元格点击事件 + $allBody.off('click.cell').on('click.cell', 'td', function (e) { + var $td = $(this); + var type = $td.data('type'); + // 判断是否是复选框、单选框列 + if (type === 'checkbox' || type === 'radio') return layui.stope(e); + var edit = $td.data('edit'); + var field = $td.data('field'); + if (edit) { // 开启了单元格编辑 + layui.stope(e); + if ($allBody.find('.ew-tree-table-edit').length > 0) return; + var index = $td.data('index'); + var indent = $td.find('.ew-tree-table-indent').length; + var d = that.getDataByTr($td.parent()); + if ('text' === edit || 'number' === edit) { // 文本框 + var $input = $(''); + $input[0].value = d[field]; + $td.append($input); + $input.focus(); + $input.blur(function () { + var value = $(this).val(); + if (value == d[field]) return $(this).remove(); + var rs = layui.event.call(this, MOD_NAME, 'edit(' + components.filter + ')', member.call(this, + {value: value, field: field})); + if (rs === false) { + $(this).addClass('layui-form-danger'); + $(this).focus(); + } else { + d[field] = value; // 同步更新数据 + var keys = $td.data('key').split('-'); + that.renderBodyTd(d, indent, index, $td, options.cols[keys[0]][keys[1]]); // 更新单元格 + } + }); + } else { + console.error('不支持的单元格编辑类型:' + edit); + } + } else { // 回调单元格点击事件 + var rs = layui.event.call(this, MOD_NAME, 'cell(' + components.filter + ')', member.call(this, + {td: $td, field: field})); + if (rs === false) layui.stope(e); + } + }); + + // 绑定单元格双击事件 + $allBody.off('dblclick.cellDouble').on('dblclick.cellDouble', 'td', function (e) { + var $td = $(this); + var type = $td.data('type'); + // 判断是否是复选框、单选框列 + if (type === 'checkbox' || type === 'radio') return layui.stope(e); + var edit = $td.data('edit'); + var field = $td.data('field'); + if (edit) return layui.stope(e); // 开启了单元格编辑 + // 回调单元格双击事件 + var rs = layui.event.call(this, MOD_NAME, 'cellDouble(' + components.filter + ')', member.call(this, + {td: $td, field: field})); + if (rs === false) layui.stope(e); + }); + + // 绑定头部工具栏事件 + components.$toolbar.off('click.toolbar').on('click.toolbar', '*[lay-event]', function (e) { + layui.stope(e); + var $this = $(this); + var event = $this.attr('lay-event'); + if ('LAYTABLE_COLS' === event) that.toggleCol(); + else if ('LAYTABLE_EXPORT' === event) that.exportData('show'); + else if ('LAYTABLE_PRINT' === event) that.printTable(); + else layui.event.call(this, MOD_NAME, 'toolbar(' + components.filter + ')', {event: event, elem: $this}); + }); + + // 同步滚动条 + components.$tBodyGroup.on('scroll', function () { + var $this = $(this); + components.$tHeadGroup.scrollLeft($this.scrollLeft()); + }); + + // 导出数据 + components.$toolbar.off('click.export').on('click.export', '.layui-table-tool-panel>[data-type]', function () { + var type = $(this).data('type'); + if ('csv' === type || 'xls' === type) that.exportData(type); + }); + components.$toolbar.off('click.panel').on('click.panel', '.layui-table-tool-panel', function (e) { + layui.stope(e); + }); + + // 筛选列 + form.on('checkbox(' + components.colsToggleFilter + ')', function (data) { + that.toggleCol(data.elem.checked, undefined, data.value); + }); + + }; + + /** 获取各个组件 */ + TreeTable.prototype.getComponents = function () { + var $view = $(this.options.elem).next('.ew-tree-table'); // 容器 + var filter = $view.attr('lay-filter'); // 容器filter + var $tHeadGroup = $view.children('.ew-tree-table-head'); // 表头部分容器 + var $tBodyGroup = $view.children('.ew-tree-table-box'); // 主体部分容器 + return { + $view: $view, + filter: filter, + $tHeadGroup: $tHeadGroup, + $tBodyGroup: $tBodyGroup, + $tHead: $tHeadGroup.children('.layui-table'), // 表头表格 + $tBody: $tBodyGroup.children('.layui-table'), // 主体表格 + $table: $view.find('.layui-table'), // 所有表格 + $toolbar: $view.children('.ew-tree-table-tool'), // 头部工具栏 + $empty: $tBodyGroup.children('.ew-tree-table-empty'), // 空视图 + $loading: $tBodyGroup.children('.ew-tree-table-loading'), // 加载视图 + checkboxFilter: 'ew_tb_checkbox_' + filter, // 复选框filter + radioFilter: 'ew_tb_radio_' + filter, // 单选框filter + chooseAllFilter: 'ew_tb_choose_all_' + filter, // 全选按钮filter + colsToggleFilter: 'ew_tb_toggle_cols' + filter // 筛选列的filter + }; + }; + + /** + * 遍历表头 + * @param callback + * @param obj + */ + TreeTable.prototype.eachCols = function (callback, obj) { + if (!obj) obj = this.options.colArrays; + for (var i = 0; i < obj.length; i++) { + var item = obj[i]; + callback && callback(i, item); + if (item.CHILD_COLS) this.eachCols(callback, item.CHILD_COLS); + } + }; + + /** + * 遍历数据 + * @param callback + * @param data + */ + TreeTable.prototype.eachData = function (callback, data) { + if (!data) data = this.options.data; + for (var i = 0; i < data.length; i++) { + var item = data[i]; + callback && callback(i, item); + if (item[this.options.tree.childName]) this.eachData(callback, item[this.options.tree.childName]); + } + }; + + /** + * 异步加载渲染 + * @param d 父级数据 + * @param $tr 父级dom + */ + TreeTable.prototype.renderBodyAsync = function (d, $tr) { + var that = this; + var options = this.options; + var components = this.getComponents(); + // 显示loading + if ($tr) { + $tr.addClass('ew-tree-table-loading'); + $tr.find('.ew-tree-pack').children('.ew-tree-table-arrow').addClass('layui-anim layui-anim-rotate layui-anim-loop'); + } else { + components.$empty.hide(); + if (options.data && options.data.length > 0) components.$loading.addClass('ew-loading-float'); + components.$loading.show(); + } + // 请求数据 + options.reqData(d, function (data) { + if (typeof data !== 'string' && data && data.length > 0 && options.tree.isPidData) { + data = tt.pidToChildren(data, options.tree.idName, options.tree.pidName, options.tree.childName); + } + that.renderBodyData(data, d, $tr); // 渲染内容 + }); + }; + + /** + * 根据数据渲染body + * @param data 数据集合 + * @param d 父级数据 + * @param $tr 父级dom + */ + TreeTable.prototype.renderBodyData = function (data, d, $tr) { + var msg; + if (typeof data === 'string') { + msg = data; + data = []; + } + var that = this; + var options = this.options; + var components = this.getComponents(); + // 更新到数据 + if (d === undefined) options.data = data; + else d[options.tree.childName] = data; + var indent; + if ($tr) { + indent = parseInt($tr.data('indent')) + 1; + d[options.tree.openName] = true; + } + var htmlStr = this.renderBody(data, indent, d); + if ($tr) { + // 移除旧dom + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= (indent - 1)) return false; + $(this).remove(); + }); + // 渲染新dom + $tr.after(htmlStr).addClass('ew-tree-table-open'); + } else { + components.$tBody.children('tbody').html(htmlStr); + } + form.render(null, components.filter); // 渲染表单元素 + this.renderNumberCol(); // 渲染序号列 + if ($tr) { + // 更新父级复选框状态 + this.checkParentCB($tr); + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < (indent - 1)) { + that.checkParentCB($(this)); + indent = tInd + 1; + } + }); + // 移除loading + $tr.removeClass('ew-tree-table-loading'); + var $arrow = $tr.find('.ew-tree-pack').children('.ew-tree-table-arrow'); + $arrow.removeClass('layui-anim layui-anim-rotate layui-anim-loop'); + if (msg) { // 加载失败 + $tr.removeClass('ew-tree-table-open'); + } else if (data && data.length === 0) { // 无子集 + d[options.tree.haveChildName] = !!options.tree.haveChildReverse; + $tr.data('have-child', false); + $arrow.addClass('ew-tree-table-arrow-hide'); + $arrow.next('.ew-tree-icon').after(options.tree.getIcon(d)).remove(); + } + } else { + // 移除loading + components.$loading.hide(); + components.$loading.removeClass('ew-loading-float'); + // 显示空视图 + if (data && data.length > 0) { + components.$empty.hide(); + } else { + components.$empty.show(); + if (msg) components.$empty.text(msg); + else components.$empty.html(options.text.none); + } + } + this.checkChooseAllCB(); // 联动全选框 + updateFixedTbHead(components.$view); // 滚动条补丁 + options.done && options.done(data); + }; + + /** + * 递归渲染表格主体部分 + * @param data 数据列表 + * @param indent 缩进大小 + * @param parent 父级 + * @param h 父级是否隐藏 + * @returns {string} + */ + TreeTable.prototype.renderBody = function (data, indent, parent, h) { + var options = this.options; + if (!indent) indent = 0; + var html = ''; + if (!data || data.length === 0) return html; + var hide = parent ? !parent[options.tree.openName] : undefined; + if (h) hide = h;//当所有父级存在隐藏时,隐藏所有子集 + for (var i = 0; i < data.length; i++) { + var d = data[i]; + d.LAY_INDEX = (parent ? parent.LAY_INDEX + '-' : '') + i; + html += this.renderBodyTr(d, indent, hide); + // 递归渲染子集 + html += this.renderBody(d[options.tree.childName], indent + 1, d, h); + } + return html; + }; + + /** + * 渲染每一行数据 + * @param d 行数据 + * @param indent 缩进大小 + * @param hide 是否隐藏 + * @param $tr + * @returns {string} + */ + TreeTable.prototype.renderBodyTr = function (d, indent, hide, $tr) { + var that = this; + var options = this.options; + if (!indent) indent = 0; + var haveChild = d[options.tree.haveChildName]; + if (options.tree.haveChildReverse) haveChild = !haveChild; + if (haveChild === undefined) haveChild = d[options.tree.childName] && d[options.tree.childName].length > 0; + if ($tr) { + $tr.data('have-child', haveChild ? 'true' : 'false'); + $tr.data('indent', indent); + $tr.removeClass('ew-tree-table-loading'); + } + var html = ''); + var index = 0; + this.eachCols(function (i, col) { + if (col.colGroup) return; + html += that.renderBodyTd(d, indent, index, $tr ? $tr.children('td').eq(index) : undefined, col); + index++; + }); + html += ''; + return html; + }; + + /** + * 渲染每一个单元格数据 + * @param d 行数据 + * @param indent 缩进大小 + * @param index 第几列 + * @param $td + * @param col + * @returns {string} + */ + TreeTable.prototype.renderBodyTd = function (d, indent, index, $td, col) { + if (!col||col.colGroup) return ''; + var options = this.options; + var components = this.getComponents(); + if (!indent) indent = 0; + // 内容填充 + var content = '', cell = '', icon = ''; + if (col.type === 'numbers') { // 序号列 + content = ''; + } else if (col.type === 'checkbox') { // 复选框列 + content = [ + '' + ].join(''); + } else if (col.type === 'radio') { // 单选框列 + content = [ + '' + ].join(''); + } else if (col.templet) { // 自定义模板 + if (typeof col.templet === 'function') { + content = col.templet(d); + } else if (typeof col.templet === 'string') { + laytpl($(col.templet).html()).render(d, function (html) { + content = html; + }); + } + } else if (col.toolbar) { // 操作列 + if (typeof col.toolbar === 'function') { + content = col.toolbar(d); + } else if (typeof col.toolbar === 'string') { + laytpl($(col.toolbar).html()).render(d, function (html) { + content = html; + }); + } + } else if (col.field && d[col.field] !== undefined && d[col.field] !== null) { // 普通字段 + content = util.escape(d[col.field] === 0 ? '0' : d[col.field]); + } + // 图标列处理 + if (index === options.tree.iconIndex) { + // 缩进 + for (var i = 0; i < indent; i++) icon += ''; + icon += ''; + // 加箭头 + var haveChild = d[options.tree.haveChildName]; + if (options.tree.haveChildReverse) haveChild = !haveChild; + if (haveChild === undefined) haveChild = d[options.tree.childName] && d[options.tree.childName].length > 0; + icon += (''); + // 加图标 + icon += options.tree.getIcon(d); + content = '' + content + ''; + if (options.tree.onlyIconControl) content = icon + '' + content; + else content = icon + content + ''; + } + cell = [ + '
    ', + '
    ', content, '
    ', + ' ', + ' ', + '
    ' + ].join(''); + + if ($td) $td.html(cell); + + var html = '' + cell + ''); + return html; + }; + + /** + * 渲染表头 + * @returns {string} + */ + TreeTable.prototype.renderBodyTh = function () { + var options = this.options; + var components = this.getComponents(); + var html = []; + $.each(options.cols, function (i1, item1) { + html.push(''); + $.each(item1, function (i2, item2) { + html.push(''); + html.push('
    '); + html.push('
    '); + // 标题 + var ca = ''; + if (item2.type === 'checkbox') html.push(ca); + else html.push(item2.title || ''); + html.push('
    '); + html.push('
    '); + // 列宽拖拽 + if (!item2.colGroup && !item2.unresize) html.push(''); + html.push(''); + }); + html.push(''); + }); + return html.join(''); + }; + + /** 重置表格尺寸 */ + TreeTable.prototype.resize = function (returnColgroup) { + // 计算表格宽度、最小宽度、百分比宽度 + var options = this.options; + var components = this.getComponents(); + var minWidth = 1, width = 1, needSetWidth = true, mwPercent = 0; + this.eachCols(function (i, item) { + if (item.colGroup || item.hide) return; + if (item.width) { + width += (item.width + 1); + if (item.minWidth) { + if (item.width < item.minWidth) item.width = item.minWidth; + } else if (item.width < options.cellMinWidth) item.width = options.cellMinWidth; + } else needSetWidth = false; + if (item.width) minWidth += (item.width + 1); + else if (item.minWidth) { + minWidth += (item.minWidth + 1); + mwPercent += item.minWidth; + } else { + minWidth += (options.cellMinWidth + 1); + mwPercent += options.cellMinWidth; + } + }); + if (minWidth) { + components.$tHead.css('min-width', minWidth); + components.$tBody.css('min-width', minWidth); + } else { + components.$tHead.css('min-width', 'auto'); + components.$tBody.css('min-width', 'auto'); + } + if (needSetWidth) { + components.$tHead.css('width', width); + components.$tBody.css('width', width); + } else { + components.$tHead.css('width', '100%'); + components.$tBody.css('width', '100%'); + } + + // 生成colgroup + var colgroupHtml = []; + this.eachCols(function (i, item) { + if (item.colGroup || item.hide) return; + colgroupHtml.push(''); + }); + colgroupHtml = colgroupHtml.join(''); + if (returnColgroup) return '' + colgroupHtml + ''; + components.$table.children('colgroup').html(colgroupHtml); + }; + + /** 获取行对应数据 */ + TreeTable.prototype.getDataByTr = function ($tr) { + var data, index; + if (typeof $tr !== 'string' && typeof $tr !== 'number') { + if ($tr) index = $tr.data('index'); + } else index = $tr; + if (index === undefined) return; + if (typeof index === 'number') index = [index]; + else index = index.split('-'); + for (var i = 0; i < index.length; i++) { + if (data) data = data[this.options.tree.childName][index[i]]; + else data = this.options.data[index[i]]; + } + return data; + }; + + /** + * 联动子级复选框状态 + * @param $tr 当前tr的dom + * @param checked + */ + TreeTable.prototype.checkSubCB = function ($tr, checked) { + var that = this; + var components = this.getComponents(); + var indent = -1, $trList; + if ($tr.is('tbody')) { + $trList = $tr.children('tr'); + } else { + indent = parseInt($tr.data('indent')); + $trList = $tr.nextAll('tr'); + } + $trList.each(function () { + if (parseInt($(this).data('indent')) <= indent) return false; + var $cb = $(this).children('td').find('input[lay-filter="' + components.checkboxFilter + '"]'); + $cb.prop('checked', checked); + $cb.removeClass('ew-form-indeterminate'); + if (checked) $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + else $cb.next('.layui-form-checkbox').removeClass('layui-form-checked'); + var d = that.getDataByTr($(this)); + d.LAY_CHECKED = checked; // 同步更新数据 + d.LAY_INDETERMINATE = false; + }); + }; + + /** + * 联动父级复选框状态 + * @param $tr 父级的dom + */ + TreeTable.prototype.checkParentCB = function ($tr) { + var options = this.options; + var components = this.getComponents(); + var d = this.getDataByTr($tr); + var ckNum = 0, unCkNum = 0; + if (d[options.tree.childName]) { + function checkNum(data) { + for (var i = 0; i < data.length; i++) { + if (data[i].LAY_CHECKED) ckNum++; + else unCkNum++; + if (data[i][options.tree.childName]) checkNum(data[i][options.tree.childName]); + } + } + + checkNum(d[options.tree.childName]); + } + var $cb = $tr.children('td').find('input[lay-filter="' + components.checkboxFilter + '"]'); + if (ckNum > 0 && unCkNum === 0) { // 全选 + $cb.prop('checked', true); + $cb.removeClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + d.LAY_CHECKED = true; // 同步更新数据 + d.LAY_INDETERMINATE = false; + } else if (ckNum === 0 && unCkNum > 0) { // 全不选 + $cb.prop('checked', false); + $cb.removeClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').removeClass('layui-form-checked'); + d.LAY_CHECKED = false; // 同步更新数据 + d.LAY_INDETERMINATE = false; + } else if (ckNum > 0 && unCkNum > 0) { // 半选 + $cb.prop('checked', true); + $cb.data('indeterminate', 'true'); + $cb.addClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + d.LAY_CHECKED = true; // 同步更新数据 + d.LAY_INDETERMINATE = true; + } + }; + + /** 联动全选复选框 */ + TreeTable.prototype.checkChooseAllCB = function () { + var options = this.options; + var components = this.getComponents(); + var ckNum = 0, unCkNum = 0; + + function checkNum(data) { + for (var i = 0; i < data.length; i++) { + if (data[i].LAY_CHECKED) ckNum++; + else unCkNum++; + if (data[i][options.tree.childName]) checkNum(data[i][options.tree.childName]); + } + } + + checkNum(options.data); + + var $cb = components.$view.find('input[lay-filter="' + components.chooseAllFilter + '"]'); + if (ckNum > 0 && unCkNum === 0) { // 全选 + $cb.prop('checked', true); + $cb.removeClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + } else if ((ckNum === 0 && unCkNum > 0) || (ckNum === 0 && unCkNum === 0)) { // 全不选 + $cb.prop('checked', false); + $cb.removeClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').removeClass('layui-form-checked'); + } else if (ckNum > 0 && unCkNum > 0) { // 半选 + $cb.prop('checked', true); + $cb.addClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + } + }; + + /** 填充序号列 */ + TreeTable.prototype.renderNumberCol = function () { + this.getComponents().$tBody.children('tbody').children('tr').each(function (i) { + $(this).children('td').find('.ew-tree-table-numbers').text(i + 1); + }); + }; + + /** 根据id获取tr的index */ + TreeTable.prototype.getIndexById = function (id) { + var options = this.options; + + function each(data, pi) { + for (var i = 0; i < data.length; i++) { + if (data[i][options.tree.idName] === id) return pi !== undefined ? pi + '-' + i : i; + if (data[i][options.tree.childName]) { + var res = each(data[i][options.tree.childName], pi !== undefined ? pi + '-' + i : i); + //值不为undefined才return + if (res) return res; + } + } + } + + return each(options.data); + }; + + /** 展开指定行 */ + TreeTable.prototype.expand = function (id, cascade) { + var components = this.getComponents(); + var $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]'); + if (!$tr.hasClass('ew-tree-table-open')) $tr.children('td').find('.ew-tree-pack').trigger('click'); + if (cascade === false) return; + // 联动父级 + var indent = parseInt($tr.data('indent')); + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < indent) { + if (!$(this).hasClass('ew-tree-table-open')) { + $(this).children('td').find('.ew-tree-pack').trigger('click'); + } + indent = tInd; + } + }); + }; + + /** 折叠指定行 */ + TreeTable.prototype.fold = function (id) { + var components = this.getComponents(); + var $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]'); + if ($tr.hasClass('ew-tree-table-open')) $tr.children('td').find('.ew-tree-pack').trigger('click'); + }; + + /** 全部展开 */ + TreeTable.prototype.expandAll = function () { + this.getComponents().$table.children('tbody').children('tr').each(function () { + if (!$(this).hasClass('ew-tree-table-open')) $(this).children('td').find('.ew-tree-pack').trigger('click'); + }); + }; + + /** 全部折叠 */ + TreeTable.prototype.foldAll = function () { + this.getComponents().$table.children('tbody').children('tr').each(function () { + if ($(this).hasClass('ew-tree-table-open')) $(this).children('td').find('.ew-tree-pack').trigger('click'); + }); + }; + + /** 获取当前数据 */ + TreeTable.prototype.getData = function () { + return this.options.data; + }; + + /** 重载表格 */ + TreeTable.prototype.reload = function (opt) { + this.initOptions(this.options ? $.extend(true, this.options, opt) : opt); + this.init(); // 初始化表格 + this.bindEvents(); // 绑定事件 + }; + + /** 获取当前选中行 */ + TreeTable.prototype.checkStatus = function (needIndeterminate) { + if (needIndeterminate === undefined) needIndeterminate = true; + var list = []; + this.eachData(function (i, item) { + if ((needIndeterminate || !item.LAY_INDETERMINATE) && item.LAY_CHECKED) + list.push($.extend({isIndeterminate: item.LAY_INDETERMINATE}, item)); + }); + return list; + }; + + /** 设置复/单选框选中 */ + TreeTable.prototype.setChecked = function (ids) { + var that = this; + var components = this.getComponents(); + var $radio = components.$table.find('input[lay-filter="' + components.radioFilter + '"]'); + if ($radio.length > 0) { // 开启了单选框 + $radio.each(function () { + var d = that.getDataByTr($(this).parentsUntil('tr').parent()); + if (d && ids[ids.length - 1] == d[that.options.tree.idName]) { + $(this).next('.layui-form-radio').trigger('click'); + return false; + } + }); + } else { // 开启了复选框 + components.$table.find('input[lay-filter="' + components.checkboxFilter + '"]').each(function () { + var $cb = $(this); + var $layCb = $cb.next('.layui-form-checkbox'); + var checked = $cb.prop('checked'); + var indeterminate = $cb.hasClass('ew-form-indeterminate'); + var d = that.getDataByTr($cb.parentsUntil('tr').parent()); + for (var i = 0; i < ids.length; i++) { + if (d && ids[i] == d[that.options.tree.idName]) { + if (d[that.options.tree.childName] && d[that.options.tree.childName].length > 0) continue; + if (!checked || indeterminate) $layCb.trigger('click'); + } + } + }); + } + }; + + /** 移除全部选中 */ + TreeTable.prototype.removeAllChecked = function () { + this.checkSubCB(this.getComponents().$table.children('tbody'), false); + }; + + /** 导出 */ + TreeTable.prototype.exportData = function (type) { + var components = this.getComponents(); + if ('show' === type) { + components.$toolbar.find('.layui-table-tool-panel').remove(); + components.$toolbar.find('[lay-event="LAYTABLE_EXPORT"]').append([ + '
      ', + '
    • 导出到 Csv 文件
    • ', + '
    • 导出到 Excel 文件
    • ', + '
    ' + ].join('')); + } else { + if (device.ie) return layer.msg('不支持ie导出'); + if (!type) type = 'xls'; + var head = [], body = []; + this.eachCols(function (i, item) { + if (item.type !== 'normal' || item.hide) return; + head.push(item.title || ''); + }); + components.$tBody.children('tbody').children('tr').each(function () { + var items = []; + $(this).children('td').each(function () { + var $this = $(this); + if ($this.data('type') !== 'normal' || $this.hasClass('layui-hide')) return true; + items.push($this.text().trim().replace(/,/g, ',')); + }); + body.push(items.join(',')); + }); + // 创建下载文件的a标签 + var alink = document.createElement('a'); + var content = encodeURIComponent(head.join(',') + '\r\n' + body.join('\r\n')); + var contentType = ({csv: 'text/csv', xls: 'application/vnd.ms-excel'})[type]; + alink.href = 'data:' + contentType + ';charset=utf-8,\ufeff' + content; + alink.download = (this.options.title || 'table') + '.' + type; + document.body.appendChild(alink); + alink.click(); + document.body.removeChild(alink); + } + }; + + /** 打印 */ + TreeTable.prototype.printTable = function () { + var components = this.getComponents(); + var head = components.$tHead.children('thead').html(); + if (!head) head = components.$tBody.children('thead').html(); + var body = components.$tBody.children('tbody').html(); + var colgroup = components.$tBody.children('colgroup').html(); + var $html = $([ + '', + ' ', colgroup, '', + ' ', head, '', + ' ', body, '', + '
    ' + ].join('')); + + // 隐藏特殊列 + $html.find('col[data-type="checkbox"],col[data-type="radio"],col[data-type="tool"]').remove(); + $html.find('td[data-type="checkbox"],td[data-type="radio"],td[data-type="tool"],.layui-hide').remove(); + + function hideCol($temp) { + var parentKey = $temp.data('parent'), pCol; + if (!parentKey) return; + var $parent = $html.children('thead').children('tr').children('[data-key="' + parentKey + '"]'); + var colspan = parseInt($parent.attr('colspan')) - 1; + $parent.attr('colspan', colspan); + if (colspan === 0) $parent.remove(); + hideCol($parent); + } + + $html.find('th[data-type="checkbox"],th[data-type="radio"],th[data-type="tool"]').each(function () { + hideCol($(this)); + }).remove(); + + // 打印内容样式 + var style = [ + '' + ].join(''); + var pWindow = window.open('', '_blank'); + pWindow.focus(); + var pDocument = pWindow.document; + pDocument.open(); + pDocument.write($html[0].outerHTML + style); + pDocument.close(); + pWindow.print(); + pWindow.close(); + }; + + /** 筛选列 */ + TreeTable.prototype.toggleCol = function (show, field, key) { + var components = this.getComponents(); + if (show === undefined) { + components.$toolbar.find('.layui-table-tool-panel').remove(); + var cols = ['
      ']; + this.eachCols(function (i, item) { + if (item.type !== 'normal') return; + cols.push('
    • '); + }); + components.$toolbar.find('[lay-event="LAYTABLE_COLS"]').append(cols.join('') + '
    '); + form.render('checkbox', components.filter); + } else { + if (key) { + var $td = components.$table.children('tbody').children('tr').children('[data-key="' + key + '"]'); + var $th = components.$table.children('thead').children('tr').children('[data-key="' + key + '"]'); + if (show) { + $td.removeClass('layui-hide'); + $th.removeClass('layui-hide'); + } else { + $td.addClass('layui-hide'); + $th.addClass('layui-hide'); + } + // 同步更新数据 + var ks = key.split('-'); + var col = this.options.cols[ks[0]][ks[1]]; + col.hide = !show; + + // 更新colspan数据 + function changeParent($temp) { + var parentKey = $temp.data('parent'), pCol; + if (!parentKey) return; + var $parent = components.$table.children('thead').children('tr').children('[data-key="' + parentKey + '"]'); + var colspan = $parent.attr('colspan'); + show ? colspan++ : colspan--; + $parent.attr('colspan', colspan); + if (colspan === 0) $parent.addClass('layui-hide'); + else $parent.removeClass('layui-hide'); + changeParent($parent); + } + + changeParent($th); + + // 同步eachCols数据 + this.eachCols(function (i, item) { + if (item.key === key) item.hide = col.hide; + }); + this.resize(); // 更新表格尺寸 + } + } + }; + + /** + * 搜索数据 + * @param ids 关键字或数据id集合 + */ + TreeTable.prototype.filterData = function (ids) { + var components = this.getComponents(); + components.$loading.show(); + if (this.options.data.length > 0) components.$loading.addClass('ew-loading-float'); + var $trList = components.$table.children('tbody').children('tr'); + var indexList = []; + if (typeof ids === 'string') { // 关键字 + $trList.each(function () { + var index = $(this).data('index'); + $(this).children('td').each(function () { + if ($(this).text().indexOf(ids) !== -1) { + indexList.push(index); + return false; + } + }); + }); + } else { + for (var i = 0; i < ids.length; i++) { + indexList.push(this.getIndexById(ids[i])); + } + } + $trList.addClass('ew-tree-table-filter-hide'); + for (var j = 0; j < indexList.length; j++) { + var $tr = $trList.filter('[data-index="' + indexList[j] + '"]'); + $tr.removeClass('ew-tree-table-filter-hide'); + var indent = parseInt($tr.data('indent')); + // 联动子级 + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= indent) return false; + $(this).removeClass('ew-tree-table-filter-hide'); + }); + if ($tr.hasClass('ew-tree-table-open')) toggleRow($tr); + // 联动父级 + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < indent) { + $(this).removeClass('ew-tree-table-filter-hide'); + if (!$(this).hasClass('ew-tree-table-open')) toggleRow($(this)); + indent = tInd; + } + }); + } + // 最后再检查一遍 + /*$trList.not('.ew-tree-table-filter-hide').not('.ew-tree-tb-hide').each(function () { + var index = $(this).data('index'), hide = true; + for (var k = 0; k < indexList.length; k++) { + if (indexList[k] === index) hide = false; + } + if (hide) $(this).addClass('ew-tree-table-filter-hide'); + });*/ + components.$loading.hide(); + components.$loading.removeClass('ew-loading-float'); + if (indexList.length === 0) components.$empty.show(); + updateFixedTbHead(components.$view); // 更新滚动条补丁 + }; + + /** 重置搜索 */ + TreeTable.prototype.clearFilter = function () { + var components = this.getComponents(); + components.$table.children('tbody').children('tr').removeClass('ew-tree-table-filter-hide'); + if (this.options.data.length > 0) components.$empty.hide(); + updateFixedTbHead(components.$view); // 更新滚动条补丁 + }; + + /** + * 刷新指定父级下的节点 + * @param id 父级id,空则全部刷新 + * @param data 非异步模式替换的数据 + */ + TreeTable.prototype.refresh = function (id, data) { + if (isClass(id) === 'Array') { + data = id; + id = undefined; + } + var components = this.getComponents(); + var d, $tr; + if (id !== undefined) { + $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]'); + d = this.getDataByTr($tr); + } + if (data) { // 数据模式 + if (data.length > 0) components.$loading.addClass('ew-loading-float'); + components.$loading.show(); + if (data.length > 0 && this.options.tree.isPidData) { // pid形式数据 + this.renderBodyData(tt.pidToChildren(data, this.options.tree.idName, this.options.tree.pidName, this.options.tree.childName), d, $tr); + } else { + this.renderBodyData(data, d, $tr); + } + } else { // 异步模式 + this.renderBodyAsync(d, $tr); + } + }; + + /** 删除数据 */ + TreeTable.prototype.del = function (id, index) { + if (index === undefined) index = this.getIndexById(id); + var indexList = (typeof index === 'number' ? [index] : index.split('-')); + var d = this.options.data; + if (indexList.length > 1) { + for (var i = 0; i < indexList.length - 1; i++) { + d = d[parseInt(indexList[i])][this.options.tree.childName]; + } + } + d.splice(indexList[indexList.length - 1], 1); + }; + + /** 更新数据 */ + TreeTable.prototype.update = function (id, fields) { + $.extend(true, this.getDataByTr(this.getIndexById(id)), fields); + }; + + /** 折叠/展开行 */ + function toggleRow($tr) { + var indent = parseInt($tr.data('indent')); + var open = $tr.hasClass('ew-tree-table-open'); + if (open) { // 折叠 + $tr.removeClass('ew-tree-table-open'); + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= indent) return false; + $(this).addClass('ew-tree-tb-hide'); + }); + } else { // 展开 + $tr.addClass('ew-tree-table-open'); + var hideInd; + $tr.nextAll('tr').each(function () { + var ind = parseInt($(this).data('indent')); + if (ind <= indent) return false; + if (hideInd !== undefined && ind > hideInd) return true; + $(this).removeClass('ew-tree-tb-hide'); + if (!$(this).hasClass('ew-tree-table-open')) hideInd = parseInt($(this).data('indent')); + else hideInd = undefined; + }); + } + updateFixedTbHead($tr.parentsUntil('.ew-tree-table').last().parent()); + return open; + } + + /** 固定表头滚动条补丁 */ + function updateFixedTbHead($view) { + var $headBox = $view.children('.ew-tree-table-head'); + var $tbBox = $view.children('.ew-tree-table-box'); + var sWidth = $tbBox.width() - $tbBox.prop('clientWidth'); + $headBox.css('border-right', (sWidth > 0 ? sWidth : 0) + 'px solid #f2f2f2'); + } + + // 监听窗口大小改变 + $(window).resize(function () { + $('.ew-tree-table').each(function () { + updateFixedTbHead($(this)); + var $tbBox = $(this).children('.ew-tree-table-box'); + var full = $tbBox.data('full'); + if (full && device.ie && device.ie < 10) { + $tbBox.css('height', getPageHeight() - full); + } + }); + }); + + /** 表格溢出点击展开功能 */ + $(document).on('mouseenter', '.ew-tree-table-cell.single-line', function () { + var $content = $(this).children('.ew-tree-table-cell-content'); + if ($content.prop('scrollWidth') > $content.outerWidth()) $(this).children('.layui-table-grid-down').show(); + }).on('mouseleave', '.ew-tree-table-cell.single-line', function () { + $(this).children('.layui-table-grid-down').hide(); + }); + // 点击箭头展开 + $(document).on('click', '.ew-tree-table-cell>.layui-table-grid-down', function (e) { + e.stopPropagation(); + hideAllTdTips(); + var $cell = $(this).parent(); + $cell.addClass('ew-tree-tips-open'); + $cell.children('.layui-table-grid-down').hide(); + var tw = $cell.parent().outerWidth() + 4; + if ($cell.outerWidth() < tw) $cell.children('.ew-tree-table-cell-content').css({'width': tw, 'max-width': tw}); + var $box = $cell.parents().filter('.ew-tree-table-box'); + if ($box.length === 0) $box = $cell.parents().filter('.ew-tree-table-head'); + if ($box.length === 0) return; + if (($cell.outerWidth() + $cell.offset().left) + 20 > $box.offset().left + $box.outerWidth()) { + $cell.addClass('ew-show-left'); + } + if (($cell.outerHeight() + $cell.offset().top + 10) > $box.offset().top + $box.outerHeight()) { + $cell.addClass('ew-show-bottom'); + } + }); + // 点击关闭按钮关闭 + $(document).on('click', '.ew-tree-table-cell>.ew-tree-tips-c', function () { + hideAllTdTips(); + }); + // 点击空白部分关闭 + $(document).on('click', function () { + hideAllTdTips(); + $('.ew-tree-table .layui-table-tool-panel').remove(); + }); + $(document).on('click', '.ew-tree-table-cell.ew-tree-tips-open', function (e) { + e.stopPropagation(); + }); + + /* 关闭所有单元格溢出提示框 */ + function hideAllTdTips() { + $('.ew-tree-table-cell').removeClass('ew-tree-tips-open ew-show-left ew-show-bottom'); + $('.ew-tree-table-cell>.ew-tree-table-cell-content').css({'width': '', 'max-width': ''}); + } + + /** 拖拽调整列宽 */ + $(document).on('mousedown', '.ew-tb-resize', function (e) { + layui.stope(e); + var $this = $(this); + $this.attr('move', 'true'); + var key = $this.parent().data('key'); + $this.data('x', e.clientX); + var w = $this.parent().parent().parent().parent().children('colgroup').children('col[data-key="' + key + '"]').attr('width'); + if (!w || w.toString().indexOf('%') !== -1) w = $this.parent().outerWidth(); + $this.data('width', w); + $('body').addClass('ew-tree-table-resizing'); + }).on('mousemove', function (e) { + var $rs = $('.ew-tree-table .ew-tb-resize[move="true"]'); + if ($rs.length === 0) return; + layui.stope(e); + var x = $rs.data('x'); + var w = $rs.data('width'); + var nw = parseFloat(w) + e.clientX - parseFloat(x); + if (nw <= 0) nw = 1; + // 更新实例options中的宽度 + var ins = _instances[$rs.parentsUntil('.ew-tree-table').last().parent().attr('lay-filter')]; + var key = $rs.parent().data('key'); + var ks = key.split('-'); + ins.options.cols[ks[0]][ks[1]].width = nw; + ins.eachCols(function (i, item) { + if (item.key === key) item.width = nw; + }); + ins.resize(); + }).on('mouseup', function (e) { + $('.ew-tree-table .ew-tb-resize[move="true"]').attr('move', 'false'); + $('body').removeClass('ew-tree-table-resizing'); + }).on('mouseleave', function (e) { + $('.ew-tree-table .ew-tb-resize[move="true"]').attr('move', 'false'); + $('body').removeClass('ew-tree-table-resizing'); + }); + + /** 获取顶级的pId */ + function getPids(data, idName, pidName) { + var pids = []; + for (var i = 0; i < data.length; i++) { + var hasPid = false; + for (var j = 0; j < data.length; j++) { + if (data[i][pidName] == data[j][idName]) { + hasPid = true; + break; + } + } + if (!hasPid) pids.push(data[i][pidName]); + } + return pids; + } + + /** 判断pId是否相等 */ + function pidEquals(pId, pIds) { + if (isClass(pIds) === 'Array') { + for (var i = 0; i < pIds.length; i++) + if (pId == pIds[i]) return true; + } + return pId == pIds; + } + + /** 获取变量类型 */ + function isClass(o) { + if (o === null) return 'Null'; + if (o === undefined) return 'Undefined'; + return Object.prototype.toString.call(o).slice(8, -1); + } + + /** 获取浏览器高度 */ + function getPageHeight() { + return document.documentElement.clientHeight || document.body.clientHeight; + } + + /** 对外提供的方法 */ + var tt = { + /* 渲染 */ + render: function (options) { + return new TreeTable(options); + }, + /* 重载 */ + reload: function (id, opt) { + _instances[id].reload(opt); + }, + /* 事件监听 */ + on: function (events, callback) { + return layui.onevent.call(this, MOD_NAME, events, callback); + }, + /* pid转children形式 */ + pidToChildren: function (data, idName, pidName, childName, pId) { + if (!childName) childName = 'children'; + var newList = []; + for (var i = 0; i < data.length; i++) { + if (data[i][idName] == data[i][pidName]) + return console.error('第' + i + '条数据的' + idName + '与' + pidName + '相同', data[i]); + if (pId === undefined) pId = getPids(data, idName, pidName); + if (pidEquals(data[i][pidName], pId)) { + var children = this.pidToChildren(data, idName, pidName, childName, data[i][idName]); + if (children.length > 0) data[i][childName] = children; + newList.push(data[i]); + } + } + return newList; + } + }; + + /** 添加样式 */ + $('head').append([ + '' + ].join('')); + + exports('treeTable', tt); +}); diff --git a/public/static/admin/modules/xmSelect.js b/public/static/admin/modules/xmSelect.js new file mode 100644 index 0000000..9244d07 --- /dev/null +++ b/public/static/admin/modules/xmSelect.js @@ -0,0 +1,8 @@ +/*! + * @Title: xm-select + * @Version: 1.2.2 + * @Description:基于layui的多选解决方案 + * @Site: https://gitee.com/maplemei/xm-select + * @Author: maplemei + * @License:Apache License 2.0 + */!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="./",n(n.s=213)}({105:function(e,t){e.exports=function(e){var t="undefined"!=typeof window&&window.location;if(!t)throw new Error("fixUrls requires window.location");if(!e||"string"!=typeof e)return e;var n=t.protocol+"//"+t.host,o=n+t.pathname.replace(/\/[^\/]*$/,"/");return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,(function(e,t){var r,i=t.trim().replace(/^"(.*)"$/,(function(e,t){return t})).replace(/^'(.*)'$/,(function(e,t){return t}));return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(i)?e:(r=0===i.indexOf("//")?i:0===i.indexOf("/")?n+i:o+i.replace(/^\.\//,""),"url("+JSON.stringify(r)+")")}))}},213:function(e,t,n){"use strict";n.r(t),function(e){n(215),n(216),n(218);var t=n(41);window.addEventListener("click",(function(){Object.keys(t.b).forEach((function(e){var n=t.b[e];n&&n.closed&&n.closed()}))})),window.addEventListener("scroll",(function(){Object.keys(t.b).forEach((function(e){var n=t.b[e];n&&n.calcPosition&&n.calcPosition()}))})),"object"===("undefined"==typeof exports?"undefined":_typeof(exports))?e.exports=t.c:"function"==typeof define&&n(220)?define(xmSelect):window.layui&&layui.define&&layui.define((function(e){e("xmSelect",t.c)})),window.xmSelect=t.c}.call(this,n(214)(e))},214:function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},215:function(e,t){Array.prototype.map||(Array.prototype.map=function(e,t){var n,o,r,i=Object(this),a=i.length>>>0;for(t&&(n=t),o=new Array(a),r=0;r>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(n=t),o=0;o>>0;if("function"!=typeof e)throw new TypeError;for(var o=[],r=arguments[1],i=0;i>>0,r=arguments[1],i=0;i .xm-tips {\n color: #999999;\n padding: 0 10px;\n position: absolute;\n display: flex;\n height: 100%;\n align-items: center;\n}\nxm-select > .xm-icon {\n display: inline-block;\n overflow: hidden;\n position: absolute;\n width: 0;\n height: 0;\n right: 10px;\n top: 50%;\n margin-top: -3px;\n cursor: pointer;\n border: 6px dashed transparent;\n border-top-color: #C2C2C2;\n border-top-style: solid;\n transition: all 0.3s;\n -webkit-transition: all 0.3s;\n}\nxm-select > .xm-icon-expand {\n margin-top: -9px;\n transform: rotate(180deg);\n}\nxm-select > .xm-label.single-row {\n position: absolute;\n top: 0;\n bottom: 0px;\n left: 0px;\n right: 30px;\n overflow: auto hidden;\n}\nxm-select > .xm-label.single-row .scroll {\n overflow-y: hidden;\n}\nxm-select > .xm-label.single-row .label-content {\n flex-wrap: nowrap;\n white-space: nowrap;\n}\nxm-select > .xm-label.auto-row .label-content {\n flex-wrap: wrap;\n padding-right: 30px !important;\n}\nxm-select > .xm-label.auto-row .xm-label-block > span {\n white-space: unset;\n height: 100%;\n}\nxm-select > .xm-label .scroll .label-content {\n display: flex;\n padding: 3px 10px;\n}\nxm-select > .xm-label .xm-label-block {\n display: flex;\n position: relative;\n padding: 0px 5px;\n margin: 2px 5px 2px 0;\n border-radius: 3px;\n align-items: baseline;\n color: #FFF;\n}\nxm-select > .xm-label .xm-label-block > span {\n display: flex;\n color: #FFF;\n white-space: nowrap;\n}\nxm-select > .xm-label .xm-label-block > i {\n color: #FFF;\n margin-left: 8px;\n font-size: 12px;\n cursor: pointer;\n display: flex;\n}\nxm-select > .xm-label .xm-label-block.disabled {\n background-color: #C2C2C2 !important;\n cursor: no-drop !important;\n}\nxm-select > .xm-label .xm-label-block.disabled > i {\n cursor: no-drop !important;\n}\nxm-select > .xm-body {\n position: absolute;\n left: 0;\n top: 42px;\n padding: 5px 0;\n z-index: 999;\n width: 100%;\n min-width: fit-content;\n border: 1px solid #E6E6E6;\n background-color: #fff;\n border-radius: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12);\n animation-name: xm-upbit;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n}\nxm-select > .xm-body .scroll-body {\n overflow-x: hidden;\n overflow-y: auto;\n}\nxm-select > .xm-body .scroll-body::-webkit-scrollbar {\n width: 8px;\n}\nxm-select > .xm-body .scroll-body::-webkit-scrollbar-track {\n -webkit-border-radius: 2em;\n -moz-border-radius: 2em;\n -ms-border-radius: 2em;\n border-radius: 2em;\n background-color: #FFF;\n}\nxm-select > .xm-body .scroll-body::-webkit-scrollbar-thumb {\n -webkit-border-radius: 2em;\n -moz-border-radius: 2em;\n -ms-border-radius: 2em;\n border-radius: 2em;\n background-color: #C2C2C2;\n}\nxm-select > .xm-body.up {\n top: auto;\n bottom: 42px;\n}\nxm-select > .xm-body.relative {\n position: relative;\n display: block !important;\n top: 0;\n box-shadow: none;\n border: none;\n animation-name: none;\n animation-duration: 0;\n min-width: 100%;\n}\nxm-select > .xm-body .xm-group {\n cursor: default;\n}\nxm-select > .xm-body .xm-group-item {\n display: inline-block;\n cursor: pointer;\n padding: 0 10px;\n color: #999;\n font-size: 12px;\n}\nxm-select > .xm-body .xm-option {\n display: flex;\n align-items: center;\n position: relative;\n padding: 0 10px;\n cursor: pointer;\n}\nxm-select > .xm-body .xm-option-icon {\n color: transparent;\n display: flex;\n border: 1px solid #E6E6E6;\n border-radius: 3px;\n justify-content: center;\n align-items: center;\n}\nxm-select > .xm-body .xm-option-icon.xm-custom-icon {\n color: unset;\n border: unset;\n}\nxm-select > .xm-body .xm-option-icon-hidden {\n margin-right: -10px;\n}\nxm-select > .xm-body .xm-option-icon.xm-icon-danx {\n border-radius: 100%;\n}\nxm-select > .xm-body .xm-option-content {\n display: flex;\n position: relative;\n padding-left: 15px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: #666;\n width: calc(100% - 20px);\n}\nxm-select > .xm-body .xm-option.hide-icon .xm-option-content {\n padding-left: 0;\n}\nxm-select > .xm-body .xm-option.selected.hide-icon .xm-option-content {\n color: #FFF !important;\n}\nxm-select > .xm-body .xm-option .loader {\n width: 0.8em;\n height: 0.8em;\n margin-right: 6px;\n color: #C2C2C2;\n}\nxm-select > .xm-body .xm-select-empty {\n text-align: center;\n color: #999;\n}\nxm-select > .xm-body .disabled {\n cursor: no-drop;\n}\nxm-select > .xm-body .disabled:hover {\n background-color: #FFF;\n}\nxm-select > .xm-body .disabled .xm-option-icon {\n border-color: #C2C2C2 !important;\n}\nxm-select > .xm-body .disabled .xm-option-content {\n color: #C2C2C2 !important;\n}\nxm-select > .xm-body .disabled.selected > .xm-option-icon {\n color: #C2C2C2 !important;\n}\nxm-select > .xm-body .xm-search {\n background-color: #FFF !important;\n position: relative;\n padding: 0 10px;\n margin-bottom: 5px;\n cursor: pointer;\n}\nxm-select > .xm-body .xm-search > i {\n position: absolute;\n color: #666;\n}\nxm-select > .xm-body .xm-search-input {\n border: none;\n border-bottom: 1px solid #E6E6E6;\n padding-left: 27px;\n cursor: text;\n}\nxm-select > .xm-body .xm-paging {\n padding: 0 10px;\n display: flex;\n margin-top: 5px;\n}\nxm-select > .xm-body .xm-paging > span:first-child {\n border-radius: 2px 0 0 2px;\n}\nxm-select > .xm-body .xm-paging > span:last-child {\n border-radius: 0 2px 2px 0;\n}\nxm-select > .xm-body .xm-paging > span {\n display: flex;\n flex: auto;\n justify-content: center;\n vertical-align: middle;\n margin: 0 -1px 0 0;\n background-color: #fff;\n color: #333;\n font-size: 12px;\n border: 1px solid #e2e2e2;\n flex-wrap: nowrap;\n width: 100%;\n overflow: hidden;\n min-width: 50px;\n}\nxm-select > .xm-body .xm-toolbar {\n padding: 0 10px;\n display: flex;\n margin: -3px 0;\n cursor: default;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag {\n cursor: pointer;\n display: flex;\n margin-right: 20px;\n color: #666;\n align-items: baseline;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag:hover {\n opacity: 0.8;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag:active {\n opacity: 1;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag > i {\n margin-right: 2px;\n font-size: 14px;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag:last-child {\n margin-right: 0;\n}\nxm-select > .xm-body .xm-body-custom {\n line-height: initial;\n cursor: default;\n}\nxm-select > .xm-body .xm-body-custom * {\n box-sizing: initial;\n}\nxm-select > .xm-body .xm-tree {\n position: relative;\n}\nxm-select > .xm-body .xm-tree-icon {\n display: inline-block;\n margin-right: 3px;\n cursor: pointer;\n border: 6px dashed transparent;\n border-left-color: #C2C2C2;\n border-left-style: solid;\n transition: all 0.3s;\n -webkit-transition: all 0.3s;\n z-index: 2;\n visibility: hidden;\n}\nxm-select > .xm-body .xm-tree-icon.expand {\n margin-top: 3px;\n margin-right: 5px;\n margin-left: -2px;\n transform: rotate(90deg);\n}\nxm-select > .xm-body .xm-tree-icon.xm-visible {\n visibility: visible;\n}\nxm-select > .xm-body .xm-tree .left-line {\n position: absolute;\n left: 13px;\n width: 0;\n z-index: 1;\n border-left: 1px dotted #c0c4cc !important;\n}\nxm-select > .xm-body .xm-tree .top-line {\n position: absolute;\n left: 13px;\n height: 0;\n z-index: 1;\n border-top: 1px dotted #c0c4cc !important;\n}\nxm-select > .xm-body .xm-tree .xm-tree-icon + .top-line {\n margin-left: 1px;\n}\nxm-select > .xm-body .scroll-body > .xm-tree > .xm-option > .top-line,\nxm-select > .xm-body .scroll-body > .xm-option > .top-line {\n width: 0 !important;\n}\nxm-select > .xm-body .xm-cascader-box {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n padding: 5px 0;\n border: 1px solid #E6E6E6;\n background-color: #fff;\n border-radius: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12);\n margin: -1px;\n}\nxm-select > .xm-body .xm-cascader-box::before {\n content: ' ';\n position: absolute;\n width: 0;\n height: 0;\n border: 6px solid transparent;\n border-right-color: #E6E6E6;\n top: 10px;\n left: -12px;\n}\nxm-select > .xm-body .xm-cascader-box::after {\n content: ' ';\n position: absolute;\n width: 0;\n height: 0;\n border: 6px solid transparent;\n border-right-color: #fff;\n top: 10px;\n left: -11px;\n}\nxm-select > .xm-body .xm-cascader-scroll {\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n}\nxm-select > .xm-body.cascader {\n width: unset;\n min-width: unset;\n}\nxm-select > .xm-body.cascader .xm-option-content {\n padding-left: 8px;\n}\nxm-select > .xm-body.cascader .disabled .xm-right-arrow {\n color: #C2C2C2 !important;\n}\nxm-select .xm-input {\n cursor: pointer;\n border-radius: 2px;\n border-width: 1px;\n border-style: solid;\n border-color: #E6E6E6;\n display: block;\n width: 100%;\n box-sizing: border-box;\n background-color: #FFF;\n line-height: 1.3;\n padding-left: 10px;\n outline: 0;\n user-select: text;\n -ms-user-select: text;\n -moz-user-select: text;\n -webkit-user-select: text;\n}\nxm-select .dis {\n display: none;\n}\nxm-select .loading {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(255, 255, 255, 0.6);\n display: flex;\n align-items: center;\n justify-content: center;\n}\nxm-select .loader {\n border: 0.2em dotted currentcolor;\n border-radius: 50%;\n -webkit-animation: 1s loader linear infinite;\n animation: 1s loader linear infinite;\n display: inline-block;\n width: 1em;\n height: 1em;\n color: inherit;\n vertical-align: middle;\n pointer-events: none;\n}\nxm-select .xm-select-default {\n position: absolute;\n width: 100%;\n height: 100%;\n border: none;\n visibility: hidden;\n}\nxm-select .xm-select-disabled {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n cursor: no-drop;\n z-index: 2;\n opacity: 0.3;\n background-color: #FFF;\n}\nxm-select .item--divided {\n border-top: 1px solid #ebeef5;\n width: calc(100% - 20px);\n cursor: initial;\n}\nxm-select .xm-right-arrow {\n position: absolute;\n color: #666;\n right: 5px;\n top: -1px;\n font-weight: 700;\n transform: scale(0.6, 1);\n}\nxm-select .xm-right-arrow::after {\n content: '>';\n}\nxm-select[size='large'] {\n min-height: 40px;\n line-height: 40px;\n}\nxm-select[size='large'] .xm-input {\n height: 40px;\n}\nxm-select[size='large'] .xm-label .scroll .label-content {\n line-height: 34px;\n}\nxm-select[size='large'] .xm-label .xm-label-block {\n height: 30px;\n line-height: 30px;\n}\nxm-select[size='large'] .xm-body .xm-option .xm-option-icon {\n height: 20px;\n width: 20px;\n font-size: 20px;\n}\nxm-select[size='large'] .xm-paging > span {\n height: 34px;\n line-height: 34px;\n}\nxm-select[size='large'] .xm-tree .left-line {\n height: 100%;\n bottom: 20px;\n}\nxm-select[size='large'] .xm-tree .left-line-group {\n height: calc(100% - 40px);\n}\nxm-select[size='large'] .xm-tree .xm-tree-icon.xm-hidden + .top-line {\n top: 19px;\n}\nxm-select[size='large'] .item--divided {\n margin: 10px;\n}\nxm-select {\n min-height: 36px;\n line-height: 36px;\n}\nxm-select .xm-input {\n height: 36px;\n}\nxm-select .xm-label .scroll .label-content {\n line-height: 30px;\n}\nxm-select .xm-label .xm-label-block {\n height: 26px;\n line-height: 26px;\n}\nxm-select .xm-body .xm-option .xm-option-icon {\n height: 18px;\n width: 18px;\n font-size: 18px;\n}\nxm-select .xm-paging > span {\n height: 30px;\n line-height: 30px;\n}\nxm-select .xm-tree .left-line {\n height: 100%;\n bottom: 18px;\n}\nxm-select .xm-tree .left-line-group {\n height: calc(100% - 36px);\n}\nxm-select .xm-tree .xm-tree-icon.xm-hidden + .top-line {\n top: 17px;\n}\nxm-select .item--divided {\n margin: 9px;\n}\nxm-select[size='small'] {\n min-height: 32px;\n line-height: 32px;\n}\nxm-select[size='small'] .xm-input {\n height: 32px;\n}\nxm-select[size='small'] .xm-label .scroll .label-content {\n line-height: 26px;\n}\nxm-select[size='small'] .xm-label .xm-label-block {\n height: 22px;\n line-height: 22px;\n}\nxm-select[size='small'] .xm-body .xm-option .xm-option-icon {\n height: 16px;\n width: 16px;\n font-size: 16px;\n}\nxm-select[size='small'] .xm-paging > span {\n height: 26px;\n line-height: 26px;\n}\nxm-select[size='small'] .xm-tree .left-line {\n height: 100%;\n bottom: 16px;\n}\nxm-select[size='small'] .xm-tree .left-line-group {\n height: calc(100% - 32px);\n}\nxm-select[size='small'] .xm-tree .xm-tree-icon.xm-hidden + .top-line {\n top: 15px;\n}\nxm-select[size='small'] .item--divided {\n margin: 8px;\n}\nxm-select[size='mini'] {\n min-height: 28px;\n line-height: 28px;\n}\nxm-select[size='mini'] .xm-input {\n height: 28px;\n}\nxm-select[size='mini'] .xm-label .scroll .label-content {\n line-height: 22px;\n}\nxm-select[size='mini'] .xm-label .xm-label-block {\n height: 18px;\n line-height: 18px;\n}\nxm-select[size='mini'] .xm-body .xm-option .xm-option-icon {\n height: 14px;\n width: 14px;\n font-size: 14px;\n}\nxm-select[size='mini'] .xm-paging > span {\n height: 22px;\n line-height: 22px;\n}\nxm-select[size='mini'] .xm-tree .left-line {\n height: 100%;\n bottom: 14px;\n}\nxm-select[size='mini'] .xm-tree .left-line-group {\n height: calc(100% - 28px);\n}\nxm-select[size='mini'] .xm-tree .xm-tree-icon.xm-hidden + .top-line {\n top: 13px;\n}\nxm-select[size='mini'] .item--divided {\n margin: 7px;\n}\n.layui-form-pane xm-select {\n margin: -1px -1px -1px 0;\n}\n",""]),e.exports=t},218:function(e,t,n){var o=n(219);"string"==typeof o&&(o=[[e.i,o,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(27)(o,r);o.locals&&(e.exports=o.locals)},219:function(e,t,n){(t=n(26)(!1)).push([e.i,'@font-face {\n font-family: "xm-iconfont";\n src: url(\'//at.alicdn.com/t/font_792691_ptvyboo0bno.eot?t=1574048839056\');\n /* IE9 */\n src: url(\'//at.alicdn.com/t/font_792691_ptvyboo0bno.eot?t=1574048839056#iefix\') format(\'embedded-opentype\'), /* IE6-IE8 */ url(\'data:application/x-font-woff2;charset=utf-8;base64,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\') format(\'woff2\'), url(\'//at.alicdn.com/t/font_792691_ptvyboo0bno.woff?t=1574048839056\') format(\'woff\'), url(\'//at.alicdn.com/t/font_792691_ptvyboo0bno.ttf?t=1574048839056\') format(\'truetype\'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ url(\'//at.alicdn.com/t/font_792691_ptvyboo0bno.svg?t=1574048839056#iconfont\') format(\'svg\');\n /* iOS 4.1- */\n}\n.xm-iconfont {\n font-family: "xm-iconfont" !important;\n font-size: 16px;\n font-style: normal;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.xm-icon-quanxuan:before {\n content: "\\e62c";\n}\n.xm-icon-caidan:before {\n content: "\\e610";\n}\n.xm-icon-fanxuan:before {\n content: "\\e837";\n}\n.xm-icon-pifu:before {\n content: "\\e668";\n}\n.xm-icon-qingkong:before {\n content: "\\e63e";\n}\n.xm-icon-sousuo:before {\n content: "\\e600";\n}\n.xm-icon-danx:before {\n content: "\\e62b";\n}\n.xm-icon-duox:before {\n content: "\\e613";\n}\n.xm-icon-close:before {\n content: "\\e601";\n}\n.xm-icon-expand:before {\n content: "\\e641";\n}\n.xm-icon-banxuan:before {\n content: "\\e60d";\n}\n',""]),e.exports=t},220:function(e,t){(function(t){e.exports=t}).call(this,{})},26:function(e,t,n){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",o=e[3];if(!o)return n;if(t&&"function"==typeof btoa){var r=function(e){var t=btoa(unescape(encodeURIComponent(JSON.stringify(e)))),n="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(t);return"/*# ".concat(n," */")}(o),i=o.sources.map((function(e){return"/*# sourceURL=".concat(o.sourceRoot||"").concat(e," */")}));return[n].concat(i).concat([r]).join("\n")}return[n].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,o){"string"==typeof e&&(e=[[null,e,""]]);var r={};if(o)for(var i=0;i=0&&p.splice(t,1)}function y(e){var t=document.createElement("style");if(void 0===e.attrs.type&&(e.attrs.type="text/css"),void 0===e.attrs.nonce){var o=function(){0;return n.nc}();o&&(e.attrs.nonce=o)}return x(t,e.attrs),m(e,t),t}function x(e,t){Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])}))}function v(e,t){var n,o,r,i;if(t.transform&&e.css){if(!(i="function"==typeof t.transform?t.transform(e.css):t.transform.default(e.css)))return function(){};e.css=i}if(t.singleton){var a=u++;n=c||(c=y(t)),o=w.bind(null,n,a,!1),r=w.bind(null,n,a,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(e){var t=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",x(t,e.attrs),m(e,t),t}(t),o=C.bind(null,n,t),r=function(){b(n),n.href&&URL.revokeObjectURL(n.href)}):(n=y(t),o=k.bind(null,n),r=function(){b(n)});return o(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;o(e=t)}else r()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=a()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=h(e,t);return d(n,t),function(e){for(var o=[],r=0;re.length)&&(t=e.length);for(var n=0,o=new Array(t);n3)for(n=[n],o=3;o1&&F(r,t,n),t=T(n,r,r,e.__k,null,r.__e,t),"function"==typeof e.type&&(e.__d=t)))}function U(e,t,n,o,r,i,a,l,s){var c,u,p,f,d,h,m,y,x,v,g,_=t.type;if(void 0!==t.constructor)return null;(c=b.__b)&&c(t);try{e:if("function"==typeof _){if(y=t.props,x=(c=_.contextType)&&o[c.__c],v=c?x?x.props.value:c.__:o,n.__c?m=(u=t.__c=n.__c).__=u.__E:("prototype"in _&&_.prototype.render?t.__c=u=new _(y,v):(t.__c=u=new A(y,v),u.constructor=_,u.render=q),x&&x.sub(u),u.props=y,u.state||(u.state={}),u.context=v,u.__n=o,p=u.__d=!0,u.__h=[]),null==u.__s&&(u.__s=u.state),null!=_.getDerivedStateFromProps&&(u.__s==u.state&&(u.__s=C({},u.__s)),C(u.__s,_.getDerivedStateFromProps(y,u.__s))),f=u.props,d=u.state,p)null==_.getDerivedStateFromProps&&null!=u.componentWillMount&&u.componentWillMount(),null!=u.componentDidMount&&u.__h.push(u.componentDidMount);else{if(null==_.getDerivedStateFromProps&&y!==f&&null!=u.componentWillReceiveProps&&u.componentWillReceiveProps(y,v),!u.__e&&null!=u.shouldComponentUpdate&&!1===u.shouldComponentUpdate(y,u.__s,v)||t.__v===n.__v){u.props=y,u.state=u.__s,t.__v!==n.__v&&(u.__d=!1),u.__v=t,t.__e=n.__e,t.__k=n.__k,u.__h.length&&a.push(u),F(t,l,e);break e}null!=u.componentWillUpdate&&u.componentWillUpdate(y,u.__s,v),null!=u.componentDidUpdate&&u.__h.push((function(){u.componentDidUpdate(f,d,h)}))}u.context=v,u.props=y,u.state=u.__s,(c=b.__r)&&c(t),u.__d=!1,u.__v=t,u.__P=e,c=u.render(u.props,u.state,u.context),u.state=u.__s,null!=u.getChildContext&&(o=C(C({},o),u.getChildContext())),p||null==u.getSnapshotBeforeUpdate||(h=u.getSnapshotBeforeUpdate(f,d)),g=null!=c&&c.type==E&&null==c.key?c.props.children:c,M(e,Array.isArray(g)?g:[g],t,n,o,r,i,a,l,s),u.base=t.__e,u.__h.length&&a.push(u),m&&(u.__E=u.__=null),u.__e=!1}else null==i&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=N(n.__e,t,n,o,r,i,a,s);(c=b.diffed)&&c(t)}catch(e){t.__v=null,b.__e(e,t,n)}return t.__e}function B(e,t){b.__c&&b.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){b.__e(e,t.__v)}}))}function N(e,t,n,o,r,i,a,l){var s,c,u,p,f,d=n.props,h=t.props;if(r="svg"===t.type||r,null!=i)for(s=0;se.length)&&(t=e.length);for(var n=0,o=new Array(t);nr?n-r:r,a=this.labelRef.scrollLeft+e.deltaY;a<0&&(a=0),a>i&&(a=i),this.labelRef.scrollLeft=a}}},{key:"blur",value:function(){var e=this.base.querySelector(".label-search-input");e&&e.blur()}},{key:"componentDidMount",value:function(){this.labelRef.addEventListener&&this.labelRef.addEventListener("DOMMouseScroll",this.scrollFunc.bind(this),!1),this.labelRef.attachEvent&&this.labelRef.attachEvent("onmousewheel",this.scrollFunc.bind(this)),this.labelRef.onmousewheel=this.scrollFunc.bind(this)}},{key:"render",value:function(e){var t=this,n=e.data,o=e.prop,r=e.theme,i=e.model,a=e.sels,l=e.autoRow,s=e.tree,c=o.name,u=o.disabled,f=i.label,d=f.type,m=f[d],b=a;s.show&&s.strict&&s.simple&&h(n,a,b=[],o);var y="",x=!0,v=b.map((function(e){return e[c]})).join(",");if("text"===d)y=b.map((function(e){return"".concat(m.left).concat(e[c]).concat(m.right)})).join(m.separator);else if("block"===d){x=!1;var g=Q(b),_={backgroundColor:r.color},w=m.showCount<=0?g.length:m.showCount;y=g.splice(0,w).map((function(e){var n={width:m.showIcon?"calc(100% - 20px)":"100%"};return S("div",{class:["xm-label-block",e[u]?"disabled":""].join(" "),style:_},m.template&&p(m.template)?S("span",{style:n,dangerouslySetInnerHTML:{__html:m.template(e,g)}}):S("span",{style:n},e[c]),m.showIcon&&S("i",{class:"xm-iconfont xm-icon-close",onClick:t.iconClick.bind(t,e,!0,e[u])}))})),g.length&&y.push(S("div",{class:"xm-label-block",style:_},"+ ",g.length))}else if("search"==d){x=!1;var k="";b.length&&(k=b[0][c]),y=S("input",{class:"label-search-input",type:"text",placeholder:e.searchTips,style:{width:"100%",border:"none"},value:k,onInput:function(e){t.props.onReset(e,"labelSearch")},onCompositionstart:function(e){t.props.onReset(e,"labelSearch")},compositionupdate:function(e){t.props.onReset(e,"labelSearch")},compositionend:function(e){t.props.onReset(e,"labelSearch")},onClick:function(e){e.stopPropagation()}})}else y=b.length&&m&&m.template?m.template(n,b):b.map((function(e){return e[c]})).join(",");return S("div",{class:["xm-label",l?"auto-row":"single-row"].join(" ")},S("div",{class:"scroll",ref:function(e){return t.labelRef=e}},x?S("div",{class:"label-content",dangerouslySetInnerHTML:{__html:y}}):S("div",{class:"label-content",title:v},y)))}}])&&W(t.prototype,n),o&&W(t,o),i}(A);function ne(e){return(ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function re(e){for(var t=1;t0&&void 0!==arguments[0]||this.size;var e=this.state.pageIndex;e<=1||(this.changePageIndex(e-1),this.props.pageRemote&&this.postData(e-1,!0))}},{key:"pageNextClick",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.size,t=this.state.pageIndex;t>=e||(this.changePageIndex(t+1),this.props.pageRemote&&this.postData(t+1,!0))}},{key:"changePageIndex",value:function(e){this.setState({pageIndex:e})}},{key:"labelSearch",value:function(e){"input"==e.type?this.searchInput(e):this.handleComposition(e)}},{key:"searchInput",value:function(e){var t=this,n=e.target.value;n!==this.__value&&(this.searchCid&&clearTimeout(this.searchCid),this.inputOver&&(this.__value=n,this.searchCid=setTimeout((function(){t.callback=!0,t.setState({filterValue:t.__value,remote:!0,pageIndex:1})}),this.props.delay)))}},{key:"focus",value:function(){this.searchInputRef&&this.searchInputRef.focus()}},{key:"blur",value:function(){this.searchInputRef&&this.searchInputRef.blur()}},{key:"handleComposition",value:function(e){var t=e.type;"compositionstart"===t?(this.inputOver=!1,this.searchCid&&clearTimeout(this.searchCid)):"compositionend"===t&&(this.inputOver=!0,this.searchInput(e))}},{key:"postData",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state.pageIndex,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];(this.state.remote||n)&&(this.callback=!1,this.setState({loading:!0,remote:!1}),this.blur(),this.props.remoteMethod(this.state.filterValue,(function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;setTimeout((function(){e.focus(),e.callback=!0,e.setState({loading:!1,totalSize:n}),e.props.onReset(t,"data")}),10)}),this.props.show,t))}},{key:"keydown",value:function(e,t){var n=this,o=t.keyCode;if("div"===e&&(27===o||9===o?this.props.onReset(!1,"close"):37===o?this.pagePrevClick():39===o&&this.pageNextClick()),this.props.enableKeyboard){var r=this.props.prop,i=r.value,a=r.optgroup,l=r.disabled,s=this.tempData.filter((function(e){return!e[a]&&!e[l]})),c=s.length-1;if(-1===c)return;var u=s.findIndex((function(e){return e[i]===n.state.val}));if(38===o){u<=0?u=c:u>0&&(u-=1);var p=s[u][i];this.setState({val:p});var f=this.base.querySelector('.xm-option[value="'.concat(p,'"]'));f&&f.scrollIntoView(!1)}else if(40===o){-1===u||u===c?u=0:uT&&(z=T),T>0&&z<=0&&(z=1),!v){var L=(z-1)*e.pageSize,V=L+e.pageSize;E=E.slice(L,V)}var F={cursor:"no-drop",color:"#d2d2d2"},U={},B={};z<=1&&(U=F),z==T&&(B=F),this.state.pageIndex!==z&&this.changePageIndex(z),this.size=T,M=S("div",{class:"xm-paging"},S("span",{style:U,onClick:this.pagePrevClick.bind(this,T)},e.languageProp.paging.prev),S("span",null,this.state.pageIndex," / ",T),S("span",{style:B,onClick:this.pageNextClick.bind(this,T)},e.languageProp.paging.next))}else e.showCount>0&&(E=E.slice(0,e.showCount));var N,K=[],H={__tmp:!0};H[j]=!0,E.forEach((function(e){var t=D[e.__group__index];delete e.__group__index,N&&!t&&(t=H),t!=N&&(N=t,t&&K.push(N)),K.push(e)})),E=K,t&&(t=x(this.state.filterValue,f([],E)))&&E.splice(0,0,re(re({},t),{},{__node:{}}));var q=f([],E);this.tempData=q;var Y=S("div",{class:"xm-toolbar"},e.toolbar.list.map((function(t){var o,r=e.languageProp.toolbar[t];o="ALL"===t?{icon:"xm-iconfont xm-icon-quanxuan",name:r,method:function(e){var t=i.optgroup,o=i.disabled,r=e.filter((function(e){return!e[t]})).filter((function(e){return!e[o]})),a=c.filter((function(e){return e[i.disabled]})),l=[];l=s?a.length?a:r.slice(0,1):g>0?a.length>=g?a:d(r.slice(0,g-a.length),a,i):d(r,c,i),n.props.onReset(l,"sels")}}:"CLEAR"===t?{icon:"xm-iconfont xm-icon-qingkong",name:r,method:function(e){n.props.onReset(c.filter((function(e){return e[i.disabled]})),"sels")}}:"REVERSE"===t?{icon:"xm-iconfont xm-icon-fanxuan",name:r,method:function(e){var t=i.optgroup,o=i.disabled,r=e.filter((function(e){return!e[t]})).filter((function(e){return!e[o]})),a=[];c.forEach((function(e){var t=r.findIndex((function(t){return t[k]===e[k]}));-1==t?a.push(e):r.splice(t,1)}));var l=a.filter((function(e){return e[i.disabled]})),u=[];u=s?l.length?l:r.slice(0,1):g>0?l.length>=g?l:d(r.slice(0,g-l.length),l,i):d(r,a,i),n.props.onReset(u,"sels")}}:t;var a=function(e){"mouseenter"===e.type&&(e.target.style.color=l.color),"mouseleave"===e.type&&(e.target.style.color="")};return S("div",{class:"toolbar-tag",style:{},onClick:function(){p(o.method)&&o.method(q),n.focus()},onMouseEnter:a,onMouseLeave:a},e.toolbar.showIcon&&S("i",{class:o.icon}),S("span",null,o.name))})).filter((function(e){return e}))),Z="hidden"!=e.model.icon;return(E=E.map((function(t){return t[j]?t.__tmp?S("div",{class:"item--divided"}):S("div",{class:"xm-group"},S("div",{class:"xm-group-item",onClick:n.groupClick.bind(n,t)},t[w])):function(t){var r=!!c.find((function(e){return e[k]==t[k]})),i=r?{color:l.color,border:"none"}:{borderColor:l.color},u={};_&&t[k]===n.state.val&&(u.backgroundColor=l.hover),!Z&&r&&(u.backgroundColor=l.color,t[C]&&(u.backgroundColor="#C2C2C2"));var p,f,d=["xm-option",t[C]?" disabled":"",r?" selected":"",Z?"show-icon":"hide-icon"].join(" "),h=["xm-option-icon",(p=e.iconfont.select,f=e.iconfont.unselect,(p?!r&&f?f+" xm-custom-icon":p:0)||"xm-iconfont "+(s?"xm-icon-danx":"xm-icon-duox"))].join(" "),m=function(e){"mouseenter"===e.type?t[C]||(_?n.setState({val:t[k]}):e.target.style.backgroundColor=l.hover):"mouseleave"===e.type&&(t[C]||_||(e.target.style.backgroundColor=""))};return S("div",{class:d,style:u,value:t[k],onClick:n.optionClick.bind(n,t,r,t[C]),onMouseEnter:m,onMouseLeave:m},Z&&S("i",{class:h,style:i}),S("div",{class:"xm-option-content",dangerouslySetInnerHTML:{__html:a({data:o,item:t,arr:c,name:t[w],value:t[k]})}}))}(t)}))).length||(!e.pageEmptyShow&&(M=""),E.push(S("div",{class:"xm-select-empty"},u))),S("div",{onClick:this.blockClick,tabindex:"1",style:"outline: none;"},S("div",null,e.toolbar.show&&Y,I,S("div",{class:"scroll-body",style:{maxHeight:e.height}},E),e.paging&&M),this.state.loading&&S("div",{class:"loading"},S("span",{class:"loader"})))}},{key:"componentDidMount",value:function(){var e=this.base.querySelector(".xm-search-input");e&&(e.addEventListener("compositionstart",this.handleComposition.bind(this)),e.addEventListener("compositionupdate",this.handleComposition.bind(this)),e.addEventListener("compositionend",this.handleComposition.bind(this)),e.addEventListener("input",this.searchInput.bind(this)),this.searchInputRef=e),this.base.addEventListener("keydown",this.keydown.bind(this,"div"))}},{key:"componentDidUpdate",value:function(){if(this.callback){this.callback=!1;var e=this.props.filterDone;p(e)&&e(this.state.filterValue,this.tempData||[])}}}])&&ae(t.prototype,n),o&&ae(t,o),i}(A);function de(e){return(de="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function he(e,t){for(var n=0;n0||u.lazy&&!1!==e.__node.loading)?"xm-visible":"xm-hidden"].join(" "),O=[];u.showFolderIcon&&(O.push(S("i",{class:k,type:"expand"})),u.showLine&&(o&&O.push(S("i",{class:"left-line",style:{left:t-u.indent+3+"px"}})),O.push(S("i",{class:"top-line",style:{left:t-u.indent+3+"px",width:u.indent+(0===o?10:-2)+"px"}}))));var j=function(t){"mouseenter"===t.type?e[_]||(x?n.setState({val:e[g]}):t.target.style.backgroundColor=a.hover):"mouseleave"===t.type&&(e[_]||x||(t.target.style.backgroundColor=""))};return S("div",{class:m,style:h,value:e[g],onClick:n.optionClick.bind(n,e,r,e[_],"line"),onMouseEnter:j,onMouseLeave:j},O,e.__node.loading&&S("span",{class:"loader"}),C&&S("i",{class:b,style:d,onClick:n.optionClick.bind(n,e,r,e[_],"checkbox")}),S("div",{class:"xm-option-content",dangerouslySetInnerHTML:{__html:s({data:c,item:e,arr:i,name:e[v],value:e[g]})}}))};h&&(m?this.postData():this.filterData(c,this.state.filterValue));var j=f([],c),E=f([],i);this.tempData=j;var A=c.map((function(e){return function e(t,o){if(!t.__node.hidn){var r=t[w];if(o+=u.indent,r){var i=-1!==n.state.expandedKeys.findIndex((function(e){return t[g]===e}));return 0===r.length&&(i=!1),S("div",{class:"xm-tree"},u.showFolderIcon&&u.showLine&&i&&r.length>0&&S("i",{class:"left-line left-line-group",style:{left:o+3+"px"}}),O(t,o,0===r.length&&(!u.lazy||u.lazy&&!1===t.__node.loading)?0:i),i&&S("div",{class:"xm-tree-box"},r.map((function(t){return e(t,o)}))))}return O(t,o,0)}}(e,10-u.indent)})).filter((function(e){return e}));function R(e,t){t.forEach((function(t){t[k]?(u.strict||"hidden"===y.parent||e.push(t),R(e,t[w])):e.push(t)}))}var P=S("div",{class:"xm-toolbar"},e.toolbar.list.map((function(t){var r,s=e.languageProp.toolbar[t];r="ALL"===t?{icon:"xm-iconfont xm-icon-quanxuan",name:s,method:function(e){var t=[];R(t,e),t=t.filter((function(e){return!e[_]&&!e.__node.hidn})),n.props.onReset(l?t.slice(0,1):d(t,i,o),"treeData")}}:"CLEAR"===t?{icon:"xm-iconfont xm-icon-qingkong",name:s,method:function(e){n.props.onReset(i.filter((function(e){return e[o.disabled]})),"treeData")}}:"REVERSE"===t?{icon:"xm-iconfont xm-icon-fanxuan",name:s,method:function(e){var t=[];R(t,e),t=t.filter((function(e){return!e[_]&&!e.__node.hidn}));var r=[];i.forEach((function(e){var n=t.findIndex((function(t){return t[g]===e[g]}));-1==n?r.push(e):t.splice(n,1)})),n.props.onReset(l?r.slice(0,1):d(t,r,o),"treeData")}}:t;var c=function(e){"mouseenter"===e.type&&(e.target.style.color=a.color),"mouseleave"===e.type&&(e.target.style.color="")};return S("div",{class:"toolbar-tag",onClick:function(){p(r.method)&&r.method(j,E)},onMouseEnter:c,onMouseLeave:c},e.toolbar.showIcon&&S("i",{class:r.icon}),S("span",null,r.name))})).filter((function(e){return e}))),I=S("div",{class:h?"xm-search":"xm-search dis"},S("i",{class:"xm-iconfont xm-icon-sousuo"}),S("input",{class:"xm-input xm-search-input",placeholder:b}));return A.length||A.push(S("div",{class:"xm-select-empty"},r)),S("div",{onClick:this.blockClick,class:"xm-body-tree"},e.toolbar.show&&P,I,S("div",{class:"scroll-body",style:{maxHeight:e.height}},A),this.state.loading&&S("div",{class:"loading"},S("span",{class:"loader"})))}},{key:"componentDidMount",value:function(){var e=this.base.querySelector(".xm-search-input");e&&(e.addEventListener("compositionstart",this.handleComposition.bind(this)),e.addEventListener("compositionupdate",this.handleComposition.bind(this)),e.addEventListener("compositionend",this.handleComposition.bind(this)),e.addEventListener("input",this.searchInput.bind(this)),this.searchInputRef=e)}},{key:"componentDidUpdate",value:function(){if(this.callback){this.callback=!1;var e=this.props.filterDone;p(e)&&e(this.state.filterValue,this.tempData||[])}}}])&&_e(t.prototype,n),o&&_e(t,o),i}(A);function Ee(e){return(Ee="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Ae(e,t){for(var n=0;n0,w={backgroundColor:"transparent"},k=["xm-option",x?" disabled":"",y?" selected":"",m?"show-icon":"hide-icon"].join(" "),C=_&&"hidden"===e.iconfont.parent?"xm-option-icon-hidden":["xm-option-icon",(v?e.iconfont.half?e.iconfont.half+" xm-custom-icon":0:_&&e.iconfont.parent?e.iconfont.parent+" xm-custom-icon":y?e.iconfont.select?e.iconfont.select:0:e.iconfont.unselect?e.iconfont.unselect+" xm-custom-icon":0)||"xm-iconfont "+(l?"xm-icon-danx":u.strict&&v?"xm-icon-banxuan":"xm-icon-duox")].join(" ");t[f]===n.state.val&&(w.backgroundColor=a.hover);var O={},j={};b&&(O.color=a.color,O.fontWeight=700,j.color=a.color);var E=function(e){"mouseenter"===e.type?t[d]||n.setState({val:t[f]}):"mouseleave"===e.type&&n.setState({val:""})};return S("div",{class:k,style:w,value:t[f],onClick:n.optionClick.bind(n,t,y,x,"line",r),onMouseEnter:E,onMouseLeave:E},m&&S("i",{class:C,style:g,onClick:n.optionClick.bind(n,t,y,x,"checkbox",r)}),S("div",{class:"xm-option-content",style:O,dangerouslySetInnerHTML:{__html:s({data:c,item:t,arr:i,name:t[p],value:t[f]})}}),t[h]&&S("div",{class:"xm-right-arrow",style:j}))}(o,0,y,v)},x=c.map((function(e){return y(e,2,0)})).concat(b).filter((function(e){return e}));return x.length||x.push(S("div",{class:"xm-select-empty"},r)),S("div",{onClick:this.blockClick,class:"xm-body-cascader",style:{width:u.indent+"px",maxHeight:e.height}},x)}},{key:"componentDidMount",value:function(){this.props.onReset("cascader","class")}}])&&Ae(t.prototype,n),o&&Ae(t,o),i}(A);function Te(){return(Te=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&(n=n.slice(0,1),(l.show&&l.strict||s.show&&s.strict)&&this.clearAndReset(o,n,!1)),this.setState({sels:n,dataObj:c,flatData:u})}return this.setState({data:o}),n}},{key:"upDate",value:function(e,t){var n=this.state.dataObj,o=this.props,r=o.prop,i=o.tree,a=o.cascader,l=r.value,s=r.disabled,c=r.children;e.map((function(e){return n["object"===Be(e)?e[l]:e]})).filter((function(e){return e})).forEach((function(e){if(e[s]=!t,i.show&&i.strict||a.show&&a.strict){if(t)for(var n=e;n;)n[s]=!1,n=n.__node.parent;!function e(n){n[s]=!t;var o=n[c];o&&u(o)&&o.forEach((function(t){return e(t)}))}(e)}})),this.setState({dataObj:n})}},{key:"exchangeValue",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.state.dataObj,o=this.props,r=o.prop,i=o.tree,a=o.cascader,l=(o.data,r.children),s=r.value,c=e.map((function(e){return"object"===Be(e)?Fe(Fe({},e),{},{__node:{}}):n[e]})).filter((function(e){return e})),p=ze(c);if(i.show&&i.strict||a.show&&a.strict){var f=function e(t,n){var o=n[l];o&&u(o)&&o.forEach((function(n){-1===c.findIndex((function(e){return e[s]===n[s]}))&&t.push(n),e(t,n)}))},d={};d[l]=c,f(p,d),p=p.filter((function(e){return!0!==e[t.props.prop.optgroup]}))}return p}},{key:"value",value:function(e,t,n,o){!1!==t&&!0!==t&&(t=this.state.show);var r=this.props,i=r.prop,a=r.tree,l=r.cascader,s=this.exchangeValue(e);if(!this.checkMax(s,s)){if(a.show&&a.strict||l.show&&l.strict){var c=this.state.data;this.clearAndReset(c,s,!1),s=this.init({data:c,prop:i},!0)}this.resetSelectValue(s,o||s,!0,n),this.setState({show:t})}}},{key:"clearAndReset",value:function(e,t,n){var o=this,r=this.props.prop,i=r.selected,a=r.disabled,l=r.children,s=r.value;e.forEach((function(e){e[i]=-1!=t.findIndex((function(t){return t[s]===e[s]}))||n;var r=e[l];if(r&&u(r)){o.clearAndReset(r,t,e[i]);var c=r.length,p=r.filter((function(e){return!0===e[i]||!0===e.__node.selected})).length;e.__node.selected=p===c,e.__node.half=p>0&&p0,e.__node.disabled=r.filter((function(e){return!0===e[a]||!0===e.__node.disabled})).length===c}}))}},{key:"load",value:function(e,t,n,o){var r=this,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,a=arguments.length>5?arguments[5]:void 0,l=this.props,s=l.prop,c=l.tree,p=l.cascader,f=s.children,d=s.optgroup,h=s.value,m=s.selected,b=s.disabled;e.forEach((function(e){e.__node={parent:o,level:i,loading:e.__node&&e.__node.loading},a&&(delete e[m],a.find((function(t){return t===e[h]}))&&(e[m]=!0)),t[e[h]]=e,n.push(e);var l=e[f];if(l&&u(l)){var s=l.length;if(s>0){r.load(l,t,n,e,i+1,a),e[d]=!0,(c.show&&c.strict||p.show&&p.strict)&&(!0===e[m]&&(delete e[m],l.forEach((function(e){return e[m]=!0}))),!0===e[b]&&(delete e[b],l.forEach((function(e){return e[b]=!0}))));var y=l.filter((function(e){return!0===e[m]||!0===e.__node.selected})).length;e.__node.selected=y===s,e.__node.half=y>0&&y0,e.__node.disabled=l.filter((function(e){return!0===e[b]||!0===e.__node.disabled})).length===s}}}))}},{key:"resetSelectValue",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2?arguments[2]:void 0,o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=this.props.on;if(p(r)&&this.prepare&&o){var i=r({arr:e,change:t,isAdd:n});if(u(i))return this.value(i,null,!1)}this.setState({sels:e})}},{key:"updateBorderColor",value:function(e){this.setState({tmpColor:e})}},{key:"treeHandler",value:function(e,t,n,o,r){var i=this,a=this.props.prop,l=a.value,s=(a.selected,a.disabled),c=a.children,u=a.optgroup,p=t[c];if(p.filter((function(e){return!(e[s]||e.__node.disabled)})).forEach((function(t){if(t[u])i.treeHandler(e,t,n,o,r);else{var a=e.findIndex((function(e){return e[l]==t[l]}));"del"===o?-1!=a&&(e.splice(a,1),n.push(t)):"half"!==o&&"add"!==o||-1==a&&(e.push(t),n.push(t))}})),r){var f=p.length,d=p.filter((function(t){return-1!==e.findIndex((function(e){return e[l]===t[l]}))||!0===t.__node.selected})).length;t.__node.selected=d===f,t.__node.half=d>0&&d0&&t.length>=l)return this.updateBorderColor(a.maxColor),i&&p(i)&&i(t,e),!0}},{key:"itemClick",value:function(e,t,n,o){var r=this.props,i=(r.theme,r.prop),a=r.radio,l=r.repeat,s=r.clickClose,c=(r.max,r.maxMethod,r.tree),u=r.data,p=ze(this.state.sels),f=i.value,d=(i.selected,i.disabled,i.children),h=i.optgroup;if(!n){if(e[h]&&c.strict){e[d];var m,b=[],y=!0;if(e.__node.selected?(m="del",y=!1):e.__node.half?(m="half",this.treeHandler(p,e,b,m),0===b.length&&(m="del",y=!1)):m="add","half"!=m&&this.treeHandler(p,e,b,m),this.checkMax(b,b))return;p=ze(this.state.sels),b=[],this.treeHandler(p,e,b,m,!0),this.resetSelectValue(p,b,y),this.setState({data:this.state.data})}else if(!t||l&&!o){if(this.checkMax(e,p))return;p=a?[e]:[].concat(ze(p),[e]),this.clearAndReset(u,p,t),this.resetSelectValue(p,[e],!t)}else{var x=p.findIndex((function(t){return t[f]==e[f]}));-1!=x&&(p.splice(x,1),this.resetSelectValue(p,[e],!t))}var v=e.__node.parent;if(v){for(;v;){var g=v[d],_=g.length,w=g.filter((function(e){return-1!==p.findIndex((function(t){return t[f]===e[f]}))||!0===e.__node.selected})).length;v.__node.selected=w===_,v.__node.half=w>0&&w<_||g.filter((function(e){return!0===e.__node.half})).length>0,v=v.__node.parent}this.setState({data:this.state.data})}s&&!o&&this.onClick()}}},{key:"onClick",value:function(e){var t=this;if("relative"!==this.props.model.type)if(this.props.disabled)!1!==this.state.show&&this.setState({show:!1});else{var n=!this.state.show;if(n){if(this.props.show&&0==this.props.show())return;Object.keys(at).filter((function(e){return e!=t.props.el})).forEach((function(e){return at[e].closed()}))}else{if(this.props.hide&&0==this.props.hide())return;this.bodyView.scroll&&this.bodyView.scroll(0,0)}this.setState({show:n}),e&&e.stopPropagation()}}},{key:"onReset",value:function(e,t){var n=this;if("data"===t){var o=e.filter((function(e){return!0===e[n.props.prop.selected]}));this.resetSelectValue(d(o,this.state.sels,this.props.prop),o,!0);var r=[];this.load(e,{},r),this.setState({data:e,flatData:r})}else"sels"===t?this.resetSelectValue(e,e,!0):"append"===t?this.append(e):"delete"===t?this.del(e):"auto"===t?this.auto(e):"treeData"===t?this.value(e,null,!0):"close"===t?this.onClick():"class"===t?this.setState({bodyClass:e}):"labelSearchBlur"===t?this.labelRef.blur(e):"labelSearch"===t&&this.generalRef.labelSearch(e)}},{key:"append",value:function(e){var t=this.exchangeValue(e);this.value(d(t,this.state.sels,this.props.prop),this.props.show,!0,t)}},{key:"del",value:function(e){var t=this.props.prop.value,n=this.state.sels,o=this.exchangeValue(e);o.forEach((function(e){var o=n.findIndex((function(n){return n[t]===e[t]}));-1!=o&&n.splice(o,1)})),this.value(n,this.props.show,!0,o)}},{key:"auto",value:function(e){var t=this,n=this.props.prop.value;e.filter((function(e){return-1!=t.state.sels.findIndex((function(t){return t[n]===e[n]}))})).length==e.length?this.del(e):this.append(e)}},{key:"changeExpandedKeys",value:function(e){var t=this.props,n=t.tree,o=t.prop,r=this.state,i=r.dataObj,a=r.flatData;n.show&&this.treeRef.init({dataObj:i,flatData:a,prop:o,tree:{expandedKeys:e}})}},{key:"calcPosition",value:function(){if(this.state.show&&"fixed"===this.props.model.type){var e=this.base.getBoundingClientRect();return Date.now()-this.state.time>10&&this.setState({time:Date.now()}),{position:"fixed",left:e.x,top:e.y+e.height+4,width:e.width}}return{}}},{key:"componentWillReceiveProps",value:function(e){this.init(e,e.updateData)}},{key:"componentWillMount",value:function(){this.init(this.props,!0)}},{key:"render",value:function(e,t){var n=this,o=e.theme,r=e.prop,i=(e.radio,e.repeat,e.clickClose,e.on,e.max,e.maxMethod,e.content),a=e.disabled,l=e.tree,s={borderColor:o.color},c=t.data,u=t.dataObj,p=t.flatData,f=t.sels,d=t.show,h=t.tmpColor,m=t.bodyClass;a&&(d=!1);var b={style:Fe(Fe({},e.style),d?s:{}),onClick:this.onClick.bind(this),ua:-1!=navigator.userAgent.indexOf("Mac OS")?"mac":"win",size:e.size,tabindex:1};h&&(b.style.borderColor=h,setTimeout((function(){b.style.borderColor="",n.updateBorderColor("")}),300)),r.value;var y=Fe(Fe({},e),{},{data:c,sels:f,ck:this.itemClick.bind(this),title:f.map((function(e){return e[r.name]})).join(","),onReset:this.onReset.bind(this)}),x=Fe(Fe({},e),{},{data:c,dataObj:u,flatData:p,sels:f,ck:this.itemClick.bind(this),show:d,onReset:this.onReset.bind(this)}),v=i?S(ve,x):l.show?S(je,Te({},x,{ref:function(e){return n.treeRef=e}})):e.cascader.show?S(Me,x):S(fe,Te({},x,{ref:function(e){return n.generalRef=e}})),g=this.calcPosition();return S("xm-select",b,S("input",{class:"xm-select-default","lay-verify":e.layVerify,"lay-verType":e.layVerType,"lay-reqText":e.layReqText,name:e.name,value:f.map((function(e){return e[r.value]})).join(",")}),S("i",{class:d?"xm-icon xm-icon-expand":"xm-icon"}),0===f.length&&S("div",{class:"xm-tips"},e.tips),S(te,Te({},y,{ref:function(e){return n.labelRef=e}})),S("div",{class:["xm-body",m,e.model.type,d?"":"dis"].join(" "),style:g,ref:function(e){return n.bodyView=e}},v),a&&S("div",{class:"xm-select-disabled"}))}},{key:"componentDidMount",value:function(){var e=this;this.prepare=!0,this.base.addEventListener("keydown",(function(t){13===t.keyCode&&e.onClick()})),this.input=this.base.querySelector(".xm-select-default");var t=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;t&&new t((function(t){t.forEach((function(t){"attributes"==t.type&&"class"===t.attributeName&&-1!==e.input.className.indexOf("layui-form-danger")&&(e.input.className="xm-select-default",e.base.style.borderColor=e.props.theme.maxColor)}))})).observe(this.input,{attributes:!0});for(var n=this.base;n;){if("FORM"===n.tagName){var o=n.querySelector('button[type="reset"]');o&&o.addEventListener("click",(function(t){e.init(e.props,!0)}));break}n=n.parentElement}}},{key:"componentDidUpdate",value:function(){var e=this.props,t=e.direction,n=e.model;if("relative"!==n.type&&"fixed"!==n.type){var o=this.base.getBoundingClientRect();if("auto"===t){this.bodyView.style.display="block",this.bodyView.style.visibility="hidden";var r=this.bodyView.getBoundingClientRect().height;this.bodyView.style.display="",this.bodyView.style.visibility="";var i=o.y||o.top||0,a=document.documentElement.clientHeight-i-o.height-20;t=a>r||i0&&void 0!==arguments[0]?arguments[0]:"zn",t=We[e]||Je;return{language:e,languageProp:t,data:[],content:"",name:"select",layVerify:"",layVerType:"",layReqText:"",size:"medium",disabled:!1,initValue:null,create:null,tips:t.tips,empty:t.empty,delay:500,searchTips:t.searchTips,filterable:!1,filterMethod:function(e,t,n,o){return!e||-1!=t[o.name].indexOf(e)},remoteSearch:!1,remoteMethod:function(e,t){t([])},direction:"auto",style:{},height:"200px",autoRow:!1,paging:!1,pageSize:10,pageEmptyShow:!0,pageRemote:!1,radio:!1,repeat:!1,clickClose:!1,max:0,maxMethod:function(e,t){},showCount:0,enableKeyboard:!0,toolbar:{show:!1,showIcon:!0,list:["ALL","CLEAR"]},tree:{show:!1,showFolderIcon:!0,showLine:!0,indent:20,expandedKeys:[],strict:!0,lazy:!1,load:null,simple:!1,nodeType:"__node_type",clickExpand:!0,clickCheck:!0},cascader:{show:!1,indent:100,strict:!0},prop:{name:"name",value:"value",selected:"selected",disabled:"disabled",children:"children",optgroup:"optgroup",click:"click"},theme:{color:"#009688",maxColor:"#e54d42",hover:"#f2f2f2"},model:{label:{type:"block",text:{left:"",right:"",separator:", "},block:{showCount:0,showIcon:!0,template:null},count:{template:function(e,t){return"已选中 ".concat(t.length," 项, 共 ").concat(e.length," 项")}}},icon:"show",type:"absolute"},iconfont:{select:"",unselect:"",half:"",parent:""},show:function(){},hide:function(){},template:function(e){e.item,e.sels;var t=e.name;return e.value,t},on:function(e){e.arr,e.item,e.selected}}}(e.language),this.update(e)}},{key:"update",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=!!e.data;this.options=f(this.options,e),this.options.__render_success=!1;var n=this.options.dom;if(n){var o=this.options.data||[];if("function"==typeof o&&(o=o(),this.options.data=o),u(o))return Y(S(Qe,et({},this.options,{__update:Date.now(),updateData:t})),n),this.options.__render_success=!0,this;c("data数据必须为数组类型, 不能是".concat("undefined"==typeof data?"undefined":tt(data),"类型"))}else c("没有找到渲染对象: ".concat(e.el,", 请检查"))}},{key:"reset",value:function(){var e=this.options.el;return this.init(lt[e]),st[e].init(this.options,!0),this}},{key:"opened",value:function(){var e=st[this.options.el];return!e.state.show&&e.onClick(),this}},{key:"closed",value:function(){var e=st[this.options.el];return e.state.show&&e.onClick(),this}},{key:"getValue",value:function(e){var t=this,n=this.options,o=n.tree,r=n.prop,i=n.data,a=st[this.options.el].state.sels,l=a;o.show&&o.strict&&o.simple&&h(i,a,l=[],r);var s=m(l,r.children,["__node"]);return"name"===e?s.map((function(e){return e[t.options.prop.name]})):"nameStr"===e?s.map((function(e){return e[t.options.prop.name]})).join(","):"value"===e?s.map((function(e){return e[t.options.prop.value]})):"valueStr"===e?s.map((function(e){return e[t.options.prop.value]})).join(","):s}},{key:"setValue",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(u(e))return st[this.options.el].value(this.options.radio?e.slice(0,1):e,t,n),this;c("请传入数组结构...")}},{key:"append",value:function(e){if(u(e))return st[this.options.el].append(e),this;c("请传入数组结构...")}},{key:"delete",value:function(e){if(u(e))return st[this.options.el].del(e),this;c("请传入数组结构...")}},{key:"warning",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e||this.options.theme.maxColor;return!0===t?st[this.options.el].base.style.borderColor=n:st[this.options.el].updateBorderColor(n),this}},{key:"getTreeValue",value:function(e,t){var n=this.options,o=n.tree,r=n.cascader,i=n.prop,a=i.value;if(!o.show&&!r.show)return this.getValue(e);for(var l=st[this.options.el].state.sels,s=[],c=o.nodeType,u=function(e,t){s.find((function(t){return t[a]===e[a]}))||((e=Xe({},e))[c]=t,s.push(e))},p=0;pe.length)&&(t=e.length);for(var n=0,o=new Array(t);n span, .signal-loader > span { + background-color: #4aca85; + display: inline-block; +} + +.ball-loader > span:nth-child(1), .ball-loader.sm > span:nth-child(1), .signal-loader > span:nth-child(1), .signal-loader.sm > span:nth-child(1) { + -webkit-animation-delay: 0s; + animation-delay: 0s; +} + +.ball-loader > span:nth-child(2), .ball-loader.sm > span:nth-child(2), .signal-loader > span:nth-child(2), .signal-loader.sm > span:nth-child(2) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.ball-loader > span:nth-child(3), .ball-loader.sm > span:nth-child(3), .signal-loader > span:nth-child(3), .signal-loader.sm > span:nth-child(3) { + -webkit-animation-delay: 0.15s; + animation-delay: 0.15s; +} + +.ball-loader > span:nth-child(4), .ball-loader.sm > span:nth-child(4), .signal-loader > span:nth-child(4), .signal-loader.sm > span:nth-child(4) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.ball-loader > span { + width: 20px; + height: 20px; + margin: 0 3px; + border-radius: 50%; + transform: scale(0); + -ms-transform: scale(0); + -webkit-transform: scale(0); + animation: ball-load 1s ease-in-out infinite; + -webkit-animation: 1s ball-load ease-in-out infinite; +} + +@-webkit-keyframes ball-load { + 0% { + transform: scale(0); + -webkit-transform: scale(0); + } + 50% { + transform: scale(1); + -webkit-transform: scale(1); + } + 100% { + transform: scale(0); + -webkit-transform: scale(0); + } +} + +@keyframes ball-load { + 0% { + transform: scale(0); + -webkit-transform: scale(0); + } + 50% { + transform: scale(1); + -webkit-transform: scale(1); + } + 100% { + transform: scale(0); + -webkit-transform: scale(0); + } +} + +.ball-loader.sm > span { + width: 15px; + height: 15px; + margin: 0 2px; +} + +.layui-input { + border-color: #C9C9C9 !important; +} + +.layui-input:focus { + border-color: #009688 !important; +} + +.layui-btn-sm { + padding: 0 8px 0 5px; +} + +.page-wrapper { + width: 900px; + margin: 0 auto; + padding: 0 15px; +} + +.right-desc { + position: absolute; + right: 0; + top: 0; + width: 280px; + padding-top: 6px; +} + +.desc-item { + background-color: #FFF8DB; + color: #40485b; + padding: 10px 15px; + margin: 15px 15px 0 0; + font-size: 12px; + line-height: 1.6; + border-radius: 4px; + box-shadow: 0px 0px 6px rgba(0, 0, 0, .15); +} + +html, body { + min-width: 1200px; + background-color: #fff; + position: relative; +} + +@media screen and (max-width: 1480px) { + .page-wrapper { + margin: 0 280px auto auto; + } +} \ No newline at end of file diff --git a/public/static/admin/tree/css/icon_date.png b/public/static/admin/tree/css/icon_date.png new file mode 100644 index 0000000000000000000000000000000000000000..5a50673e0975b2bbc35c0e11d4848adcc1fb4dce GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoL!3HEBKfAITNU;<KmG59{twCv{ftOs zW4N;Q)!OTY3>;>=*3S97Q-7&|V4&B^*_(MTPLEp{EO2-FMERq>C$<(UCH;z0ntPpj zuhw;+PCLge`!D{>6<6ENoV!-|k>yvlBgwa_tr*1kXQoW_{Rng%1B0ilpUXO@geCxM C4sr(o literal 0 HcmV?d00001 diff --git a/public/static/admin/tree/css/treeTable.css b/public/static/admin/tree/css/treeTable.css new file mode 100644 index 0000000..69f5588 --- /dev/null +++ b/public/static/admin/tree/css/treeTable.css @@ -0,0 +1,437 @@ +/** 最外层容器 */ +.ew-tree-table { + margin: 10px 0; + position: relative; + border: 1px solid #e6e6e6; + border-bottom: none; + border-right: none; +} + +.ew-tree-table:before, .ew-tree-table:after, .ew-tree-table .ew-tree-table-head:after { + content: ""; + background-color: #e6e6e6; + position: absolute; + right: 0; + bottom: 0; +} + +.ew-tree-table:before { + width: 1px; + top: 0; + z-index: 1; +} + +.ew-tree-table:after, .ew-tree-table .ew-tree-table-head:after { + height: 1px; + left: 0; +} + +.ew-tree-table .layui-table { + margin: 0; + position: relative; + table-layout: fixed; +} + +/** 表格 */ +.ew-tree-table .layui-table td, .ew-tree-table .layui-table th { + border-top: none; + border-left: none; + padding: 0 !important; +} + +.ew-tree-table .ew-tree-table-box { + overflow: auto; + position: relative; +} + +.ew-tree-table .ew-tree-table-head { + overflow: hidden; + box-sizing: border-box; + background-color: #f2f2f2; + position: relative; +} + +/** loading */ +.ew-tree-table .ew-tree-table-loading { + padding: 10px 0; + text-align: center; +} + +.ew-tree-table .ew-tree-table-loading > i { + color: #999; + font-size: 30px; +} + +.ew-tree-table .ew-tree-table-loading.ew-loading-float { + position: absolute; + top: 0; + left: 0; + right: 0; +} + +/** 空数据 */ +.ew-tree-table .ew-tree-table-empty { + color: #666; + font-size: 14px; + padding: 18px 0; + text-align: center; + display: none; +} + +/** 单元格 */ +.ew-tree-table-cell.ew-tree-tips-open { + position: absolute; + top: 0; + left: 0; + padding: 0; + z-index: 19891015; + background-color: #fff; + box-shadow: 3px 3px 8px rgba(0, 0, 0, .15); +} + +thead .ew-tree-table-cell.ew-tree-tips-open { + background-color: #f2f2f2; +} + +.ew-tree-table-cell.ew-tree-tips-open.ew-show-left { + right: 0; + left: auto; + box-shadow: -3px 3px 8px rgba(0, 0, 0, .15); +} + +.ew-tree-table-cell.ew-tree-tips-open.ew-show-bottom { + bottom: 0; + top: auto; + box-shadow: 3px -3px 8px rgba(0, 0, 0, .15); +} + +.ew-tree-table-cell.ew-tree-tips-open.ew-show-left.ew-show-bottom { + box-shadow: -3px -3px 8px rgba(0, 0, 0, .15); +} + +.ew-tree-table-cell > .ew-tree-tips-c { + position: absolute; + right: -6px; + top: -3px; + width: 22px; + height: 22px; + line-height: 22px; + font-size: 16px; + color: #fff; + background-color: #666; + border-radius: 50%; + text-align: center; + cursor: pointer; + display: none; +} + +table tr:first-child .ew-tree-table-cell > .ew-tree-tips-c { + top: 0; +} + +.ew-tree-table-cell.ew-tree-tips-open > .ew-tree-tips-c { + display: block; +} + +.ew-tree-table-cell.ew-tree-tips-open.ew-show-left > .ew-tree-tips-c { + left: -6px; + right: auto; +} + +.ew-tree-table-cell > .ew-tree-table-cell-content { + padding: 5px 15px; + line-height: 28px; +} + +[lay-size="lg"] .ew-tree-table-cell > .ew-tree-table-cell-content { + line-height: 40px; +} + +[lay-size="sm"] .ew-tree-table-cell > .ew-tree-table-cell-content { + padding: 1px 15px; +} + +.ew-tree-table-cell.single-line > .ew-tree-table-cell-content { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.ew-tree-table-cell.ew-tree-tips-open > .ew-tree-table-cell-content { + overflow: auto; + padding: 9px 15px; + height: auto; + min-height: 100%; + max-height: 110px; + line-height: inherit; + max-width: 260px; + width: 200px; + width: max-content; + width: -moz-max-content; + box-sizing: border-box; + white-space: normal; +} + +.ew-tree-table-cell > .layui-table-grid-down { + box-sizing: border-box; +} + +/** 图标列 */ +.ew-tree-table .ew-tree-pack { + cursor: pointer; + line-height: 16px; +} + +.ew-tree-table .ew-tree-pack > .layui-icon, .ew-tree-table .ew-tree-pack > .ew-tree-icon { + margin-right: 5px; +} + +.ew-tree-table .ew-tree-pack > * { + vertical-align: middle; +} + +/* 缩进 */ +.ew-tree-table .ew-tree-table-indent { + margin-right: 5px; + padding-left: 16px; +} + +/* 箭头 */ +.ew-tree-table .ew-tree-table-arrow:before { + content: "\e623"; +} + +.ew-tree-table .ew-tree-table-open .ew-tree-table-arrow:before { + content: "\e625"; +} + +.ew-tree-table .ew-tree-table-arrow.arrow2 { + font-size: 12px; + font-weight: 600; + line-height: 16px; + height: 16px; + width: 16px; + display: inline-block; + text-align: center; + color: #888; +} + +.ew-tree-table .ew-tree-table-arrow.arrow2:before { + content: "\e602"; +} + +.ew-tree-table .ew-tree-table-open .ew-tree-table-arrow.arrow2:before { + content: "\e61a"; +} + +.ew-tree-table-arrow.ew-tree-table-arrow-hide { + visibility: hidden; +} + +/* 箭头变加载中状态 */ +.ew-tree-table .ew-tree-table-loading > td .ew-tree-table-arrow:before { + content: "\e63d" !important; +} + +.ew-tree-table .ew-tree-table-loading > td .ew-tree-table-arrow { + margin-right: 0; +} + +.ew-tree-table .ew-tree-table-loading > td .ew-tree-table-arrow + * { + margin-left: 5px; +} + +.ew-tree-table .ew-tree-table-loading * { + pointer-events: none !important; +} + +/** 折叠行 */ +.ew-tree-table .ew-tree-tb-hide { + display: none; +} + +/** 特殊列调整 */ +.ew-tree-table td[data-type="numbers"] > .ew-tree-table-cell, +.ew-tree-table th[data-type="numbers"] > .ew-tree-table-cell, +.ew-tree-table td[data-type="checkbox"] > .ew-tree-table-cell, +.ew-tree-table th[data-type="checkbox"] > .ew-tree-table-cell, +.ew-tree-table td[data-type="radio"] > .ew-tree-table-cell, +.ew-tree-table th[data-type="radio"] > .ew-tree-table-cell, +.ew-tree-table td[data-type="space"] > .ew-tree-table-cell, +.ew-tree-table th[data-type="space"] > .ew-tree-table-cell { + padding-left: 0; + padding-right: 0; +} + +/* 单元格内表单元素样式调整 */ +.ew-tree-table .layui-form-switch, +.ew-tree-table .layui-form-radio { + margin: 0; +} + +/* checkbox列调整 */ +.ew-tree-table-checkbox + .layui-form-checkbox { + padding: 0; +} + +.ew-tree-table-checkbox + .layui-form-checkbox > .layui-icon { + font-weight: 600; + color: transparent; + transition: background-color .1s linear; + -webkit-transition: background-color .1s linear; +} + +.ew-tree-table-checkbox + .layui-form-checkbox.layui-form-checked > .layui-icon { + color: #fff; +} + +/* checkbox半选状态 */ +.ew-form-indeterminate + .layui-form-checkbox .layui-icon:before { + content: ""; + width: 10px; + height: 2px; + background-color: #f1f1f1; + position: absolute; + top: 50%; + left: 50%; + margin: -1px 0 0 -5px; +} + +/* radio列调整 */ +.ew-tree-table-radio + .layui-form-radio { + padding: 0; + height: 20px; + line-height: 20px; +} + +.ew-tree-table-radio + .layui-form-radio > i { + margin: 0; + height: 20px; + font-size: 20px; + line-height: 20px; +} + +/** 单元格编辑 */ +.ew-tree-table .layui-table td[data-edit] { + cursor: text; +} + +.ew-tree-table .ew-tree-table-edit { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + border-radius: 0; + box-shadow: 1px 1px 20px rgba(0, 0, 0, .15); +} + +.ew-tree-table .ew-tree-table-edit:focus { + border-color: #5FB878 !important; +} + +.ew-tree-table .ew-tree-table-edit.layui-form-danger { + border-color: #FF5722 !important; +} + +/** 搜索数据隐藏行 */ +.ew-tree-table tr.ew-tree-table-filter-hide { + display: none !important; +} + +/** 头部工具栏 */ +.ew-tree-table .ew-tree-table-tool { + min-height: 50px; + line-height: 30px; + padding: 10px 15px; + box-sizing: border-box; + background-color: #f2f2f2; + border-bottom: 1px solid #e6e6e6; +} + +.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-right { + float: right; +} + +.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-item { + position: relative; + color: #333; + width: 26px; + height: 26px; + line-height: 26px; + text-align: center; + margin-left: 10px; + display: inline-block; + border: 1px solid #ccc; + box-sizing: border-box; + vertical-align: middle; + -webkit-transition: .3s all; + transition: .3s all; + cursor: pointer; +} + +.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-item:first-child { + margin-left: 0; +} + +.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-item:hover { + border-color: #999; +} + +.ew-tree-table .ew-tree-table-tool-right .layui-table-tool-panel { + left: auto; + right: -1px; + z-index: 9999; +} + +/* 列宽拖拽调整 */ +.ew-tree-table .ew-tb-resize { + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 10px; + cursor: col-resize; +} + +.ew-tree-table-resizing { + cursor: col-resize; + -ms-user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + user-select: none; +} + +/* 辅助样式 */ +.ew-tree-table .layui-form-switch { + margin: 0; +} + +.ew-tree-table .pd-tb-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.ew-tree-table .break-all { + word-break: break-all !important; +} + +/** 扩展图标 */ +.ew-tree-table .ew-tree-icon-folder:after, .ew-tree-table .ew-tree-icon-file:after { + content: ""; + padding: 2px 10px; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; + background-repeat: no-repeat; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAE6UlEQVR4Xu2ZPYhcVRiGny9hC0FsTEBCGkFTWIQE/IlpgmKpWAiLyR0XLbYTxEKxkCAEhRCxEOwsjJnJioKIYClWKgqiskIIaCoLYyASVJT87JGspN37LrOXvec777Tzzrnvz7Nn2dnAr6YbiKbTOzwGoHEIDIABaLyBxuP7BjAAjTfQeHzfAAag8QYaj+8bwAA03kDj8X0DGIDGG2g8/lw3QFlhD9fZN7oOF7gYT3NudL5GaGjTAJQP2c1VXgIOExyGkf4/oXCe4I3oeH+EvY/G0qYAKFOWCV4Hdo8mQb+RL7jBE7HE3/3S9hQyAGXGCeDVSiv6lqscief4t1L/g9mWAChTHiD4ZrTXvVbPu9GxrEnbUWkAzPgeOJCglsXo+ChBji2L0AtAmfEgrP/0Z3hdZoF7Y5HLGcJsRQYFgLeAF7fiYSM540x0LI3Ey7bb6AdgytcEh7bd6VYa2MGhOJrmVpurmX4AZlwCds31lPF9+AI32O8/DYUvccqUKwR3jG/DuR29Gd36F1pNv/pvgKwAFK5RuC+e4eeWCWgXgJurFz6LCY8bgA0aSPwr4P/UhVNc43ir3xK2fQPcAr/wO/AewU/Ar6xRqroVdvAnC6zGIlc369sAbLax8er/ofAJOzkVR9e/uZVeBkCqqTrRyeh4RXFtAJSWatQUno0Jp/usG4C+hup9/yJ72BuPcH2jCAag3oEV50vRccYAKFXl1LwdHS8YgJzj9qcqfBoTnjQA/VVlVXwXHfcbgKzz9uf6IToOGoD+orIqDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzLUFAMy4BOwSH2jZmBoorMaE/RtZij6/ZcoFgrv7dH5/lA38Eh33zAfAjM+BR0cZz6Y2bqDwY0w4MB8AU04SvOyuq2zg4+h4aj4AzvIwha+qjN+66cLzMeGduQC4+eEy4zywr/U+K8t/hQX2xiJ/zQ/ACgdZ40vgtspKaNducCyOsdJXQO9fAbcOKGc5whofENzVd6jf3/YGTkTHccWFDMD6r4LT3MlOloHHCB4CblceYs3gDfxB4TeCcxReiwmr6hM3BYB6qHX1NGAA6tlqEKcGYJBa6znUANSz1SBODcAgtdZzqAGoZ6tBnBqAQWqt51ADUM9Wgzg1AIPUWs+hBqCerQZxagAGqbWeQw1APVsN4tQADFJrPYcagHq2GsTpf+KxwJB5Cd5mAAAAAElFTkSuQmCC"); +} + +.ew-tree-table tr.ew-tree-table-open > td .ew-tree-icon-folder:after { + background-image: url("data:image/png;base64,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") +} + +.ew-tree-table .ew-tree-icon-file:after { + background-image: url("data:image/png;base64,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") +} diff --git a/public/static/admin/tree/treeTable.js b/public/static/admin/tree/treeTable.js new file mode 100644 index 0000000..f795756 --- /dev/null +++ b/public/static/admin/tree/treeTable.js @@ -0,0 +1,2265 @@ +/** 树形表格3.x Created by wangfan on 2020-05-12 https://gitee.com/whvse/treetable-lay */ + +layui.define(['laytpl', 'form', 'util'], function (exports) { + var $ = layui.jquery; + var laytpl = layui.laytpl; + var form = layui.form; + var util = layui.util; + var device = layui.device(); + var MOD_NAME = 'treeTable'; // 模块名 + var _instances = {}; // 记录所有实例 + + /* 表格默认参数 */ + var defaultOption = { + elem: undefined, // 容器 + cols: undefined, // 列参数 + url: undefined, // url模式请求 + method: undefined, // url模式请求方式 + where: undefined, // url模式请求条件 + contentType: undefined, // url模式请求类型 + headers: undefined, // url模式请求headers + parseData: undefined, // url模式处理请求数据 + request: {pidName: 'pid'}, // url模式请求字段自定义 + toolbar: undefined, // 表头工具栏 + defaultToolbar: undefined, // 表头工具栏右侧按钮 + width: undefined, // 容器宽度 + height: undefined, // 容器高度 + cellMinWidth: 90, // 单元格最小宽度 + done: undefined, // 数据处理完回调 + data: undefined, // 直接赋值数据 + title: undefined, // 定义table大标题,文件导出会用到 + skin: undefined, // 表格风格 + even: undefined, // 是否开启隔行变色 + size: undefined, // 表格尺寸 + text: { + none: '无数据' // 空数据提示 + }, + reqData: undefined, // 自定义加载数据方法 + useAdmin: false, // 是否使用admin.ajax + tree: { + idName: 'id', // id的字段名 + pidName: 'pid', // pid的字段名 + childName: 'children', // children的字段名 + haveChildName: 'haveChild', // 是否有children标识的字段名 + haveChildReverse: false, // 是否将children标识的字段取反 + openName: 'open', // 是否默认展开的字段名 + iconIndex: 0, // 图标列的索引 + arrowType: undefined, // 折叠箭头类型 + onlyIconControl: undefined, // 仅点击图标控制展开折叠 + getIcon: function (d) { // 自定义图标 + var haveChild = d[this.haveChildName]; + if (haveChild !== undefined) { + haveChild = haveChild === true || haveChild === 'true'; + if (this.haveChildReverse) haveChild = !haveChild; + } + else if (d[this.childName]) haveChild = d[this.childName].length > 0; + if (haveChild) return ''; + else return ''; + } + } + }; + /* 列默认参数 */ + var colDefaultOption = { + field: undefined, // 字段名 + title: undefined, // 标题 + width: undefined, // 宽度 + minWidth: undefined, // 最小宽度 + type: 'normal', // 列类型 + fixed: undefined, // 固定列 + hide: undefined, // 是否初始隐藏列 + unresize: undefined, // 禁用拖拽列宽 + style: undefined, // 单元格样式 + align: undefined, // 对齐方式 + colspan: undefined, // 单元格所占的列数 + rowspan: undefined, // 单元格所占的行数 + templet: undefined, // 自定义模板 + toolbar: undefined, // 工具列 + 'class': undefined, // 单元格class + singleLine: undefined // 是否一行显示 + }; + + /** TreeTable类构造方法 */ + var TreeTable = function (options) { + _instances[options.elem.substring(1)] = this; + this.reload(options); + }; + + /** + * 根据ID查找数据 + * @param id 数据条目的ID + */ + TreeTable.prototype.findDataById = function (id) { + var options = this.options; + function each(data) { + for (var i = 0; i < data.length; i++) { + if (data[i][options.tree.idName] === id) return data[i]; + if (data[i][options.tree.childName]) { + var res = each(data[i][options.tree.childName]); + if (res) return res; + } + } + } + return each(options.data); + } + + /** 参数设置 */ + TreeTable.prototype.initOptions = function (opt) { + var that = this; + + // 处理特殊列 + function initCol(item) { + if (!item.INIT_OK) item = $.extend({INIT_OK: true}, colDefaultOption, item); + // 特殊列处理 + if (item.type === 'space') { // 空列 + if (!item.width) item.width = 15; + item.minWidth = item.width; + } else if (item.type === 'numbers') { // 序号列 + if (!item.width) item.width = 40; + item.minWidth = item.width; + if (!item.singleLine) item.singleLine = false; + if (!item.unresize) item.unresize = true; + if (!item.align) item.align = 'center'; + } else if (item.type === 'checkbox' || item.type === 'radio') { // 复/单选框列 + if (!item.width) item.width = 48; + item.minWidth = item.width; + if (!item.singleLine) item.singleLine = false; + if (!item.unresize) item.unresize = true; + if (!item.align) item.align = 'center'; + } + if (item.toolbar) item.type = 'tool'; + return item; + } + + // 初始化列参数 + if ('Array' !== isClass(opt.cols[0])) opt.cols = [opt.cols]; + + // 恢复cols参数初始状态 + for (var m = 0; m < opt.cols.length; m++) { + for (var n = 0; n < opt.cols[m].length; n++) { + opt.cols[m][n].INIT_OK = undefined; + opt.cols[m][n].key = undefined; + opt.cols[m][n].colGroup = undefined; + opt.cols[m][n].HAS_PARENT = undefined; + opt.cols[m][n].parentKey = undefined; + opt.cols[m][n].PARENT_COL_INDEX = undefined; + } + } + + // cols参数处理 + var colArrays = [], colIndex = 0; + for (var i1 = 0; i1 < opt.cols.length; i1++) { + var item1 = opt.cols[i1]; + for (var i2 = 0; i2 < item1.length; i2++) { + var item2 = item1[i2]; + if (!item2) { + item1.splice(i2, 1); + continue; + } + item2 = initCol(item2); + // 合并单元格处理 + item2.key = i1 + '-' + i2; + var CHILD_COLS = undefined; + if (item2.colGroup || item2.colspan > 1) { + item2.colGroup = true; + item2.type = 'group'; + CHILD_COLS = []; + colIndex++; + var childIndex = 0; + for (var i22 = 0; i22 < opt.cols[i1 + 1].length; i22++) { + var item22 = $.extend({INIT_OK: true}, colDefaultOption, opt.cols[i1 + 1][i22]); + if (item22.HAS_PARENT || (childIndex > 1 && childIndex == item2.colspan)) { + opt.cols[i1 + 1][i22] = item22; + continue; + } + item22.HAS_PARENT = true; + item22.parentKey = i1 + '-' + i2; + item22.key = (i1 + 1) + '-' + i22; + item22.PARENT_COL_INDEX = colIndex; + item22 = initCol(item22); + CHILD_COLS.push(item22); + childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1); + opt.cols[i1 + 1][i22] = item22; + } + } + item2.CHILD_COLS = CHILD_COLS; + if (!item2.PARENT_COL_INDEX) colArrays.push(item2); + opt.cols[i1][i2] = item2; + } + } + this.options = $.extend(true, {}, defaultOption, opt); + this.options.colArrays = colArrays; + + // url加载模式转为reqData模式 + if (this.options.url) { + this.options.reqData = function (data, callback) { + if (!that.options.where) that.options.where = {}; + if (data) that.options.where[that.options.request.pidName] = data[that.options.tree.idName]; + (that.options.useAdmin ? layui.admin : $).ajax({ + url: that.options.url, + data: that.options.contentType && that.options.contentType.indexOf('application/json') === 0 ? JSON.stringify(that.options.where) : that.options.where, + headers: that.options.headers, + type: that.options.method, + dataType: 'json', + contentType: that.options.contentType, + success: function (res) { + if (that.options.parseData) res = that.options.parseData(res); + if (res.code == 0) callback(res.data); + else callback(res.msg || '加载失败'); + }, + error: function (xhr) { + callback(xhr.status + ' - ' + xhr.statusText); + } + }); + }; + } else if (this.options.data && this.options.data.length > 0 && this.options.tree.isPidData) { // pid形式数据转children形式 + this.options.data = tt.pidToChildren(this.options.data, this.options.tree.idName, this.options.tree.pidName, this.options.tree.childName); + } + + // toolbar参数处理 + if ('default' === this.options.toolbar) { + this.options.toolbar = [ + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ' + ].join(''); + } + if (this.options.defaultToolbar === undefined) this.options.defaultToolbar = ['filter', 'exports', 'print']; + + // 自定义图标参数处理 + if (typeof this.options.tree.getIcon === 'string') { + var icon = this.options.tree.getIcon; + this.options.tree.getIcon = function (d) { + if (icon !== 'ew-tree-icon-style2') return icon; + var haveChild = d[this.haveChildName]; + if (haveChild !== undefined) { + haveChild = haveChild === true || haveChild === 'true'; + if (this.haveChildReverse) haveChild = !haveChild; + } + else if (d[this.childName]) haveChild = d[this.childName].length > 0; + if (haveChild) return ''; + else return ''; + } + } + }; + /** 初始化表格 */ + TreeTable.prototype.init = function () { + var options = this.options; + var $elem = $(options.elem); // 原始表格 + var tbFilter = options.elem.substring(1); // 表格的filter + // 第一次生成树表格dom + $elem.removeAttr('lay-filter'); + if ($elem.next('.ew-tree-table').length === 0) { + $elem.css('display', 'none'); + $elem.after([ + '
    ', + ' ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', options.text.none || '', '
    ', + '
    ', + '
    ' + ].join('')); + } + // 获取各个组件 + var components = this.getComponents(); + + // 基础参数设置 + if (options.skin) components.$table.attr('lay-skin', options.skin); + if (options.size) components.$table.attr('lay-size', options.size); + if (options.even) components.$table.attr('lay-even', options.even); + + // 头部工具栏 + components.$toolbar.empty(); + if (options.toolbar === false || options.toolbar === undefined) { + components.$toolbar.hide(); + } else { + components.$toolbar.show(); + if (typeof options.toolbar === 'string') { + laytpl($(options.toolbar).html()).render({}, function (html) { + components.$toolbar.html('
    ' + html + '
    '); + }); + } + var tbRights = ['
    ']; + for (var i = 0; i < options.defaultToolbar.length; i++) { + var tbItem; + if ('filter' === options.defaultToolbar[i]) { + tbItem = {title: '筛选', layEvent: 'LAYTABLE_COLS', icon: 'layui-icon-cols'}; + } else if ('exports' === options.defaultToolbar[i]) { + tbItem = {title: '导出', layEvent: 'LAYTABLE_EXPORT', icon: 'layui-icon-export'}; + } else if ('print' === options.defaultToolbar[i]) { + tbItem = {title: '打印', layEvent: 'LAYTABLE_PRINT', icon: 'layui-icon-print'}; + } else { + tbItem = options.defaultToolbar[i]; + } + if (tbItem) { + tbRights.push('
    '); + tbRights.push('
    '); + } + } + components.$toolbar.append(tbRights.join('') + '
    '); + } + + // 固定宽度 + if (options.width) { + components.$view.css('width', options.width); + components.$tHeadGroup.css('width', options.width); + components.$tBodyGroup.css('width', options.width); + } + // 表格尺寸设置 + var colgroupHtml = this.resize(true); + // 生成thead + var headHtml = '' + this.renderBodyTh() + ''; + + // 渲染表头及空的表主体的结构 + components.$tBodyGroup.children('style').remove(); + if (options.height) { // 固定表头 + components.$tHead.html(colgroupHtml + headHtml); + components.$tBody.html(colgroupHtml + ''); + if (options.height.indexOf('full-') === 0) { // 差值高度 + var h = parseFloat(options.height.substring(5)) + components.$toolbar.outerHeight() + + components.$tHeadGroup.outerHeight() + 1; + components.$tBodyGroup.append([ + '' + ].join('')); + components.$tBodyGroup.data('full', h); + components.$tBodyGroup.css('height', ''); + } else { // 固定高度 + components.$tBodyGroup.css('height', options.height); + components.$tBodyGroup.data('full', ''); + } + components.$tHeadGroup.show(); + } else { + components.$tHeadGroup.hide(); + var trH = {lg: 50, sm: 30, md: 38}; + components.$tBodyGroup.append([ + '' + ].join('')); + components.$tBody.html(colgroupHtml + headHtml + ''); + } + form.render('checkbox', tbFilter); // 渲染表头的表单元素 + + // 默认隐藏列修正colspan + function patchHide($tr) { + var parentKey = $tr.data('parent'), pCol; + if (!parentKey) return; + var $parent = components.$table.children('thead').children('tr').children('[data-key="' + parentKey + '"]'); + var colspan = $parent.attr('colspan') - 1; + $parent.attr('colspan', colspan); + if (colspan === 0) $parent.addClass('layui-hide'); + patchHide($parent); + } + + components.$table.children('thead').children('tr').children('th.layui-hide').each(function () { + patchHide($(this)); + }); + + // 渲染数据 + if (options.reqData) { // 异步加载 + this.options.data = undefined; + this.renderBodyAsync(); + } else if (options.data && options.data.length > 0) { + this.renderBodyData(options.data); + } else { + components.$loading.hide(); + components.$empty.show(); + } + }; + + /** 绑定各项事件 */ + TreeTable.prototype.bindEvents = function () { + var that = this; + var options = this.options; + var components = this.getComponents(); + var $allBody = components.$table.children('tbody'); + + /* 行事件公共返回对象 */ + var member = function (ext) { + // 获取行dom + var $tr = $(this); + if (!$tr.is('tr')) { + var $temp = $tr.parent('tr'); + if ($temp.length > 0) $tr = $temp; + else $tr = $tr.parentsUntil('tr').last().parent(); + } + var data = that.getDataByTr($tr); // 行对应数据 + var obj = { + tr: $tr, + data: data, + del: function () { // 删除行 + var index = $tr.data('index'); + var indent = parseInt($tr.data('indent')); + // 删除子级 + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= indent) return false; + $(this).remove(); + }); + // 更新后面同辈的index + var indexLength = (typeof index === 'number' ? 1 : index.split('-').length); + $tr.nextAll('tr').each(function () { + var $this = $(this); + if (parseInt($this.data('indent')) < indent) return false; + var _index = $this.data('index').toString().split('-'); + _index[indexLength - 1] = parseInt(_index[indexLength - 1]) - 1; + $this.data('index', _index.join('-')); + }); + // 删除当前行 + var $pTr = $tr.prevAll('tr'); + that.del(undefined, index); + $tr.remove(); + that.renderNumberCol(); // 渲染序号列 + // 联动父级多选框 + $pTr.each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd >= indent) return true; + that.checkParentCB($(this)); + indent = tInd; + }); + that.checkChooseAllCB(); // 联动全选框 + if (options.data.length === 0) components.$empty.show(); + updateFixedTbHead(components.$view); // 更新滚动条补丁 + }, + update: function (fields) { // 修改行 + data = $.extend(true, data, fields); + var indent = parseInt($tr.data('indent')); + that.renderBodyTr(data, indent, undefined, $tr); // 更新界面 + form.render(null, components.filter); // 渲染表单元素 + that.renderNumberCol(); // 渲染序号列 + // 联动父级多选框 + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd >= indent) return true; + that.checkParentCB($(this)); + indent = tInd; + }); + that.checkChooseAllCB(); // 联动全选框 + } + }; + return $.extend(obj, ext); + }; + + // 绑定折叠展开事件 + $allBody.off('click.fold').on('click.fold', '.ew-tree-pack', function (e) { + layui.stope(e); + var $tr = $(this).parentsUntil('tr').last().parent(); + if ($tr.hasClass('ew-tree-table-loading')) return; // 已是加载中 + var haveChild = $tr.data('have-child'); + if (haveChild !== true && haveChild !== 'true') return; // 子节点 + var open = $tr.hasClass('ew-tree-table-open'); + var data = that.getDataByTr($tr); + if (!open && !data[options.tree.childName]) { + that.renderBodyAsync(data, $tr); + } else { + data[options.tree.openName] = toggleRow($tr); + } + }); + + // 绑定lay-event事件 + $allBody.off('click.tool').on('click.tool', '*[lay-event]', function (e) { + layui.stope(e); + var $this = $(this); + layui.event.call(this, MOD_NAME, 'tool(' + components.filter + ')', member.call(this, { + event: $this.attr('lay-event') + })); + }); + + // 绑定单选框事件 + form.on('radio(' + components.radioFilter + ')', function (data) { + var d = that.getDataByTr($(data.elem).parentsUntil('tr').last().parent()); + that.removeAllChecked(); + d.LAY_CHECKED = true; // 同时更新数据 + d.LAY_INDETERMINATE = false; + layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')', + {checked: true, data: d, type: 'one'}); + }); + + // 绑定复选框事件 + form.on('checkbox(' + components.checkboxFilter + ')', function (data) { + var checked = data.elem.checked; + var $cb = $(data.elem); + var $layCb = $cb.next('.layui-form-checkbox'); + // 如果是半选状态,点击全选 + if (!checked && $cb.hasClass('ew-form-indeterminate')) { + checked = true; + $cb.prop('checked', checked); + $layCb.addClass('layui-form-checked'); + $cb.removeClass('ew-form-indeterminate'); + } + var $tr = $cb.parentsUntil('tr').last().parent(); + var d = that.getDataByTr($tr); + d.LAY_CHECKED = checked; // 同时更新数据 + d.LAY_INDETERMINATE = false; + // 联动操作 + if (d[options.tree.childName] && d[options.tree.childName].length > 0) { + that.checkSubCB($tr, checked); // 联动子级 + } + var indent = parseInt($tr.data('indent')); + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < indent) { + that.checkParentCB($(this)); // 联动父级 + indent = tInd; + } + }); + that.checkChooseAllCB(); // 联动全选框 + // 回调事件 + layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')', + {checked: checked, data: d, type: 'more'}); + }); + + // 绑定全选复选框事件 + form.on('checkbox(' + components.chooseAllFilter + ')', function (data) { + var checked = data.elem.checked; + var $cb = $(data.elem); + var $layCb = $cb.next('.layui-form-checkbox'); + if (!options.data || options.data.length === 0) { // 如果数据为空 + $cb.prop('checked', false); + $layCb.removeClass('layui-form-checked'); + $cb.removeClass('ew-form-indeterminate'); + return; + } + // 如果是半选状态,点击全选 + if (!checked && $cb.hasClass('ew-form-indeterminate')) { + checked = true; + $cb.prop('checked', checked); + $layCb.addClass('layui-form-checked'); + $cb.removeClass('ew-form-indeterminate'); + } + layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')', {checked: checked, type: 'all'}); + that.checkSubCB(components.$tBody.children('tbody'), checked); // 联动操作 + }); + + // 绑定行单击事件 + $allBody.off('click.row').on('click.row', 'tr', function () { + layui.event.call(this, MOD_NAME, 'row(' + components.filter + ')', member.call(this, {})); + }); + + // 绑定行双击事件 + $allBody.off('dblclick.rowDouble').on('dblclick.rowDouble', 'tr', function () { + layui.event.call(this, MOD_NAME, 'rowDouble(' + components.filter + ')', member.call(this, {})); + }); + + // 绑定单元格点击事件 + $allBody.off('click.cell').on('click.cell', 'td', function (e) { + var $td = $(this); + var type = $td.data('type'); + // 判断是否是复选框、单选框列 + if (type === 'checkbox' || type === 'radio') return layui.stope(e); + var edit = $td.data('edit'); + var field = $td.data('field'); + if (edit) { // 开启了单元格编辑 + layui.stope(e); + if ($allBody.find('.ew-tree-table-edit').length > 0) return; + var index = $td.data('index'); + var indent = $td.find('.ew-tree-table-indent').length; + var d = that.getDataByTr($td.parent()); + if ('text' === edit || 'number' === edit) { // 文本框 + var $input = $(''); + $input[0].value = d[field]; + $td.append($input); + $input.focus(); + $input.blur(function () { + var value = $(this).val(); + if (value == d[field]) return $(this).remove(); + var rs = layui.event.call(this, MOD_NAME, 'edit(' + components.filter + ')', member.call(this, + {value: value, field: field})); + if (rs === false) { + $(this).addClass('layui-form-danger'); + $(this).focus(); + } else { + d[field] = value; // 同步更新数据 + var keys = $td.data('key').split('-'); + that.renderBodyTd(d, indent, index, $td, options.cols[keys[0]][keys[1]]); // 更新单元格 + } + }); + } else { + console.error('不支持的单元格编辑类型:' + edit); + } + } else { // 回调单元格点击事件 + var rs = layui.event.call(this, MOD_NAME, 'cell(' + components.filter + ')', member.call(this, + {td: $td, field: field})); + if (rs === false) layui.stope(e); + } + }); + + // 绑定单元格双击事件 + $allBody.off('dblclick.cellDouble').on('dblclick.cellDouble', 'td', function (e) { + var $td = $(this); + var type = $td.data('type'); + // 判断是否是复选框、单选框列 + if (type === 'checkbox' || type === 'radio') return layui.stope(e); + var edit = $td.data('edit'); + var field = $td.data('field'); + if (edit) return layui.stope(e); // 开启了单元格编辑 + // 回调单元格双击事件 + var rs = layui.event.call(this, MOD_NAME, 'cellDouble(' + components.filter + ')', member.call(this, + {td: $td, field: field})); + if (rs === false) layui.stope(e); + }); + + // 绑定头部工具栏事件 + components.$toolbar.off('click.toolbar').on('click.toolbar', '*[lay-event]', function (e) { + layui.stope(e); + var $this = $(this); + var event = $this.attr('lay-event'); + if ('LAYTABLE_COLS' === event) that.toggleCol(); + else if ('LAYTABLE_EXPORT' === event) that.exportData('show'); + else if ('LAYTABLE_PRINT' === event) that.printTable(); + else layui.event.call(this, MOD_NAME, 'toolbar(' + components.filter + ')', {event: event, elem: $this}); + }); + + // 同步滚动条 + components.$tBodyGroup.on('scroll', function () { + var $this = $(this); + components.$tHeadGroup.scrollLeft($this.scrollLeft()); + }); + + // 导出数据 + components.$toolbar.off('click.export').on('click.export', '.layui-table-tool-panel>[data-type]', function () { + var type = $(this).data('type'); + if ('csv' === type || 'xls' === type) that.exportData(type); + }); + components.$toolbar.off('click.panel').on('click.panel', '.layui-table-tool-panel', function (e) { + layui.stope(e); + }); + + // 筛选列 + form.on('checkbox(' + components.colsToggleFilter + ')', function (data) { + that.toggleCol(data.elem.checked, undefined, data.value); + }); + + }; + + /** 获取各个组件 */ + TreeTable.prototype.getComponents = function () { + var $view = $(this.options.elem).next('.ew-tree-table'); // 容器 + var filter = $view.attr('lay-filter'); // 容器filter + var $tHeadGroup = $view.children('.ew-tree-table-head'); // 表头部分容器 + var $tBodyGroup = $view.children('.ew-tree-table-box'); // 主体部分容器 + return { + $view: $view, + filter: filter, + $tHeadGroup: $tHeadGroup, + $tBodyGroup: $tBodyGroup, + $tHead: $tHeadGroup.children('.layui-table'), // 表头表格 + $tBody: $tBodyGroup.children('.layui-table'), // 主体表格 + $table: $view.find('.layui-table'), // 所有表格 + $toolbar: $view.children('.ew-tree-table-tool'), // 头部工具栏 + $empty: $tBodyGroup.children('.ew-tree-table-empty'), // 空视图 + $loading: $tBodyGroup.children('.ew-tree-table-loading'), // 加载视图 + checkboxFilter: 'ew_tb_checkbox_' + filter, // 复选框filter + radioFilter: 'ew_tb_radio_' + filter, // 单选框filter + chooseAllFilter: 'ew_tb_choose_all_' + filter, // 全选按钮filter + colsToggleFilter: 'ew_tb_toggle_cols' + filter // 筛选列的filter + }; + }; + + /** + * 遍历表头 + * @param callback + * @param obj + */ + TreeTable.prototype.eachCols = function (callback, obj) { + if (!obj) obj = this.options.colArrays; + for (var i = 0; i < obj.length; i++) { + var item = obj[i]; + callback && callback(i, item); + if (item.CHILD_COLS) this.eachCols(callback, item.CHILD_COLS); + } + }; + + /** + * 遍历数据 + * @param callback + * @param data + */ + TreeTable.prototype.eachData = function (callback, data) { + if (!data) data = this.options.data; + for (var i = 0; i < data.length; i++) { + var item = data[i]; + callback && callback(i, item); + if (item[this.options.tree.childName]) this.eachData(callback, item[this.options.tree.childName]); + } + }; + + /** + * 异步加载渲染 + * @param d 父级数据 + * @param $tr 父级dom + */ + TreeTable.prototype.renderBodyAsync = function (d, $tr) { + var that = this; + var options = this.options; + var components = this.getComponents(); + // 显示loading + if ($tr) { + $tr.addClass('ew-tree-table-loading'); + $tr.find('.ew-tree-pack').children('.ew-tree-table-arrow').addClass('layui-anim layui-anim-rotate layui-anim-loop'); + } else { + components.$empty.hide(); + if (options.data && options.data.length > 0) components.$loading.addClass('ew-loading-float'); + components.$loading.show(); + } + // 请求数据 + options.reqData(d, function (data) { + if (typeof data !== 'string' && data && data.length > 0 && options.tree.isPidData) { + data = tt.pidToChildren(data, options.tree.idName, options.tree.pidName, options.tree.childName); + } + that.renderBodyData(data, d, $tr); // 渲染内容 + }); + }; + + /** + * 根据数据渲染body + * @param data 数据集合 + * @param d 父级数据 + * @param $tr 父级dom + */ + TreeTable.prototype.renderBodyData = function (data, d, $tr) { + var msg; + if (typeof data === 'string') { + msg = data; + data = []; + } + var that = this; + var options = this.options; + var components = this.getComponents(); + // 更新到数据 + if (d === undefined) options.data = data; + else d[options.tree.childName] = data; + var indent; + if ($tr) { + indent = parseInt($tr.data('indent')) + 1; + d[options.tree.openName] = true; + } + var htmlStr = this.renderBody(data, indent, d); + if ($tr) { + // 移除旧dom + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= (indent - 1)) return false; + $(this).remove(); + }); + // 渲染新dom + $tr.after(htmlStr).addClass('ew-tree-table-open'); + } else { + components.$tBody.children('tbody').html(htmlStr); + } + form.render(null, components.filter); // 渲染表单元素 + this.renderNumberCol(); // 渲染序号列 + if ($tr) { + // 更新父级复选框状态 + this.checkParentCB($tr); + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < (indent - 1)) { + that.checkParentCB($(this)); + indent = tInd + 1; + } + }); + // 移除loading + $tr.removeClass('ew-tree-table-loading'); + var $arrow = $tr.find('.ew-tree-pack').children('.ew-tree-table-arrow'); + $arrow.removeClass('layui-anim layui-anim-rotate layui-anim-loop'); + if (msg) { // 加载失败 + $tr.removeClass('ew-tree-table-open'); + } else if (data && data.length === 0) { // 无子集 + d[options.tree.haveChildName] = !!options.tree.haveChildReverse; + $tr.data('have-child', false); + $arrow.addClass('ew-tree-table-arrow-hide'); + $arrow.next('.ew-tree-icon').after(options.tree.getIcon(d)).remove(); + } + } else { + // 移除loading + components.$loading.hide(); + components.$loading.removeClass('ew-loading-float'); + // 显示空视图 + if (data && data.length > 0) { + components.$empty.hide(); + } else { + components.$empty.show(); + if (msg) components.$empty.text(msg); + else components.$empty.html(options.text.none); + } + } + this.checkChooseAllCB(); // 联动全选框 + updateFixedTbHead(components.$view); // 滚动条补丁 + options.done && options.done(data); + }; + + /** + * 递归渲染表格主体部分 + * @param data 数据列表 + * @param indent 缩进大小 + * @param parent 父级 + * @param h 父级是否隐藏 + * @returns {string} + */ + TreeTable.prototype.renderBody = function (data, indent, parent, h) { + var options = this.options; + if (!indent) indent = 0; + var html = ''; + if (!data || data.length === 0) return html; + var hide = parent ? !parent[options.tree.openName] : undefined; + if (h) hide = h;//当所有父级存在隐藏时,隐藏所有子集 + for (var i = 0; i < data.length; i++) { + var d = data[i]; + d.LAY_INDEX = (parent ? parent.LAY_INDEX + '-' : '') + i; + html += this.renderBodyTr(d, indent, hide); + // 递归渲染子集 + html += this.renderBody(d[options.tree.childName], indent + 1, d, h); + } + return html; + }; + + /** + * 渲染每一行数据 + * @param d 行数据 + * @param indent 缩进大小 + * @param hide 是否隐藏 + * @param $tr + * @returns {string} + */ + TreeTable.prototype.renderBodyTr = function (d, indent, hide, $tr) { + var that = this; + var options = this.options; + if (!indent) indent = 0; + var haveChild = d[options.tree.haveChildName]; + if (options.tree.haveChildReverse) haveChild = !haveChild; + if (haveChild === undefined) haveChild = d[options.tree.childName] && d[options.tree.childName].length > 0; + if ($tr) { + $tr.data('have-child', haveChild ? 'true' : 'false'); + $tr.data('indent', indent); + $tr.removeClass('ew-tree-table-loading'); + } + var html = ''); + var index = 0; + this.eachCols(function (i, col) { + if (col.colGroup) return; + html += that.renderBodyTd(d, indent, index, $tr ? $tr.children('td').eq(index) : undefined, col); + index++; + }); + html += ''; + return html; + }; + + /** + * 渲染每一个单元格数据 + * @param d 行数据 + * @param indent 缩进大小 + * @param index 第几列 + * @param $td + * @param col + * @returns {string} + */ + TreeTable.prototype.renderBodyTd = function (d, indent, index, $td, col) { + if (!col||col.colGroup) return ''; + var options = this.options; + var components = this.getComponents(); + if (!indent) indent = 0; + // 内容填充 + var content = '', cell = '', icon = ''; + if (col.type === 'numbers') { // 序号列 + content = ''; + } else if (col.type === 'checkbox') { // 复选框列 + content = [ + '' + ].join(''); + } else if (col.type === 'radio') { // 单选框列 + content = [ + '' + ].join(''); + } else if (col.templet) { // 自定义模板 + if (typeof col.templet === 'function') { + content = col.templet(d); + } else if (typeof col.templet === 'string') { + laytpl($(col.templet).html()).render(d, function (html) { + content = html; + }); + } + } else if (col.toolbar) { // 操作列 + if (typeof col.toolbar === 'function') { + content = col.toolbar(d); + } else if (typeof col.toolbar === 'string') { + laytpl($(col.toolbar).html()).render(d, function (html) { + content = html; + }); + } + } else if (col.field && d[col.field] !== undefined && d[col.field] !== null) { // 普通字段 + content = util.escape(d[col.field] === 0 ? '0' : d[col.field]); + } + // 图标列处理 + if (index === options.tree.iconIndex) { + // 缩进 + for (var i = 0; i < indent; i++) icon += ''; + icon += ''; + // 加箭头 + var haveChild = d[options.tree.haveChildName]; + if (options.tree.haveChildReverse) haveChild = !haveChild; + if (haveChild === undefined) haveChild = d[options.tree.childName] && d[options.tree.childName].length > 0; + icon += (''); + // 加图标 + icon += options.tree.getIcon(d); + content = '' + content + ''; + if (options.tree.onlyIconControl) content = icon + '' + content; + else content = icon + content + ''; + } + cell = [ + '
    ', + '
    ', content, '
    ', + ' ', + ' ', + '
    ' + ].join(''); + + if ($td) $td.html(cell); + + var html = '' + cell + ''); + return html; + }; + + /** + * 渲染表头 + * @returns {string} + */ + TreeTable.prototype.renderBodyTh = function () { + var options = this.options; + var components = this.getComponents(); + var html = []; + $.each(options.cols, function (i1, item1) { + html.push(''); + $.each(item1, function (i2, item2) { + html.push(''); + html.push('
    '); + html.push('
    '); + // 标题 + var ca = ''; + if (item2.type === 'checkbox') html.push(ca); + else html.push(item2.title || ''); + html.push('
    '); + html.push('
    '); + // 列宽拖拽 + if (!item2.colGroup && !item2.unresize) html.push(''); + html.push(''); + }); + html.push(''); + }); + return html.join(''); + }; + + /** 重置表格尺寸 */ + TreeTable.prototype.resize = function (returnColgroup) { + // 计算表格宽度、最小宽度、百分比宽度 + var options = this.options; + var components = this.getComponents(); + var minWidth = 1, width = 1, needSetWidth = true, mwPercent = 0; + this.eachCols(function (i, item) { + if (item.colGroup || item.hide) return; + if (item.width) { + width += (item.width + 1); + if (item.minWidth) { + if (item.width < item.minWidth) item.width = item.minWidth; + } else if (item.width < options.cellMinWidth) item.width = options.cellMinWidth; + } else needSetWidth = false; + if (item.width) minWidth += (item.width + 1); + else if (item.minWidth) { + minWidth += (item.minWidth + 1); + mwPercent += item.minWidth; + } else { + minWidth += (options.cellMinWidth + 1); + mwPercent += options.cellMinWidth; + } + }); + if (minWidth) { + components.$tHead.css('min-width', minWidth); + components.$tBody.css('min-width', minWidth); + } else { + components.$tHead.css('min-width', 'auto'); + components.$tBody.css('min-width', 'auto'); + } + if (needSetWidth) { + components.$tHead.css('width', width); + components.$tBody.css('width', width); + } else { + components.$tHead.css('width', '100%'); + components.$tBody.css('width', '100%'); + } + + // 生成colgroup + var colgroupHtml = []; + this.eachCols(function (i, item) { + if (item.colGroup || item.hide) return; + colgroupHtml.push(''); + }); + colgroupHtml = colgroupHtml.join(''); + if (returnColgroup) return '' + colgroupHtml + ''; + components.$table.children('colgroup').html(colgroupHtml); + }; + + /** 获取行对应数据 */ + TreeTable.prototype.getDataByTr = function ($tr) { + var data, index; + if (typeof $tr !== 'string' && typeof $tr !== 'number') { + if ($tr) index = $tr.data('index'); + } else index = $tr; + if (index === undefined) return; + if (typeof index === 'number') index = [index]; + else index = index.split('-'); + for (var i = 0; i < index.length; i++) { + if (data) data = data[this.options.tree.childName][index[i]]; + else data = this.options.data[index[i]]; + } + return data; + }; + + /** + * 联动子级复选框状态 + * @param $tr 当前tr的dom + * @param checked + */ + TreeTable.prototype.checkSubCB = function ($tr, checked) { + var that = this; + var components = this.getComponents(); + var indent = -1, $trList; + if ($tr.is('tbody')) { + $trList = $tr.children('tr'); + } else { + indent = parseInt($tr.data('indent')); + $trList = $tr.nextAll('tr'); + } + $trList.each(function () { + if (parseInt($(this).data('indent')) <= indent) return false; + var $cb = $(this).children('td').find('input[lay-filter="' + components.checkboxFilter + '"]'); + $cb.prop('checked', checked); + $cb.removeClass('ew-form-indeterminate'); + if (checked) $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + else $cb.next('.layui-form-checkbox').removeClass('layui-form-checked'); + var d = that.getDataByTr($(this)); + d.LAY_CHECKED = checked; // 同步更新数据 + d.LAY_INDETERMINATE = false; + }); + }; + + /** + * 联动父级复选框状态 + * @param $tr 父级的dom + */ + TreeTable.prototype.checkParentCB = function ($tr) { + var options = this.options; + var components = this.getComponents(); + var d = this.getDataByTr($tr); + var ckNum = 0, unCkNum = 0; + if (d[options.tree.childName]) { + function checkNum(data) { + for (var i = 0; i < data.length; i++) { + if (data[i].LAY_CHECKED) ckNum++; + else unCkNum++; + if (data[i][options.tree.childName]) checkNum(data[i][options.tree.childName]); + } + } + + checkNum(d[options.tree.childName]); + } + var $cb = $tr.children('td').find('input[lay-filter="' + components.checkboxFilter + '"]'); + if (ckNum > 0 && unCkNum === 0) { // 全选 + $cb.prop('checked', true); + $cb.removeClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + d.LAY_CHECKED = true; // 同步更新数据 + d.LAY_INDETERMINATE = false; + } else if (ckNum === 0 && unCkNum > 0) { // 全不选 + $cb.prop('checked', false); + $cb.removeClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').removeClass('layui-form-checked'); + d.LAY_CHECKED = false; // 同步更新数据 + d.LAY_INDETERMINATE = false; + } else if (ckNum > 0 && unCkNum > 0) { // 半选 + $cb.prop('checked', true); + $cb.data('indeterminate', 'true'); + $cb.addClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + d.LAY_CHECKED = true; // 同步更新数据 + d.LAY_INDETERMINATE = true; + } + }; + + /** 联动全选复选框 */ + TreeTable.prototype.checkChooseAllCB = function () { + var options = this.options; + var components = this.getComponents(); + var ckNum = 0, unCkNum = 0; + + function checkNum(data) { + for (var i = 0; i < data.length; i++) { + if (data[i].LAY_CHECKED) ckNum++; + else unCkNum++; + if (data[i][options.tree.childName]) checkNum(data[i][options.tree.childName]); + } + } + + checkNum(options.data); + + var $cb = components.$view.find('input[lay-filter="' + components.chooseAllFilter + '"]'); + if (ckNum > 0 && unCkNum === 0) { // 全选 + $cb.prop('checked', true); + $cb.removeClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + } else if ((ckNum === 0 && unCkNum > 0) || (ckNum === 0 && unCkNum === 0)) { // 全不选 + $cb.prop('checked', false); + $cb.removeClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').removeClass('layui-form-checked'); + } else if (ckNum > 0 && unCkNum > 0) { // 半选 + $cb.prop('checked', true); + $cb.addClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + } + }; + + /** 填充序号列 */ + TreeTable.prototype.renderNumberCol = function () { + this.getComponents().$tBody.children('tbody').children('tr').each(function (i) { + $(this).children('td').find('.ew-tree-table-numbers').text(i + 1); + }); + }; + + /** 根据id获取tr的index */ + TreeTable.prototype.getIndexById = function (id) { + var options = this.options; + + function each(data, pi) { + for (var i = 0; i < data.length; i++) { + if (data[i][options.tree.idName] === id) return pi !== undefined ? pi + '-' + i : i; + if (data[i][options.tree.childName]) { + var res = each(data[i][options.tree.childName], pi !== undefined ? pi + '-' + i : i); + //值不为undefined才return + if (res) return res; + } + } + } + + return each(options.data); + }; + + /** 展开指定行 */ + TreeTable.prototype.expand = function (id, cascade) { + var components = this.getComponents(); + var $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]'); + if (!$tr.hasClass('ew-tree-table-open')) $tr.children('td').find('.ew-tree-pack').trigger('click'); + if (cascade === false) return; + // 联动父级 + var indent = parseInt($tr.data('indent')); + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < indent) { + if (!$(this).hasClass('ew-tree-table-open')) { + $(this).children('td').find('.ew-tree-pack').trigger('click'); + } + indent = tInd; + } + }); + }; + + /** 折叠指定行 */ + TreeTable.prototype.fold = function (id) { + var components = this.getComponents(); + var $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]'); + if ($tr.hasClass('ew-tree-table-open')) $tr.children('td').find('.ew-tree-pack').trigger('click'); + }; + + /** 全部展开 */ + TreeTable.prototype.expandAll = function () { + this.getComponents().$table.children('tbody').children('tr').each(function () { + if (!$(this).hasClass('ew-tree-table-open')) $(this).children('td').find('.ew-tree-pack').trigger('click'); + }); + }; + + /** 全部折叠 */ + TreeTable.prototype.foldAll = function () { + this.getComponents().$table.children('tbody').children('tr').each(function () { + if ($(this).hasClass('ew-tree-table-open')) $(this).children('td').find('.ew-tree-pack').trigger('click'); + }); + }; + + /** 获取当前数据 */ + TreeTable.prototype.getData = function () { + return this.options.data; + }; + + /** 重载表格 */ + TreeTable.prototype.reload = function (opt) { + this.initOptions(this.options ? $.extend(true, this.options, opt) : opt); + this.init(); // 初始化表格 + this.bindEvents(); // 绑定事件 + }; + + /** 获取当前选中行 */ + TreeTable.prototype.checkStatus = function (needIndeterminate) { + if (needIndeterminate === undefined) needIndeterminate = true; + var list = []; + this.eachData(function (i, item) { + if ((needIndeterminate || !item.LAY_INDETERMINATE) && item.LAY_CHECKED) + list.push($.extend({isIndeterminate: item.LAY_INDETERMINATE}, item)); + }); + return list; + }; + + /** 设置复/单选框选中 */ + TreeTable.prototype.setChecked = function (ids) { + var that = this; + var components = this.getComponents(); + var $radio = components.$table.find('input[lay-filter="' + components.radioFilter + '"]'); + if ($radio.length > 0) { // 开启了单选框 + $radio.each(function () { + var d = that.getDataByTr($(this).parentsUntil('tr').parent()); + if (d && ids[ids.length - 1] == d[that.options.tree.idName]) { + $(this).next('.layui-form-radio').trigger('click'); + return false; + } + }); + } else { // 开启了复选框 + components.$table.find('input[lay-filter="' + components.checkboxFilter + '"]').each(function () { + var $cb = $(this); + var $layCb = $cb.next('.layui-form-checkbox'); + var checked = $cb.prop('checked'); + var indeterminate = $cb.hasClass('ew-form-indeterminate'); + var d = that.getDataByTr($cb.parentsUntil('tr').parent()); + for (var i = 0; i < ids.length; i++) { + if (d && ids[i] == d[that.options.tree.idName]) { + if (d[that.options.tree.childName] && d[that.options.tree.childName].length > 0) continue; + if (!checked || indeterminate) $layCb.trigger('click'); + } + } + }); + } + }; + + /** 移除全部选中 */ + TreeTable.prototype.removeAllChecked = function () { + this.checkSubCB(this.getComponents().$table.children('tbody'), false); + }; + + /** 导出 */ + TreeTable.prototype.exportData = function (type) { + var components = this.getComponents(); + if ('show' === type) { + components.$toolbar.find('.layui-table-tool-panel').remove(); + components.$toolbar.find('[lay-event="LAYTABLE_EXPORT"]').append([ + '
      ', + '
    • 导出到 Csv 文件
    • ', + '
    • 导出到 Excel 文件
    • ', + '
    ' + ].join('')); + } else { + if (device.ie) return layer.msg('不支持ie导出'); + if (!type) type = 'xls'; + var head = [], body = []; + this.eachCols(function (i, item) { + if (item.type !== 'normal' || item.hide) return; + head.push(item.title || ''); + }); + components.$tBody.children('tbody').children('tr').each(function () { + var items = []; + $(this).children('td').each(function () { + var $this = $(this); + if ($this.data('type') !== 'normal' || $this.hasClass('layui-hide')) return true; + items.push($this.text().trim().replace(/,/g, ',')); + }); + body.push(items.join(',')); + }); + // 创建下载文件的a标签 + var alink = document.createElement('a'); + var content = encodeURIComponent(head.join(',') + '\r\n' + body.join('\r\n')); + var contentType = ({csv: 'text/csv', xls: 'application/vnd.ms-excel'})[type]; + alink.href = 'data:' + contentType + ';charset=utf-8,\ufeff' + content; + alink.download = (this.options.title || 'table') + '.' + type; + document.body.appendChild(alink); + alink.click(); + document.body.removeChild(alink); + } + }; + + /** 打印 */ + TreeTable.prototype.printTable = function () { + var components = this.getComponents(); + var head = components.$tHead.children('thead').html(); + if (!head) head = components.$tBody.children('thead').html(); + var body = components.$tBody.children('tbody').html(); + var colgroup = components.$tBody.children('colgroup').html(); + var $html = $([ + '', + ' ', colgroup, '', + ' ', head, '', + ' ', body, '', + '
    ' + ].join('')); + + // 隐藏特殊列 + $html.find('col[data-type="checkbox"],col[data-type="radio"],col[data-type="tool"]').remove(); + $html.find('td[data-type="checkbox"],td[data-type="radio"],td[data-type="tool"],.layui-hide').remove(); + + function hideCol($temp) { + var parentKey = $temp.data('parent'), pCol; + if (!parentKey) return; + var $parent = $html.children('thead').children('tr').children('[data-key="' + parentKey + '"]'); + var colspan = parseInt($parent.attr('colspan')) - 1; + $parent.attr('colspan', colspan); + if (colspan === 0) $parent.remove(); + hideCol($parent); + } + + $html.find('th[data-type="checkbox"],th[data-type="radio"],th[data-type="tool"]').each(function () { + hideCol($(this)); + }).remove(); + + // 打印内容样式 + var style = [ + '' + ].join(''); + var pWindow = window.open('', '_blank'); + pWindow.focus(); + var pDocument = pWindow.document; + pDocument.open(); + pDocument.write($html[0].outerHTML + style); + pDocument.close(); + pWindow.print(); + pWindow.close(); + }; + + /** 筛选列 */ + TreeTable.prototype.toggleCol = function (show, field, key) { + var components = this.getComponents(); + if (show === undefined) { + components.$toolbar.find('.layui-table-tool-panel').remove(); + var cols = ['
      ']; + this.eachCols(function (i, item) { + if (item.type !== 'normal') return; + cols.push('
    • '); + }); + components.$toolbar.find('[lay-event="LAYTABLE_COLS"]').append(cols.join('') + '
    '); + form.render('checkbox', components.filter); + } else { + if (key) { + var $td = components.$table.children('tbody').children('tr').children('[data-key="' + key + '"]'); + var $th = components.$table.children('thead').children('tr').children('[data-key="' + key + '"]'); + if (show) { + $td.removeClass('layui-hide'); + $th.removeClass('layui-hide'); + } else { + $td.addClass('layui-hide'); + $th.addClass('layui-hide'); + } + // 同步更新数据 + var ks = key.split('-'); + var col = this.options.cols[ks[0]][ks[1]]; + col.hide = !show; + + // 更新colspan数据 + function changeParent($temp) { + var parentKey = $temp.data('parent'), pCol; + if (!parentKey) return; + var $parent = components.$table.children('thead').children('tr').children('[data-key="' + parentKey + '"]'); + var colspan = $parent.attr('colspan'); + show ? colspan++ : colspan--; + $parent.attr('colspan', colspan); + if (colspan === 0) $parent.addClass('layui-hide'); + else $parent.removeClass('layui-hide'); + changeParent($parent); + } + + changeParent($th); + + // 同步eachCols数据 + this.eachCols(function (i, item) { + if (item.key === key) item.hide = col.hide; + }); + this.resize(); // 更新表格尺寸 + } + } + }; + + /** + * 搜索数据 + * @param ids 关键字或数据id集合 + */ + TreeTable.prototype.filterData = function (ids) { + var components = this.getComponents(); + components.$loading.show(); + if (this.options.data.length > 0) components.$loading.addClass('ew-loading-float'); + var $trList = components.$table.children('tbody').children('tr'); + var indexList = []; + if (typeof ids === 'string') { // 关键字 + $trList.each(function () { + var index = $(this).data('index'); + $(this).children('td').each(function () { + if ($(this).text().indexOf(ids) !== -1) { + indexList.push(index); + return false; + } + }); + }); + } else { + for (var i = 0; i < ids.length; i++) { + indexList.push(this.getIndexById(ids[i])); + } + } + $trList.addClass('ew-tree-table-filter-hide'); + for (var j = 0; j < indexList.length; j++) { + var $tr = $trList.filter('[data-index="' + indexList[j] + '"]'); + $tr.removeClass('ew-tree-table-filter-hide'); + var indent = parseInt($tr.data('indent')); + // 联动子级 + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= indent) return false; + $(this).removeClass('ew-tree-table-filter-hide'); + }); + if ($tr.hasClass('ew-tree-table-open')) toggleRow($tr); + // 联动父级 + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < indent) { + $(this).removeClass('ew-tree-table-filter-hide'); + if (!$(this).hasClass('ew-tree-table-open')) toggleRow($(this)); + indent = tInd; + } + }); + } + // 最后再检查一遍 + /*$trList.not('.ew-tree-table-filter-hide').not('.ew-tree-tb-hide').each(function () { + var index = $(this).data('index'), hide = true; + for (var k = 0; k < indexList.length; k++) { + if (indexList[k] === index) hide = false; + } + if (hide) $(this).addClass('ew-tree-table-filter-hide'); + });*/ + components.$loading.hide(); + components.$loading.removeClass('ew-loading-float'); + if (indexList.length === 0) components.$empty.show(); + updateFixedTbHead(components.$view); // 更新滚动条补丁 + }; + + /** 重置搜索 */ + TreeTable.prototype.clearFilter = function () { + var components = this.getComponents(); + components.$table.children('tbody').children('tr').removeClass('ew-tree-table-filter-hide'); + if (this.options.data.length > 0) components.$empty.hide(); + updateFixedTbHead(components.$view); // 更新滚动条补丁 + }; + + /** + * 刷新指定父级下的节点 + * @param id 父级id,空则全部刷新 + * @param data 非异步模式替换的数据 + */ + TreeTable.prototype.refresh = function (id, data) { + if (isClass(id) === 'Array') { + data = id; + id = undefined; + } + var components = this.getComponents(); + var d, $tr; + if (id !== undefined) { + $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]'); + d = this.getDataByTr($tr); + } + if (data) { // 数据模式 + if (data.length > 0) components.$loading.addClass('ew-loading-float'); + components.$loading.show(); + if (data.length > 0 && this.options.tree.isPidData) { // pid形式数据 + this.renderBodyData(tt.pidToChildren(data, this.options.tree.idName, this.options.tree.pidName, this.options.tree.childName), d, $tr); + } else { + this.renderBodyData(data, d, $tr); + } + } else { // 异步模式 + this.renderBodyAsync(d, $tr); + } + }; + + /** 删除数据 */ + TreeTable.prototype.del = function (id, index) { + if (index === undefined) index = this.getIndexById(id); + var indexList = (typeof index === 'number' ? [index] : index.split('-')); + var d = this.options.data; + if (indexList.length > 1) { + for (var i = 0; i < indexList.length - 1; i++) { + d = d[parseInt(indexList[i])][this.options.tree.childName]; + } + } + d.splice(indexList[indexList.length - 1], 1); + }; + + /** 更新数据 */ + TreeTable.prototype.update = function (id, fields) { + $.extend(true, this.getDataByTr(this.getIndexById(id)), fields); + }; + + /** 折叠/展开行 */ + function toggleRow($tr) { + var indent = parseInt($tr.data('indent')); + var open = $tr.hasClass('ew-tree-table-open'); + if (open) { // 折叠 + $tr.removeClass('ew-tree-table-open'); + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= indent) return false; + $(this).addClass('ew-tree-tb-hide'); + }); + } else { // 展开 + $tr.addClass('ew-tree-table-open'); + var hideInd; + $tr.nextAll('tr').each(function () { + var ind = parseInt($(this).data('indent')); + if (ind <= indent) return false; + if (hideInd !== undefined && ind > hideInd) return true; + $(this).removeClass('ew-tree-tb-hide'); + if (!$(this).hasClass('ew-tree-table-open')) hideInd = parseInt($(this).data('indent')); + else hideInd = undefined; + }); + } + updateFixedTbHead($tr.parentsUntil('.ew-tree-table').last().parent()); + return open; + } + + /** 固定表头滚动条补丁 */ + function updateFixedTbHead($view) { + var $headBox = $view.children('.ew-tree-table-head'); + var $tbBox = $view.children('.ew-tree-table-box'); + var sWidth = $tbBox.width() - $tbBox.prop('clientWidth'); + $headBox.css('border-right', (sWidth > 0 ? sWidth : 0) + 'px solid #f2f2f2'); + } + + // 监听窗口大小改变 + $(window).resize(function () { + $('.ew-tree-table').each(function () { + updateFixedTbHead($(this)); + var $tbBox = $(this).children('.ew-tree-table-box'); + var full = $tbBox.data('full'); + if (full && device.ie && device.ie < 10) { + $tbBox.css('height', getPageHeight() - full); + } + }); + }); + + /** 表格溢出点击展开功能 */ + $(document).on('mouseenter', '.ew-tree-table-cell.single-line', function () { + var $content = $(this).children('.ew-tree-table-cell-content'); + if ($content.prop('scrollWidth') > $content.outerWidth()) $(this).children('.layui-table-grid-down').show(); + }).on('mouseleave', '.ew-tree-table-cell.single-line', function () { + $(this).children('.layui-table-grid-down').hide(); + }); + // 点击箭头展开 + $(document).on('click', '.ew-tree-table-cell>.layui-table-grid-down', function (e) { + e.stopPropagation(); + hideAllTdTips(); + var $cell = $(this).parent(); + $cell.addClass('ew-tree-tips-open'); + $cell.children('.layui-table-grid-down').hide(); + var tw = $cell.parent().outerWidth() + 4; + if ($cell.outerWidth() < tw) $cell.children('.ew-tree-table-cell-content').css({'width': tw, 'max-width': tw}); + var $box = $cell.parents().filter('.ew-tree-table-box'); + if ($box.length === 0) $box = $cell.parents().filter('.ew-tree-table-head'); + if ($box.length === 0) return; + if (($cell.outerWidth() + $cell.offset().left) + 20 > $box.offset().left + $box.outerWidth()) { + $cell.addClass('ew-show-left'); + } + if (($cell.outerHeight() + $cell.offset().top + 10) > $box.offset().top + $box.outerHeight()) { + $cell.addClass('ew-show-bottom'); + } + }); + // 点击关闭按钮关闭 + $(document).on('click', '.ew-tree-table-cell>.ew-tree-tips-c', function () { + hideAllTdTips(); + }); + // 点击空白部分关闭 + $(document).on('click', function () { + hideAllTdTips(); + $('.ew-tree-table .layui-table-tool-panel').remove(); + }); + $(document).on('click', '.ew-tree-table-cell.ew-tree-tips-open', function (e) { + e.stopPropagation(); + }); + + /* 关闭所有单元格溢出提示框 */ + function hideAllTdTips() { + $('.ew-tree-table-cell').removeClass('ew-tree-tips-open ew-show-left ew-show-bottom'); + $('.ew-tree-table-cell>.ew-tree-table-cell-content').css({'width': '', 'max-width': ''}); + } + + /** 拖拽调整列宽 */ + $(document).on('mousedown', '.ew-tb-resize', function (e) { + layui.stope(e); + var $this = $(this); + $this.attr('move', 'true'); + var key = $this.parent().data('key'); + $this.data('x', e.clientX); + var w = $this.parent().parent().parent().parent().children('colgroup').children('col[data-key="' + key + '"]').attr('width'); + if (!w || w.toString().indexOf('%') !== -1) w = $this.parent().outerWidth(); + $this.data('width', w); + $('body').addClass('ew-tree-table-resizing'); + }).on('mousemove', function (e) { + var $rs = $('.ew-tree-table .ew-tb-resize[move="true"]'); + if ($rs.length === 0) return; + layui.stope(e); + var x = $rs.data('x'); + var w = $rs.data('width'); + var nw = parseFloat(w) + e.clientX - parseFloat(x); + if (nw <= 0) nw = 1; + // 更新实例options中的宽度 + var ins = _instances[$rs.parentsUntil('.ew-tree-table').last().parent().attr('lay-filter')]; + var key = $rs.parent().data('key'); + var ks = key.split('-'); + ins.options.cols[ks[0]][ks[1]].width = nw; + ins.eachCols(function (i, item) { + if (item.key === key) item.width = nw; + }); + ins.resize(); + }).on('mouseup', function (e) { + $('.ew-tree-table .ew-tb-resize[move="true"]').attr('move', 'false'); + $('body').removeClass('ew-tree-table-resizing'); + }).on('mouseleave', function (e) { + $('.ew-tree-table .ew-tb-resize[move="true"]').attr('move', 'false'); + $('body').removeClass('ew-tree-table-resizing'); + }); + + /** 获取顶级的pId */ + function getPids(data, idName, pidName) { + var pids = []; + for (var i = 0; i < data.length; i++) { + var hasPid = false; + for (var j = 0; j < data.length; j++) { + if (data[i][pidName] == data[j][idName]) { + hasPid = true; + break; + } + } + if (!hasPid) pids.push(data[i][pidName]); + } + return pids; + } + + /** 判断pId是否相等 */ + function pidEquals(pId, pIds) { + if (isClass(pIds) === 'Array') { + for (var i = 0; i < pIds.length; i++) + if (pId == pIds[i]) return true; + } + return pId == pIds; + } + + /** 获取变量类型 */ + function isClass(o) { + if (o === null) return 'Null'; + if (o === undefined) return 'Undefined'; + return Object.prototype.toString.call(o).slice(8, -1); + } + + /** 获取浏览器高度 */ + function getPageHeight() { + return document.documentElement.clientHeight || document.body.clientHeight; + } + + /** 对外提供的方法 */ + var tt = { + /* 渲染 */ + render: function (options) { + return new TreeTable(options); + }, + /* 重载 */ + reload: function (id, opt) { + _instances[id].reload(opt); + }, + /* 事件监听 */ + on: function (events, callback) { + return layui.onevent.call(this, MOD_NAME, events, callback); + }, + /* pid转children形式 */ + pidToChildren: function (data, idName, pidName, childName, pId) { + if (!childName) childName = 'children'; + var newList = []; + for (var i = 0; i < data.length; i++) { + if (data[i][idName] == data[i][pidName]) + return console.error('第' + i + '条数据的' + idName + '与' + pidName + '相同', data[i]); + if (pId === undefined) pId = getPids(data, idName, pidName); + if (pidEquals(data[i][pidName], pId)) { + var children = this.pidToChildren(data, idName, pidName, childName, data[i][idName]); + if (children.length > 0) data[i][childName] = children; + newList.push(data[i]); + } + } + return newList; + } + }; + + /** 添加样式 */ + $('head').append([ + '' + ].join('')); + + exports('treeTable', tt); +}); diff --git a/public/static/layui/css/layui.css b/public/static/layui/css/layui.css index 9191bc1..88d9c43 100644 --- a/public/static/layui/css/layui.css +++ b/public/static/layui/css/layui.css @@ -1 +1 @@ -.layui-inline,img{display:inline-block;vertical-align:middle}h1,h2,h3,h4,h5,h6{font-weight:400}a,body{color:#333}.layui-edge,.layui-header,.layui-inline,.layui-main{position:relative}.layui-edge,hr{height:0;overflow:hidden}.layui-layout-body,.layui-side,.layui-side-scroll{overflow-x:hidden}.layui-btn,.layui-edge,.layui-inline,img{vertical-align:middle}.layui-btn,.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-elip,.layui-form-checkbox span,.layui-form-pane .layui-form-label{text-overflow:ellipsis;white-space:nowrap}.layui-edge,.layui-elip,hr{overflow:hidden}blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{border:none}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h4,h5,h6{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{line-height:0;margin:10px 0;padding:0;border:none!important;border-bottom:1px solid #eee!important;clear:both;background:0 0}a{text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-inline{*display:inline;*zoom:1}.layui-edge{display:inline-block;width:0;border-width:6px;border-style:dashed;border-color:transparent}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-show-v{visibility:visible!important}.layui-hide-v{visibility:hidden!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=256);src:url(../font/iconfont.eot?v=256#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=256) format('woff2'),url(../font/iconfont.woff?v=256) format('woff'),url(../font/iconfont.ttf?v=256) format('truetype'),url(../font/iconfont.svg?v=256#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-search:before{content:"\e615"}.layui-icon-share:before{content:"\e641"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-engine:before{content:"\e628"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-star:before{content:"\e600"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-chat:before{content:"\e606"}.layui-icon-release:before{content:"\e609"}.layui-icon-list:before{content:"\e60a"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-ok-circle:before{content:"\1005"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-table:before{content:"\e62d"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-edit:before{content:"\e642"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-down:before{content:"\e61a"}.layui-icon-file:before{content:"\e621"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-read:before{content:"\e705"}.layui-icon-404:before{content:"\e61c"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-help:before{content:"\e607"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-water:before{content:"\e636"}.layui-icon-username:before{content:"\e66f"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-about:before{content:"\e60b"}.layui-icon-location:before{content:"\e715"}.layui-icon-up:before{content:"\e619"}.layui-icon-pause:before{content:"\e651"}.layui-icon-date:before{content:"\e637"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-delete:before{content:"\e640"}.layui-icon-play:before{content:"\e652"}.layui-icon-top:before{content:"\e604"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-friends:before{content:"\e612"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-ok:before{content:"\e605"}.layui-icon-layer:before{content:"\e638"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-group:before{content:"\e613"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-link:before{content:"\e64c"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-log:before{content:"\e60e"}.layui-icon-key:before{content:"\e683"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-return:before{content:"\e65c"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-form:before{content:"\e63c"}.layui-icon-cart:before{content:"\e657"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-ios:before{content:"\e680"}.layui-icon-at:before{content:"\e687"}.layui-icon-fire:before{content:"\e756"}.layui-icon-set:before{content:"\e716"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-tips:before{content:"\e702"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-addition:before{content:"\e624"}.layui-icon-home:before{content:"\e68e"}.layui-icon-time:before{content:"\e68d"}.layui-icon-user:before{content:"\e770"}.layui-icon-notice:before{content:"\e667"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-voice:before{content:"\e688"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-logout:before{content:"\e682"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-template:before{content:"\e663"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-auz:before{content:"\e672"}.layui-icon-console:before{content:"\e665"}.layui-icon-app:before{content:"\e653"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-next:before{content:"\e65b"}.layui-icon-component:before{content:"\e857"}.layui-icon-android:before{content:"\e684"}.layui-icon-more:before{content:"\e65f"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-camera:before{content:"\e660"}.layui-icon-note:before{content:"\e66e"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-password:before{content:"\e673"}.layui-icon-senior:before{content:"\e674"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-service:before{content:"\e626"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-print:before{content:"\e66d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-export:before{content:"\e67d"}.layui-icon-rss:before{content:"\e808"}.layui-icon-slider:before{content:"\e714"}.layui-icon-email:before{content:"\e618"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-light:before{content:"\e748"}.layui-icon-gift:before{content:"\e627"}.layui-icon-mute:before{content:"\e685"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-music:before{content:"\e690"}.layui-main{width:1140px;margin:0 auto}.layui-header{z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px}.layui-side-scroll{position:relative;width:220px;height:100%}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23262E}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#FAFAFA}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#009688;font-size:16px}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;padding:0 15px;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:768px){.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:750px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:970px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1170px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.6;border-left:5px solid #5FB878;border-radius:0 2px 2px 0;background-color:#FAFAFA}.layui-quote-nm{border-style:solid;border-width:1px 1px 1px 5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px;font-weight:300}.layui-field-title{margin:10px 0 20px;border-width:1px 0 0}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#5FB878;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#666}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#FAFAFA;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#666}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f6f6f6;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{position:relative;border-width:1px;border-style:solid;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);background-color:#fff;color:#666}.layui-bg-black,.layui-bg-blue,.layui-bg-cyan,.layui-bg-green,.layui-bg-orange,.layui-bg-red{color:#fff!important}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-border,.layui-border-black,.layui-border-blue,.layui-border-cyan,.layui-border-green,.layui-border-orange,.layui-border-red{border-width:1px;border-style:solid}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-form-label,.layui-form-mid,.layui-form-select,.layui-input-block,.layui-input-inline,.layui-textarea{position:relative}.layui-bg-red{background-color:#FF5722!important}.layui-bg-orange{background-color:#FFB800!important}.layui-bg-green{background-color:#009688!important}.layui-bg-cyan{background-color:#2F4056!important}.layui-bg-blue{background-color:#1E9FFF!important}.layui-bg-black{background-color:#393D49!important}.layui-bg-gray{background-color:#FAFAFA!important;color:#666!important}.layui-badge-rim,.layui-border,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-layedit,.layui-layedit-tool,.layui-panel,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#eee}.layui-border{color:#666!important}.layui-border-red{border-color:#FF5722!important;color:#FF5722!important}.layui-border-orange{border-color:#FFB800!important;color:#FFB800!important}.layui-border-green{border-color:#009688!important;color:#009688!important}.layui-border-cyan{border-color:#2F4056!important;color:#2F4056!important}.layui-border-blue{border-color:#1E9FFF!important;color:#1E9FFF!important}.layui-border-black{border-color:#393D49!important;color:#393D49!important}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.6;font-size:14px;color:#666}.layui-text h1,.layui-text h2,.layui-text h3{font-weight:500;color:#333}.layui-text h1{font-size:30px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text a:not(.layui-btn){color:#01AAED}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text ul{padding:5px 0 5px 15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-font-12{font-size:12px}.layui-font-14{font-size:14px}.layui-font-16{font-size:16px}.layui-font-18{font-size:18px}.layui-font-20{font-size:20px}.layui-font-red{color:#FF5722!important}.layui-font-orange{color:#FFB800!important}.layui-font-green{color:#009688!important}.layui-font-cyan{color:#2F4056!important}.layui-font-blue{color:#01AAED!important}.layui-font-black{color:#000!important}.layui-font-gray{color:#c2c2c2!important}.layui-btn{display:inline-block;height:38px;line-height:38px;padding:0 18px;border:1px solid transparent;background-color:#009688;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border-radius:2px;cursor:pointer}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{font-size:0}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{padding:0 2px;vertical-align:middle\9;vertical-align:bottom}.layui-btn-primary{border-color:#d2d2d2;background:0 0;color:#666}.layui-btn-primary:hover{border-color:#009688;color:#333}.layui-btn-normal{background-color:#1E9FFF}.layui-btn-warm{background-color:#FFB800}.layui-btn-danger{background-color:#FF5722}.layui-btn-checked{background-color:#5FB878}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border-color:#eee;background-color:#FBFBFB;color:#d2d2d2;cursor:not-allowed;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:12px!important}.layui-btn-group{display:inline-block;vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#d2d2d2;color:#009688}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #d2d2d2}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border-width:1px;border-style:solid;background-color:#fff;border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#eee!important}.layui-input:focus,.layui-textarea:focus{border-color:#d2d2d2!important}.layui-textarea{min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#FF5722!important}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #d2d2d2;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#F6F6F6;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#5FB878;color:#fff}.layui-form-checkbox,.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-checkbox,.layui-form-checkbox *,.layui-form-switch{display:inline-block;vertical-align:middle}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg);margin-top:-3px\9}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;height:30px;line-height:30px;margin-right:10px;padding-right:30px;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox span{padding:0 10px;height:100%;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden}.layui-form-checkbox:hover span{background-color:#c2c2c2}.layui-form-checkbox i{position:absolute;right:0;top:0;width:30px;height:28px;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;font-size:20px;text-align:center}.layui-form-checkbox:hover i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#5FB878}.layui-form-checked span,.layui-form-checked:hover span{background-color:#5FB878}.layui-form-checked i,.layui-form-checked:hover i{color:#5FB878}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:28px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary] span{padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#666}.layui-form-checkbox[lay-skin=primary] i{right:auto;left:0;width:16px;height:16px;line-height:16px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover i{border-color:#5FB878;color:#fff}.layui-form-checked[lay-skin=primary] i{border-color:#5FB878!important;background-color:#5FB878;color:#fff}.layui-checkbox-disbaled[lay-skin=primary] span{background:0 0!important;color:#c2c2c2!important}.layui-checkbox-disbaled[lay-skin=primary]:hover i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-switch{position:relative;height:22px;line-height:22px;min-width:35px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch em{position:relative;top:0;width:25px;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#5FB878;background-color:#5FB878}.layui-checkbox-disbaled,.layui-checkbox-disbaled i{border-color:#eee!important}.layui-form-onswitch i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch em{margin-left:5px;margin-right:21px;color:#fff!important}.layui-checkbox-disbaled span{background-color:#eee!important}.layui-checkbox-disbaled em{color:#d2d2d2!important}.layui-checkbox-disbaled:hover i{color:#fff!important}[lay-radio]{display:none}.layui-form-radio,.layui-form-radio *{display:inline-block;vertical-align:middle}.layui-form-radio{line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio *{font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio:hover *,.layui-form-radioed,.layui-form-radioed>i{color:#5FB878}.layui-radio-disbaled>i{color:#eee!important}.layui-radio-disbaled *{color:#c2c2c2!important}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#FBFBFB;overflow:hidden;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0 1px 0 0}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-layedit{border-width:1px;border-style:solid;border-radius:2px}.layui-layedit-tool{padding:3px 5px;border-bottom-width:1px;border-bottom-style:solid;font-size:0}.layedit-tool-fixed{position:fixed;top:0;border-top:1px solid #eee}.layui-layedit-tool .layedit-tool-mid,.layui-layedit-tool .layui-icon{display:inline-block;vertical-align:middle;text-align:center;font-size:14px}.layui-layedit-tool .layui-icon{position:relative;width:32px;height:30px;line-height:30px;margin:3px 5px;color:#777;cursor:pointer;border-radius:2px}.layui-layedit-tool .layui-icon:hover{color:#393D49}.layui-layedit-tool .layui-icon:active{color:#000}.layui-layedit-tool .layedit-tool-active{background-color:#eee;color:#000}.layui-layedit-tool .layui-disabled,.layui-layedit-tool .layui-disabled:hover{color:#d2d2d2;cursor:not-allowed}.layui-layedit-tool .layedit-tool-mid{width:1px;height:18px;margin:0 10px;background-color:#d2d2d2}.layedit-tool-html{width:50px!important;font-size:30px!important}.layedit-tool-b,.layedit-tool-code,.layedit-tool-help{font-size:16px!important}.layedit-tool-d,.layedit-tool-face,.layedit-tool-image,.layedit-tool-unlink{font-size:18px!important}.layedit-tool-image input{position:absolute;font-size:0;left:0;top:0;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-layedit-iframe iframe{display:block;width:100%}#LAY_layedit_code{overflow:hidden}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #eee}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-flow-more a *,.layui-laypage input,.layui-table-view select[lay-ignore]{display:inline-block}.layui-laypage a:hover{color:#009688}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage a{text-decoration:none}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#009688}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#009688!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-table,.layui-table-view{margin:10px 0}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;background-color:#fff;color:#666}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:400}.layui-table tbody tr:hover,.layui-table thead tr,.layui-table-click,.layui-table-header,.layui-table-hover,.layui-table-mend,.layui-table-patch,.layui-table-tool,.layui-table-total,.layui-table-total tr,.layui-table[lay-even] tr:nth-child(even){background-color:#FAFAFA}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0 0 1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0 1px 0 0}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding:15px 30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:40px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{font-size:12px;padding:5px 10px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:20px;line-height:20px}.layui-table[lay-data]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view .layui-table{position:relative;width:auto;margin:0}.layui-table-view .layui-table[lay-skin=line]{border-width:0 1px 0 0}.layui-table-view .layui-table[lay-skin=row]{border-width:0 0 1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:5px 0;border-top:none;border-left:none}.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td{cursor:default}.layui-table-view .layui-table td[data-edit=text]{cursor:text}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:110}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0 0 1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;padding:5px 0;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-cell,.layui-table-tool-panel li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layui-table-tool-panel li{padding:0 10px;line-height:30px;-webkit-transition:.5s all;transition:.5s all}.layui-menu li,.layui-menu-body-title a:hover,.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%;padding-left:28px}.layui-table-tool-panel li:hover{background-color:#F6F6F6}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0 0 0 1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#666}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#666}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:28px;line-height:28px;padding:0 15px;position:relative;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-table-link{color:#01AAED}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{padding:0;text-align:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:0 -1px 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0 0 0 1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px}.layui-table-tool{position:relative;z-index:890;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0 0 1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-page,.layui-table-total{border-width:1px 0 0;margin-bottom:-1px;overflow:hidden}.layui-table-page{position:relative;width:100%;padding:7px 7px 0;height:41px;font-size:12px;white-space:nowrap}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-7px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;width:100%;height:100%;padding:0 14px 1px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15)}.layui-table-edit:focus{border-color:#5FB878!important}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0;box-sizing:content-box}.layui-colorpicker-alpha-slider,.layui-colorpicker-side-slider,.layui-menu,.layui-menu *,.layui-nav{box-sizing:border-box}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:26px;height:100%;padding:5px 0;border-width:0 0 0 1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px}.layui-table-grid-down:hover{background-color:#fbfbfb}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-44px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#666}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#666;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-drag,.layui-upload-form,.layui-upload-wrap{display:inline-block}.layui-upload-list{margin:10px 0}.layui-upload-choose{padding:0 10px;color:#999}.layui-upload-drag{position:relative;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#009688}.layui-upload-drag[lay-over]{border-color:#009688}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-menu{position:relative;margin:5px 0;background-color:#fff}.layui-menu li,.layui-menu-body-title a{padding:5px 15px}.layui-menu li{position:relative;margin:1px 0;width:calc(100% + 1px);line-height:22px;color:rgba(0,0,0,.8);font-size:14px;white-space:nowrap;cursor:pointer}.layui-menu li:hover{background-color:#F6F6F6}.layui-menu-item-parent:hover>.layui-menu-body-panel{display:block;animation-name:layui-fadein;animation-duration:.3s;animation-fill-mode:both;animation-delay:.2s}.layui-menu-item-group .layui-menu-body-title,.layui-menu-item-parent .layui-menu-body-title{padding-right:25px}.layui-menu .layui-menu-item-divider:hover,.layui-menu .layui-menu-item-group:hover,.layui-menu .layui-menu-item-none:hover{background:0 0;cursor:default}.layui-menu .layui-menu-item-group>ul{margin:5px 0 -5px}.layui-menu .layui-menu-item-group>.layui-menu-body-title{color:rgba(0,0,0,.35);user-select:none}.layui-menu .layui-menu-item-none{color:rgba(0,0,0,.35);cursor:default;text-align:center}.layui-menu .layui-menu-item-divider{margin:5px 0;padding:0;height:0;line-height:0;border-bottom:1px solid #eee;overflow:hidden}.layui-menu .layui-menu-item-down:hover,.layui-menu .layui-menu-item-up:hover{cursor:pointer}.layui-menu .layui-menu-item-up>.layui-menu-body-title{color:rgba(0,0,0,.8)}.layui-menu .layui-menu-item-up>ul{visibility:hidden;height:0;overflow:hidden}.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon,.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon{color:rgba(0,0,0,1)}.layui-menu .layui-menu-item-down>ul{visibility:visible;height:auto}.layui-breadcrumb,.layui-tree-btnGroup{visibility:hidden}.layui-menu .layui-menu-item-checked,.layui-menu .layui-menu-item-checked2{background-color:#F6F6F6!important;color:#5FB878}.layui-menu .layui-menu-item-checked a,.layui-menu .layui-menu-item-checked2 a{color:#5FB878}.layui-menu .layui-menu-item-checked:after{position:absolute;right:0;top:0;bottom:0;border-right:3px solid #5FB878;content:""}.layui-menu-body-title{position:relative;overflow:hidden;text-overflow:ellipsis}.layui-menu-body-title a{display:block;margin:-5px -15px;color:rgba(0,0,0,.8)}.layui-menu-body-title>.layui-icon{position:absolute;right:0;top:0;font-size:14px}.layui-menu-body-title>.layui-icon-right{right:-1px}.layui-menu-body-panel{display:none;position:absolute;top:-7px;left:100%;z-index:1000;margin-left:13px;padding:5px 0}.layui-transfer-active,.layui-transfer-box{display:inline-block;vertical-align:middle}.layui-menu-body-panel:before{content:"";position:absolute;width:20px;left:-16px;top:0;bottom:0}.layui-menu-body-panel-left{left:auto;right:100%;margin:0 13px}.layui-menu-body-panel-left:before{left:auto;right:-16px}.layui-menu-lg li{line-height:32px}.layui-menu-lg .layui-menu-body-title a:hover,.layui-menu-lg li:hover{background:0 0;color:#5FB878}.layui-menu-lg li .layui-menu-body-panel{margin-left:14px}.layui-menu-lg li .layui-menu-body-panel-left{margin:0 15px}.layui-dropdown{position:absolute;left:-999999px;top:-999999px;z-index:66666666;margin:5px 0;min-width:100px}.layui-dropdown:before{content:"";position:absolute;width:100%;height:6px;left:0;top:-6px}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#eee}.layui-transfer-box{position:relative;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 10px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:10px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;margin-top:-8px;color:#666}.layui-transfer-active{margin:0 15px}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#5FB878;border-color:#5FB878;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#FBFBFB;border-color:#eee;color:#d2d2d2}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;padding:0 10px}.layui-transfer-data li:hover{background-color:#F6F6F6;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 10px;text-align:center;color:#999}.layui-nav{position:relative;padding:0 20px;background-color:#393D49;color:#fff;border-radius:2px;font-size:0}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar,.layui-nav-tree .layui-nav-itemed:after{position:absolute;left:0;top:0;width:0;height:5px;background-color:#5FB878;transition:all .2s;-webkit-transition:all .2s}.layui-nav-bar{z-index:1000}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff}.layui-nav .layui-this:after{content:"";top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{content:"";width:0;height:0;border-style:solid dashed dashed;border-color:#fff transparent transparent;overflow:hidden;cursor:pointer;transition:all .2s;-webkit-transition:all .2s;position:absolute;top:50%;right:3px;margin-top:-4px;border-width:6px;border-top-color:rgba(255,255,255,.7)}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{margin-top:-9px;border-style:dashed dashed solid;border-color:transparent transparent #fff}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #d2d2d2;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap}.layui-nav .layui-nav-child a{color:#333}.layui-nav .layui-nav-child a:hover{background-color:#F6F6F6;color:#5FB878}.layui-nav-child dd{position:relative}.layui-nav .layui-nav-child dd.layui-this a,.layui-nav-child dd.layui-this{background-color:#5FB878;color:#fff}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:45px}.layui-nav-tree .layui-nav-item a{position:relative;height:45px;line-height:45px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item a:hover{background-color:#4E5465}.layui-nav-tree .layui-nav-bar{width:5px;height:0;background-color:#009688}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#009688;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;box-shadow:none}.layui-nav-tree .layui-nav-child a{height:40px;line-height:40px;color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child,.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-tree .layui-nav-more{right:10px}.layui-nav-itemed>.layui-nav-child{display:block;padding:0;background-color:rgba(0,0,0,.3)!important}.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-bg-blue .layui-nav-bar,.layui-bg-blue .layui-nav-itemed:after,.layui-bg-blue .layui-this:after{background-color:#93D1FF}.layui-bg-blue .layui-nav-child dd.layui-this{background-color:#1E9FFF}.layui-bg-blue .layui-nav-itemed>a,.layui-nav-tree.layui-bg-blue .layui-nav-title a,.layui-nav-tree.layui-bg-blue .layui-nav-title a:hover{background-color:#007DDB!important}.layui-breadcrumb{font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#5FB878!important}.layui-breadcrumb a cite{color:#666;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s;position:relative;line-height:40px;min-width:65px;padding:0 15px;text-align:center;cursor:pointer}.layui-tab-title li a{display:block}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\9;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#FF5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#009688}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #5FB878}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#FAFAFA}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#5FB878}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#5FB878;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#FF5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#FF5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#666}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\9;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add],.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\9;opacity:1;left:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown]>[carousel-item]>*,.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:15px;bottom:15px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9F9F9F;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#666;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #D9D9D9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{position:relative;margin:10px 0;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#FAFAFA;color:#333;font-family:Courier New;font-size:12px}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:10px 5px 10px 0;font-size:0}.layui-rate li i.layui-icon{font-size:20px;color:#FFB800;margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:26px;height:26px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:34px;height:34px;line-height:32px}.layui-colorpicker.layui-colorpicker-sm{width:24px;height:24px;line-height:22px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:20px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#FFF;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;z-index:66666666;width:280px;padding:7px;background:#FFF;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#FFF,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #FFF;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#FF0,#0F0,#0FF,#00F,#F0F,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;background:#FFF;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;background:#FFF;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#666}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#FFF;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#FFF;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:66666666;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#FFF;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px}.layui-slider-input-btn{position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #eee}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #eee}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none}.layui-slider-input-btn i:hover{color:#009688}.layui-slider-vertical{width:4px;margin-left:33px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-iconClick,.layui-tree-main{display:inline-block;vertical-align:middle}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:"";position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:20px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:"";position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:12px;line-height:12px;width:12px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#666}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:"";position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-btnGroup,.layui-tree-editInput{position:relative;vertical-align:middle;display:inline-block}.layui-tree-spread>.layui-tree-entry>.layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#666}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{height:20px;line-height:20px;padding:0 3px;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.2s;-webkit-animation-fill-mode:both;animation-duration:.2s;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .2s;-webkit-transition:all .2s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,15px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,15px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@keyframes layui-down{0%{opacity:.3;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-down{animation-name:layui-down}@keyframes layui-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-downbit{animation-name:layui-downbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@keyframes layui-scalesmall{0%{opacity:.3;transform:scale(1.5)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall{animation-name:layui-scalesmall}@keyframes layui-scalesmall-spring{0%{opacity:.3;transform:scale(1.5)}80%{opacity:.8;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall-spring{animation-name:layui-scalesmall-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout} \ No newline at end of file +.layui-inline,img{display:inline-block;vertical-align:middle}h1,h2,h3,h4,h5,h6{font-weight:400}a,body{color:#333}.layui-edge,.layui-header,.layui-inline,.layui-main{position:relative}.layui-edge,hr{height:0;overflow:hidden}.layui-layout-body,.layui-side,.layui-side-scroll{overflow-x:hidden}.layui-btn,.layui-edge,.layui-inline,img{vertical-align:middle}.layui-btn,.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-edge,.layui-elip,hr{overflow:hidden}blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{border:none}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h4,h5,h6{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{line-height:0;margin:10px 0;padding:0;border:none!important;border-bottom:1px solid #eee!important;clear:both;background:0 0}a{text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-inline{*display:inline;*zoom:1}.layui-btn,.layui-btn-group,.layui-edge{display:inline-block}.layui-edge{width:0;border-width:6px;border-style:dashed;border-color:transparent}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-elip{text-overflow:ellipsis;white-space:nowrap}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-show-v{visibility:visible!important}.layui-hide-v{visibility:hidden!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=256);src:url(../font/iconfont.eot?v=256#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=256) format('woff2'),url(../font/iconfont.woff?v=256) format('woff'),url(../font/iconfont.ttf?v=256) format('truetype'),url(../font/iconfont.svg?v=256#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-search:before{content:"\e615"}.layui-icon-share:before{content:"\e641"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-engine:before{content:"\e628"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-star:before{content:"\e600"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-chat:before{content:"\e606"}.layui-icon-release:before{content:"\e609"}.layui-icon-list:before{content:"\e60a"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-ok-circle:before{content:"\1005"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-table:before{content:"\e62d"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-edit:before{content:"\e642"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-down:before{content:"\e61a"}.layui-icon-file:before{content:"\e621"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-read:before{content:"\e705"}.layui-icon-404:before{content:"\e61c"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-help:before{content:"\e607"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-water:before{content:"\e636"}.layui-icon-username:before{content:"\e66f"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-about:before{content:"\e60b"}.layui-icon-location:before{content:"\e715"}.layui-icon-up:before{content:"\e619"}.layui-icon-pause:before{content:"\e651"}.layui-icon-date:before{content:"\e637"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-delete:before{content:"\e640"}.layui-icon-play:before{content:"\e652"}.layui-icon-top:before{content:"\e604"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-friends:before{content:"\e612"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-ok:before{content:"\e605"}.layui-icon-layer:before{content:"\e638"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-group:before{content:"\e613"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-link:before{content:"\e64c"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-log:before{content:"\e60e"}.layui-icon-key:before{content:"\e683"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-return:before{content:"\e65c"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-form:before{content:"\e63c"}.layui-icon-cart:before{content:"\e657"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-ios:before{content:"\e680"}.layui-icon-at:before{content:"\e687"}.layui-icon-fire:before{content:"\e756"}.layui-icon-set:before{content:"\e716"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-tips:before{content:"\e702"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-addition:before{content:"\e624"}.layui-icon-home:before{content:"\e68e"}.layui-icon-time:before{content:"\e68d"}.layui-icon-user:before{content:"\e770"}.layui-icon-notice:before{content:"\e667"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-voice:before{content:"\e688"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-logout:before{content:"\e682"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-template:before{content:"\e663"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-auz:before{content:"\e672"}.layui-icon-console:before{content:"\e665"}.layui-icon-app:before{content:"\e653"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-next:before{content:"\e65b"}.layui-icon-component:before{content:"\e857"}.layui-icon-android:before{content:"\e684"}.layui-icon-more:before{content:"\e65f"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-camera:before{content:"\e660"}.layui-icon-note:before{content:"\e66e"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-password:before{content:"\e673"}.layui-icon-senior:before{content:"\e674"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-service:before{content:"\e626"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-print:before{content:"\e66d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-export:before{content:"\e67d"}.layui-icon-rss:before{content:"\e808"}.layui-icon-slider:before{content:"\e714"}.layui-icon-email:before{content:"\e618"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-light:before{content:"\e748"}.layui-icon-gift:before{content:"\e627"}.layui-icon-mute:before{content:"\e685"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-music:before{content:"\e690"}.layui-main{width:1140px;margin:0 auto}.layui-header{z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px}.layui-side-scroll{position:relative;width:220px;height:100%}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23262E}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#FAFAFA}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#009688;font-size:16px;box-shadow:0 1px 2px 0 rgb(0 0 0 / 15%)}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;padding:0 15px;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:768px){.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:750px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:970px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1170px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.6;border-left:5px solid #5FB878;border-radius:0 2px 2px 0;background-color:#FAFAFA}.layui-quote-nm{border-style:solid;border-width:1px 1px 1px 5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px;font-weight:300}.layui-field-title{margin:10px 0 20px;border-width:1px 0 0}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#5FB878;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#666}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#FAFAFA;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#666}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card-body,.layui-card-header,.layui-form-label,.layui-form-mid,.layui-form-select,.layui-input-block,.layui-input-inline,.layui-panel,.layui-textarea{position:relative}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f6f6f6;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{border-width:1px;border-style:solid;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);background-color:#fff;color:#666}.layui-bg-black,.layui-bg-blue,.layui-bg-cyan,.layui-bg-green,.layui-bg-orange,.layui-bg-red{color:#fff!important}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-border,.layui-border-black,.layui-border-blue,.layui-border-cyan,.layui-border-green,.layui-border-orange,.layui-border-red{border-width:1px;border-style:solid}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-bg-red{background-color:#FF5722!important}.layui-bg-orange{background-color:#FFB800!important}.layui-bg-green{background-color:#009688!important}.layui-bg-cyan{background-color:#2F4056!important}.layui-bg-blue{background-color:#1E9FFF!important}.layui-bg-black{background-color:#393D49!important}.layui-bg-gray{background-color:#FAFAFA!important;color:#666!important}.layui-badge-rim,.layui-border,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-layedit,.layui-layedit-tool,.layui-panel,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#eee}.layui-border{color:#666!important}.layui-border-red{border-color:#FF5722!important;color:#FF5722!important}.layui-border-orange{border-color:#FFB800!important;color:#FFB800!important}.layui-border-green{border-color:#009688!important;color:#009688!important}.layui-border-cyan{border-color:#2F4056!important;color:#2F4056!important}.layui-border-blue{border-color:#1E9FFF!important;color:#1E9FFF!important}.layui-border-black{border-color:#393D49!important;color:#393D49!important}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.6;font-size:14px;color:#666}.layui-text h1,.layui-text h2,.layui-text h3{font-weight:500;color:#333}.layui-text h1{font-size:30px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text a:not(.layui-btn){color:#01AAED}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text ul{padding:5px 0 5px 15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-text p{margin:10px 0}.layui-text p:first-child{margin-top:0}.layui-font-12{font-size:12px!important}.layui-font-14{font-size:14px!important}.layui-font-16{font-size:16px!important}.layui-font-18{font-size:18px!important}.layui-font-20{font-size:20px!important}.layui-font-red{color:#FF5722!important}.layui-font-orange{color:#FFB800!important}.layui-font-green{color:#009688!important}.layui-font-cyan{color:#2F4056!important}.layui-font-blue{color:#01AAED!important}.layui-font-black{color:#000!important}.layui-font-gray{color:#c2c2c2!important}.layui-btn{height:38px;line-height:38px;border:1px solid transparent;padding:0 18px;background-color:#009688;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border-radius:2px;cursor:pointer}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{font-size:0}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{padding:0 2px;vertical-align:middle\9;vertical-align:bottom}.layui-btn-primary{border-color:#d2d2d2;background:0 0;color:#666}.layui-btn-primary:hover{border-color:#009688;color:#333}.layui-btn-normal{background-color:#1E9FFF}.layui-btn-warm{background-color:#FFB800}.layui-btn-danger{background-color:#FF5722}.layui-btn-checked{background-color:#5FB878}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border-color:#eee!important;background-color:#FBFBFB!important;color:#d2d2d2!important;cursor:not-allowed!important;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:12px!important}.layui-btn-group{vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#d2d2d2;color:#009688}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #d2d2d2}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border-width:1px;border-style:solid;background-color:#fff;border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#eee!important}.layui-input:focus,.layui-textarea:focus{border-color:#d2d2d2!important}.layui-textarea{min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#FF5722!important}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #d2d2d2;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#F6F6F6;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#5FB878;color:#fff}.layui-form-checkbox,.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-checkbox,.layui-form-checkbox *,.layui-form-switch{display:inline-block;vertical-align:middle}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg);margin-top:-3px\9}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;height:30px;line-height:30px;margin-right:10px;padding-right:30px;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox span{padding:0 10px;height:100%;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.layui-form-checkbox:hover span{background-color:#c2c2c2}.layui-form-checkbox i{position:absolute;right:0;top:0;width:30px;height:28px;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;font-size:20px;text-align:center}.layui-form-checkbox:hover i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#5FB878}.layui-form-checked span,.layui-form-checked:hover span{background-color:#5FB878}.layui-form-checked i,.layui-form-checked:hover i{color:#5FB878}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:28px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary] span{padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#666}.layui-form-checkbox[lay-skin=primary] i{right:auto;left:0;width:16px;height:16px;line-height:16px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover i{border-color:#5FB878;color:#fff}.layui-form-checked[lay-skin=primary] i{border-color:#5FB878!important;background-color:#5FB878;color:#fff}.layui-checkbox-disbaled[lay-skin=primary] span{background:0 0!important;color:#c2c2c2!important}.layui-checkbox-disbaled[lay-skin=primary]:hover i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-switch{position:relative;height:22px;line-height:22px;min-width:35px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch em{position:relative;top:0;width:25px;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#5FB878;background-color:#5FB878}.layui-checkbox-disbaled,.layui-checkbox-disbaled i{border-color:#eee!important}.layui-form-onswitch i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch em{margin-left:5px;margin-right:21px;color:#fff!important}.layui-checkbox-disbaled span{background-color:#eee!important}.layui-checkbox-disbaled em{color:#d2d2d2!important}.layui-checkbox-disbaled:hover i{color:#fff!important}[lay-radio]{display:none}.layui-form-radio,.layui-form-radio *{display:inline-block;vertical-align:middle}.layui-form-radio{line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio *{font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio:hover *,.layui-form-radioed,.layui-form-radioed>i{color:#5FB878}.layui-radio-disbaled>i{color:#eee!important}.layui-radio-disbaled *{color:#c2c2c2!important}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#FBFBFB;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0 1px 0 0}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto!important;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-layedit{border-width:1px;border-style:solid;border-radius:2px}.layui-layedit-tool{padding:3px 5px;border-bottom-width:1px;border-bottom-style:solid;font-size:0}.layedit-tool-fixed{position:fixed;top:0;border-top:1px solid #eee}.layui-layedit-tool .layedit-tool-mid,.layui-layedit-tool .layui-icon{display:inline-block;vertical-align:middle;text-align:center;font-size:14px}.layui-layedit-tool .layui-icon{position:relative;width:32px;height:30px;line-height:30px;margin:3px 5px;color:#777;cursor:pointer;border-radius:2px}.layui-layedit-tool .layui-icon:hover{color:#393D49}.layui-layedit-tool .layui-icon:active{color:#000}.layui-layedit-tool .layedit-tool-active{background-color:#eee;color:#000}.layui-layedit-tool .layui-disabled,.layui-layedit-tool .layui-disabled:hover{color:#d2d2d2;cursor:not-allowed}.layui-layedit-tool .layedit-tool-mid{width:1px;height:18px;margin:0 10px;background-color:#d2d2d2}.layedit-tool-html{width:50px!important;font-size:30px!important}.layedit-tool-b,.layedit-tool-code,.layedit-tool-help{font-size:16px!important}.layedit-tool-d,.layedit-tool-face,.layedit-tool-image,.layedit-tool-unlink{font-size:18px!important}.layedit-tool-image input{position:absolute;font-size:0;left:0;top:0;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-layedit-iframe iframe{display:block;width:100%}#LAY_layedit_code{overflow:hidden}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #eee}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-flow-more a *,.layui-laypage input,.layui-table-view select[lay-ignore]{display:inline-block}.layui-laypage a:hover{color:#009688}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage a{text-decoration:none}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#009688}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#009688!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-table,.layui-table-view{margin:10px 0}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;background-color:#fff;color:#666}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:400}.layui-table tbody tr:hover,.layui-table thead tr,.layui-table-click,.layui-table-header,.layui-table-hover,.layui-table-mend,.layui-table-patch,.layui-table-tool,.layui-table-total,.layui-table-total tr,.layui-table[lay-even] tr:nth-child(even){background-color:#FAFAFA}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0 0 1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0 1px 0 0}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding:15px 30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:40px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{font-size:12px;padding:5px 10px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:20px;line-height:20px}.layui-table[lay-data]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view .layui-table{position:relative;width:auto;margin:0}.layui-table-view .layui-table[lay-skin=line]{border-width:0 1px 0 0}.layui-table-view .layui-table[lay-skin=row]{border-width:0 0 1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:5px 0;border-top:none;border-left:none}.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td{cursor:default}.layui-table-view .layui-table td[data-edit=text]{cursor:text}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:110}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0 0 1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;padding:5px 0;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-cell,.layui-table-tool-panel li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layui-table-tool-panel li{padding:0 10px;line-height:30px;-webkit-transition:.5s all;transition:.5s all}.layui-menu li,.layui-menu-body-title a:hover,.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%;padding-left:28px}.layui-table-tool-panel li:hover{background-color:#F6F6F6}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0 0 0 1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#666}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#666}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:28px;line-height:28px;padding:0 15px;position:relative;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-table-link{color:#01AAED}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{padding:0;text-align:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:30px 15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:0 -1px 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0 0 0 1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px}.layui-table-tool{position:relative;z-index:890;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0 0 1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-page,.layui-table-total{border-width:1px 0 0;margin-bottom:-1px;overflow:hidden}.layui-table-page{position:relative;width:100%;padding:7px 7px 0;height:41px;font-size:12px;white-space:nowrap}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-7px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;width:100%;height:100%;padding:0 14px 1px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15)}.layui-table-edit:focus{border-color:#5FB878!important}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0;box-sizing:content-box}.layui-colorpicker-alpha-slider,.layui-colorpicker-side-slider,.layui-menu,.layui-menu *,.layui-nav{box-sizing:border-box}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:26px;height:100%;padding:5px 0;border-width:0 0 0 1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px}.layui-table-grid-down:hover{background-color:#fbfbfb}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-44px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#666}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#666;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-drag,.layui-upload-form,.layui-upload-wrap{display:inline-block}.layui-upload-list{margin:10px 0}.layui-upload-choose{max-width:200px;padding:0 10px;color:#999;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-upload-drag{position:relative;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#009688}.layui-upload-drag[lay-over]{border-color:#009688}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-btn-container .layui-upload-choose{padding-left:0}.layui-menu{position:relative;margin:5px 0;background-color:#fff}.layui-menu li,.layui-menu-body-title a{padding:5px 15px}.layui-menu li{position:relative;margin:1px 0;width:calc(100% + 1px);line-height:26px;color:rgba(0,0,0,.8);font-size:14px;white-space:nowrap;cursor:pointer}.layui-menu li:hover{background-color:#F6F6F6}.layui-menu-item-parent:hover>.layui-menu-body-panel{display:block;animation-name:layui-fadein;animation-duration:.3s;animation-fill-mode:both;animation-delay:.2s}.layui-menu-item-group .layui-menu-body-title,.layui-menu-item-parent .layui-menu-body-title{padding-right:25px}.layui-menu .layui-menu-item-divider:hover,.layui-menu .layui-menu-item-group:hover,.layui-menu .layui-menu-item-none:hover{background:0 0;cursor:default}.layui-menu .layui-menu-item-group>ul{margin:5px 0 -5px}.layui-menu .layui-menu-item-group>.layui-menu-body-title{color:rgba(0,0,0,.35);user-select:none}.layui-menu .layui-menu-item-none{color:rgba(0,0,0,.35);cursor:default;text-align:center}.layui-menu .layui-menu-item-divider{margin:5px 0;padding:0;height:0;line-height:0;border-bottom:1px solid #eee;overflow:hidden}.layui-menu .layui-menu-item-down:hover,.layui-menu .layui-menu-item-up:hover{cursor:pointer}.layui-menu .layui-menu-item-up>.layui-menu-body-title{color:rgba(0,0,0,.8)}.layui-menu .layui-menu-item-up>ul{visibility:hidden;height:0;overflow:hidden}.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon,.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon{color:rgba(0,0,0,1)}.layui-menu .layui-menu-item-down>ul{visibility:visible;height:auto}.layui-breadcrumb,.layui-tree-btnGroup{visibility:hidden}.layui-menu .layui-menu-item-checked,.layui-menu .layui-menu-item-checked2{background-color:#F6F6F6!important;color:#5FB878}.layui-menu .layui-menu-item-checked a,.layui-menu .layui-menu-item-checked2 a{color:#5FB878}.layui-menu .layui-menu-item-checked:after{position:absolute;right:0;top:0;bottom:0;border-right:3px solid #5FB878;content:""}.layui-menu-body-title{position:relative;overflow:hidden;text-overflow:ellipsis}.layui-menu-body-title a{display:block;margin:-5px -15px;color:rgba(0,0,0,.8)}.layui-menu-body-title>.layui-icon{position:absolute;right:0;top:0;font-size:14px}.layui-menu-body-title>.layui-icon-right{right:-1px}.layui-menu-body-panel{display:none;position:absolute;top:-7px;left:100%;z-index:1000;margin-left:13px;padding:5px 0}.layui-menu-body-panel:before{content:"";position:absolute;width:20px;left:-16px;top:0;bottom:0}.layui-menu-body-panel-left{left:auto;right:100%;margin:0 13px}.layui-menu-body-panel-left:before{left:auto;right:-16px}.layui-menu-lg li{line-height:32px}.layui-menu-lg .layui-menu-body-title a:hover,.layui-menu-lg li:hover{background:0 0;color:#5FB878}.layui-menu-lg li .layui-menu-body-panel{margin-left:14px}.layui-menu-lg li .layui-menu-body-panel-left{margin:0 15px}.layui-dropdown{position:absolute;left:-999999px;top:-999999px;z-index:66666666;margin:5px 0;min-width:100px}.layui-dropdown:before{content:"";position:absolute;width:100%;height:6px;left:0;top:-6px}.layui-nav{position:relative;padding:0 20px;background-color:#393D49;color:#fff;border-radius:2px;font-size:0}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar{content:"";position:absolute;left:0;top:0;width:0;height:5px;background-color:#5FB878;transition:all .2s;-webkit-transition:all .2s}.layui-nav-bar{z-index:1000}.layui-nav[lay-bar=disabled] .layui-nav-bar{display:none}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff}.layui-nav .layui-this:after{top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{position:absolute;top:0;right:3px;left:auto!important;margin-top:0;font-size:12px;cursor:pointer;transition:all .2s;-webkit-transition:all .2s}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{transform:rotate(180deg)}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #eee;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap}.layui-nav .layui-nav-child a{color:#666;color:rgba(0,0,0,.8)}.layui-nav .layui-nav-child a:hover{background-color:#F6F6F6;color:rgba(0,0,0,.8)}.layui-nav-child dd{margin:1px 0;position:relative}.layui-nav-child dd.layui-this{background-color:#F6F6F6;color:#000}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-child-r{left:auto;right:0}.layui-nav-child-c{text-align:center}.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:40px}.layui-nav-tree .layui-nav-item a{position:relative;height:40px;line-height:40px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item>a{padding-top:5px;padding-bottom:5px}.layui-nav-tree .layui-nav-more{right:15px;padding:6px 0}.layui-nav-tree .layui-nav-bar{width:5px;height:0;background-color:#009688}.layui-side .layui-nav-tree .layui-nav-bar{width:2px}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#009688;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;box-shadow:none}.layui-nav-tree .layui-nav-child dd{margin:0}.layui-nav-tree .layui-nav-child a{color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child,.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-itemed>.layui-nav-child{display:block;background-color:rgba(0,0,0,.3)!important}.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-breadcrumb{font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#5FB878!important}.layui-breadcrumb a cite{color:#666;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s;position:relative;line-height:40px;min-width:65px;padding:0 15px;text-align:center;cursor:pointer}.layui-tab-title li a{display:block;padding:0 15px;margin:0 -15px}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\9;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#FF5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#009688}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #5FB878}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#FAFAFA}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#5FB878}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#5FB878;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#FF5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#FF5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#666}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\9;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add],.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\9;opacity:1;left:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown]>[carousel-item]>*,.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:15px;bottom:15px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9F9F9F;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#666;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-transfer-active,.layui-transfer-box{display:inline-block;vertical-align:middle}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #D9D9D9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{position:relative;margin:10px 0;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#FAFAFA;color:#333;font-family:Courier New;font-size:12px}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#eee}.layui-transfer-box{position:relative;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 10px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:10px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;margin-top:-8px;color:#666}.layui-transfer-active{margin:0 15px}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#5FB878;border-color:#5FB878;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#FBFBFB;border-color:#eee;color:#d2d2d2}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;padding:0 10px}.layui-transfer-data li:hover{background-color:#F6F6F6;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 10px;text-align:center;color:#999}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:10px 5px 10px 0;font-size:0}.layui-rate li i.layui-icon{font-size:20px;color:#FFB800;margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:26px;height:26px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:34px;height:34px;line-height:32px}.layui-colorpicker.layui-colorpicker-sm{width:24px;height:24px;line-height:22px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:20px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#FFF;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;z-index:66666666;width:280px;padding:7px;background:#FFF;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#FFF,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #FFF;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#FF0,#0F0,#0FF,#00F,#F0F,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;background:#FFF;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;background:#FFF;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#666}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#FFF;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#FFF;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:66666666;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#FFF;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px}.layui-slider-input-btn{position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #eee}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #eee}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none}.layui-slider-input-btn i:hover{color:#009688}.layui-slider-vertical{width:4px;margin-left:33px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-iconClick,.layui-tree-main{display:inline-block;vertical-align:middle}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:"";position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:20px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:"";position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:12px;line-height:12px;width:12px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#666}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:"";position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-btnGroup,.layui-tree-editInput{position:relative;vertical-align:middle;display:inline-block}.layui-tree-spread>.layui-tree-entry>.layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#666}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{height:20px;line-height:20px;padding:0 3px;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.3s;-webkit-animation-fill-mode:both;animation-duration:.3s;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .2s;-webkit-transition:all .2s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,15px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,15px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@keyframes layui-down{0%{opacity:.3;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-down{animation-name:layui-down}@keyframes layui-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-downbit{animation-name:layui-downbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@keyframes layui-scalesmall{0%{opacity:.3;transform:scale(1.5)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall{animation-name:layui-scalesmall}@keyframes layui-scalesmall-spring{0%{opacity:.3;transform:scale(1.5)}80%{opacity:.8;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall-spring{animation-name:layui-scalesmall-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout} \ No newline at end of file diff --git a/public/static/layui/css/modules/laydate/default/laydate.css b/public/static/layui/css/modules/laydate/default/laydate.css index 9f3064b..c08928b 100644 --- a/public/static/layui/css/modules/laydate/default/laydate.css +++ b/public/static/layui/css/modules/laydate/default/laydate.css @@ -1 +1 @@ -.laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate-list{box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate{position:absolute;z-index:66666666;margin:5px 0;border-radius:2px;font-size:14px;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;animation-name:laydate-downbit}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon,.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.laydate-set-ym span,.layui-laydate-header i{padding:0 5px;cursor:pointer}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;color:#999;font-size:18px}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:5px;text-align:center}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;height:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px 20px}.layui-laydate-footer span{margin-right:15px;display:inline-block;cursor:pointer;font-size:12px}.layui-laydate-footer span:hover{color:#5FB878}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{height:26px;line-height:26px;margin:0 0 0 -1px;padding:0 10px;border:1px solid #C9C9C9;background-color:#fff;white-space:nowrap;vertical-align:top;border-radius:2px}.layui-laydate-list>li,.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle}.layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;background-color:#fff}.layui-laydate-list>li{position:relative;width:33.3%;height:36px;line-height:36px;margin:3px 0;text-align:center;cursor:pointer}.laydate-month-list>li{width:25%;margin:17px 0}.laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.laydate-time-list p{position:relative;top:-4px;line-height:29px}.laydate-time-list ol{height:181px;overflow:hidden}.laydate-time-list>li:hover ol{overflow-y:auto}.laydate-time-list ol li{width:130%;padding-left:33px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px}.layui-laydate-range{width:546px}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#666}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#5FB878}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{font-weight:400;color:#333}.layui-laydate-content td{color:#666}.layui-laydate-content td.laydate-selected{background-color:#B5FFF8}.laydate-selected:hover{background-color:#00F7DE!important}.layui-laydate-content td:hover,.layui-laydate-list li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.laydate-selected.laydate-day-next,.laydate-selected.laydate-day-prev{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#FF5722}.laydate-day-mark::after{background-color:#5FB878}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#5FB878}.layui-laydate .layui-this{background-color:#009688!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#009688}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead,.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-selected,.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#009688!important}.laydate-theme-grid .laydate-selected.laydate-day-next,.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px} \ No newline at end of file +.laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate-list{box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate{position:absolute;z-index:66666666;margin:5px 0;border-radius:2px;font-size:14px;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;animation-name:laydate-downbit}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon,.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;padding:0 5px;color:#999;font-size:18px;cursor:pointer}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-set-ym span{padding:0 10px;cursor:pointer}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:5px;text-align:center}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px}.layui-laydate-footer span{display:inline-block;vertical-align:top;height:26px;line-height:24px;padding:0 10px;border:1px solid #C9C9C9;border-radius:2px;background-color:#fff;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .3s}.layui-laydate-list>li,.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle}.layui-laydate-footer span:hover{color:#5FB878}.layui-laydate-footer span.layui-laydate-preview{cursor:default;border-color:transparent!important}.layui-laydate-footer span.layui-laydate-preview:hover{color:#666}.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left:0}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{margin:0 0 0 -1px}.layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;background-color:#fff}.layui-laydate-list>li{position:relative;width:33.3%;height:36px;line-height:36px;margin:3px 0;text-align:center;cursor:pointer}.laydate-month-list>li{width:25%;margin:17px 0}.laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.laydate-time-list p{position:relative;top:-4px;line-height:29px}.laydate-time-list ol{height:181px;overflow:hidden}.laydate-time-list>li:hover ol{overflow-y:auto}.laydate-time-list ol li{width:130%;padding-left:33px;height:30px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px}.layui-laydate-range{width:546px}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#666}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#5FB878}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{font-weight:400;color:#333}.layui-laydate-content td{color:#666}.layui-laydate-content td.laydate-selected{background-color:#B5FFF8}.laydate-selected:hover{background-color:#00F7DE!important}.layui-laydate-content td:hover,.layui-laydate-list li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.laydate-selected.laydate-day-next,.laydate-selected.laydate-day-prev{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#FF5722}.laydate-day-mark::after{background-color:#5FB878}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#5FB878}.layui-laydate .layui-this{background-color:#009688!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#009688}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead,.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-selected,.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#009688!important}.laydate-theme-grid .laydate-selected.laydate-day-next,.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px} \ No newline at end of file diff --git a/public/static/layui/layui.js b/public/static/layui/layui.js index b288316..5e8697f 100644 --- a/public/static/layui/layui.js +++ b/public/static/layui/layui.js @@ -1,5 +1,6 @@ -/** layui v2.6.5 | Released under the MIT license */ - ;!function(t){"use strict";var e=document,n={modules:{},status:{},timeout:10,event:{}},r=function(){this.v="2.6.5"},o=function(){var t=e.currentScript?e.currentScript.src:function(){for(var t,n=e.scripts,r=n.length-1,o=r;o>0;o--)if("interactive"===n[o].readyState){t=n[o].src;break}return t||n[r].src}();return n.dir=t.substring(0,t.lastIndexOf("/")+1)}(),a=function(e,n){n=n||"log",t.console&&console[n]&&console[n]("layui error hint: "+e)},i="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u=n.builtin={lay:"lay",layer:"layer",laydate:"laydate",laypage:"laypage",laytpl:"laytpl",layedit:"layedit",form:"form",upload:"upload",dropdown:"dropdown",transfer:"transfer",tree:"tree",table:"table",element:"element",rate:"rate",colorpicker:"colorpicker",slider:"slider",carousel:"carousel",flow:"flow",util:"util",code:"code",jquery:"jquery",all:"all","layui.all":"layui.all"};r.prototype.cache=n,r.prototype.define=function(t,e){var r=this,o="function"==typeof t,a=function(){var t=function(t,e){layui[t]=e,n.status[t]=!0};return"function"==typeof e&&e(function(r,o){t(r,o),n.callback[r]=function(){e(t)}}),this};return o&&(e=t,t=[]),r.use(t,a,null,"define"),r},r.prototype.use=function(t,r,l,c){function s(t,e){var r="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===t.type||r.test((t.currentTarget||t.srcElement).readyState))&&(n.modules[v]=e,d.removeChild(g),function o(){return++h>1e3*n.timeout/4?a(v+" is not a valid module","error"):void(n.status[v]?p():setTimeout(o,4))}())}function p(){l.push(layui[v]),t.length>1?f.use(t.slice(1),r,l,c):"function"==typeof r&&function(){return layui.jquery&&"function"==typeof layui.jquery&&"define"!==c?layui.jquery(function(){r.apply(layui,l)}):void r.apply(layui,l)}()}var f=this,y=n.dir=n.dir?n.dir:o,d=e.getElementsByTagName("head")[0];t=function(){return"string"==typeof t?[t]:"function"==typeof t?(r=t,["all"]):t}(),window.jQuery&&jQuery.fn.on&&(f.each(t,function(e,n){"jquery"===n&&t.splice(e,1)}),layui.jquery=layui.$=jQuery);var v=t[0],h=0;if(l=l||[],n.host=n.host||(y.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===t.length||layui["layui.all"]&&u[v])return p(),f;var m=(u[v]?y+"modules/":/^\{\/\}/.test(f.modules[v])?"":n.base||"")+(f.modules[v]||v)+".js";if(m=m.replace(/^\{\/\}/,""),!n.modules[v]&&layui[v]&&(n.modules[v]=m),n.modules[v])!function b(){return++h>1e3*n.timeout/4?a(v+" is not a valid module","error"):void("string"==typeof n.modules[v]&&n.status[v]?p():setTimeout(b,4))}();else{var g=e.createElement("script");g.async=!0,g.charset="utf-8",g.src=m+function(){var t=n.version===!0?n.v||(new Date).getTime():n.version||"";return t?"?v="+t:""}(),d.appendChild(g),!g.attachEvent||g.attachEvent.toString&&g.attachEvent.toString().indexOf("[native code")<0||i?g.addEventListener("load",function(t){s(t,m)},!1):g.attachEvent("onreadystatechange",function(t){s(t,m)}),n.modules[v]=m}return f},r.prototype.getStyle=function(e,n){var r=e.currentStyle?e.currentStyle:t.getComputedStyle(e,null);return r[r.getPropertyValue?"getPropertyValue":"getAttribute"](n)},r.prototype.link=function(t,r,o){var i=this,u=e.getElementsByTagName("head")[0],l=e.createElement("link");"string"==typeof r&&(o=r);var c=(o||t).replace(/\.|\//g,""),s=l.id="layuicss-"+c,p="creating",f=0;return l.rel="stylesheet",l.href=t+(n.debug?"?v="+(new Date).getTime():""),l.media="all",e.getElementById(s)||u.appendChild(l),"function"!=typeof r?i:(function y(o){var u=100,l=e.getElementById(s);return++f>1e3*n.timeout/u?a(t+" timeout"):void(1989===parseInt(i.getStyle(l,"width"))?(o===p&&l.removeAttribute("lay-status"),l.getAttribute("lay-status")===p?setTimeout(y,u):r()):(l.setAttribute("lay-status",p),setTimeout(function(){y(p)},u)))}(),i)},r.prototype.addcss=function(t,e,r){return layui.link(n.dir+"css/"+t,e,r)},n.callback={},r.prototype.factory=function(t){if(layui[t])return"function"==typeof n.callback[t]?n.callback[t]:null},r.prototype.img=function(t,e,n){var r=new Image;return r.src=t,r.complete?e(r):(r.onload=function(){r.onload=null,"function"==typeof e&&e(r)},void(r.onerror=function(t){r.onerror=null,"function"==typeof n&&n(t)}))},r.prototype.config=function(t){t=t||{};for(var e in t)n[e]=t[e];return this},r.prototype.modules=function(){var t={};for(var e in u)t[e]=u[e];return t}(),r.prototype.extend=function(t){var e=this;t=t||{};for(var n in t)e[n]||e.modules[n]?a(n+" Module already exists","error"):e.modules[n]=t[n];return e},r.prototype.router=function(t){var e=this,t=t||location.hash,n={path:[],search:{},hash:(t.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)?(t=t.replace(/^#\//,""),n.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],e.each(t,function(t,e){/^\w+=/.test(e)?function(){e=e.split("="),n.search[e[0]]=e[1]}():n.path.push(e)}),n):n},r.prototype.url=function(t){var e=this,n={pathname:function(){var e=t?function(){var e=(t.match(/\.[^.]+?\/.+/)||[])[0]||"";return e.replace(/^[^\/]+/,"").replace(/\?.+/,"")}():location.pathname;return e.replace(/^\//,"").split("/")}(),search:function(){var n={},r=(t?function(){var e=(t.match(/\?.+/)||[])[0]||"";return e.replace(/\#.+/,"")}():location.search).replace(/^\?+/,"").split("&");return e.each(r,function(t,e){var r=e.indexOf("="),o=function(){return r<0?e.substr(0,e.length):0!==r&&e.substr(0,r)}();o&&(n[o]=r>0?e.substr(r+1):null)}),n}(),hash:e.router(function(){return t?(t.match(/#.+/)||[])[0]||"":location.hash}())};return n},r.prototype.data=function(e,n,r){if(e=e||"layui",r=r||localStorage,t.JSON&&t.JSON.parse){if(null===n)return delete r[e];n="object"==typeof n?n:{key:n};try{var o=JSON.parse(r[e])}catch(a){var o={}}return"value"in n&&(o[n.key]=n.value),n.remove&&delete o[n.key],r[e]=JSON.stringify(o),n.key?o[n.key]:o}},r.prototype.sessionData=function(t,e){return this.data(t,e,sessionStorage)},r.prototype.device=function(e){var n=navigator.userAgent.toLowerCase(),r=function(t){var e=new RegExp(t+"/([^\\s\\_\\-]+)");return t=(n.match(e)||[])[1],t||!1},o={os:function(){return/windows/.test(n)?"windows":/linux/.test(n)?"linux":/iphone|ipod|ipad|ios/.test(n)?"ios":/mac/.test(n)?"mac":void 0}(),ie:function(){return!!(t.ActiveXObject||"ActiveXObject"in t)&&((n.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:r("micromessenger")};return e&&!o[e]&&(o[e]=r(e)),o.android=/android/.test(n),o.ios="ios"===o.os,o.mobile=!(!o.android&&!o.ios),o},r.prototype.hint=function(){return{error:a}},r.prototype.each=function(t,e){var n,r=this;if("function"!=typeof e)return r;if(t=t||[],t.constructor===Object){for(n in t)if(e.call(t[n],n,t[n]))break}else for(n=0;na?1:o0;o--)if("interactive"===n[o].readyState){t=n[o].src;break}return t||n[r].src}();return t.substring(0,t.lastIndexOf("/")+1)},n.stope=function(t){t=t||window.event,t.stopPropagation?t.stopPropagation():t.cancelBubble=!0},n.each=function(t,e){var n,r=this;if("function"!=typeof e)return r;if(t=t||[],t.constructor===Object){for(n in t)if(e.call(t[n],n,t[n]))break}else for(n=0;n1e4/o?window.console&&console.error(u+".css: Invalid"):void(1989===parseInt(n.getStyle(i,"width"))?(t===s&&i.removeAttribute("lay-status"),i.getAttribute("lay-status")===s?setTimeout(f,o):r()):(i.setAttribute("lay-status",s),setTimeout(function(){f(s)},o)))}()},n.hasScrollbar=function(){return e.body.scrollHeight>(window.innerHeight||e.documentElement.clientHeight)},n.position=function(t,r,o){if(r){o=o||{},t!==e&&t!==n("body")[0]||(o.clickType="right");var i="right"===o.clickType?function(){var t=o.e||window.event||{};return{left:t.clientX,top:t.clientY,right:t.clientX,bottom:t.clientY}}():t.getBoundingClientRect(),c=r.offsetWidth,u=r.offsetHeight,a=function(t){return t=t?"scrollLeft":"scrollTop",e.body[t]|e.documentElement[t]},s=function(t){return e.documentElement[t?"clientWidth":"clientHeight"]},l=5,f=i.left,h=i.bottom;f+c+l>s("width")&&(f=s("width")-c-l),h+u+l>s()&&(i.top>u+l?h=i.top-u-2*l:"right"===o.clickType&&(h=s()-u-2*l,h<0&&(h=0)));var p=o.position;if(p&&(r.style.position=p),r.style.left=f+("fixed"===p?0:a(1))+"px",r.style.top=h+("fixed"===p?0:a())+"px",!n.hasScrollbar()){var d=r.getBoundingClientRect();!o.SYSTEM_RELOAD&&d.bottom+l>s()&&(o.SYSTEM_RELOAD=!0,setTimeout(function(){n.position(t,r,o)},50))}}},n.options=function(t,e){var r=n(t),o=e||"lay-options";try{return new Function("return "+(r.attr(o)||"{}"))()}catch(i){return hint.error("parseerror:"+i,"error"),{}}},n.isTopElem=function(t){var r=[e,n("body")[0]],o=!1;return n.each(r,function(e,n){if(n===t)return o=!0}),o},r.addStr=function(t,e){return t=t.replace(/\s+/," "),e=e.replace(/\s+/," ").split(" "),n.each(e,function(e,n){new RegExp("\\b"+n+"\\b").test(t)||(t=t+" "+n)}),t.replace(/^\s|\s$/,"")},r.removeStr=function(t,e){return t=t.replace(/\s+/," "),e=e.replace(/\s+/," ").split(" "),n.each(e,function(e,n){var r=new RegExp("\\b"+n+"\\b");r.test(t)&&(t=t.replace(r,""))}),t.replace(/\s+/," ").replace(/^\s|\s$/,"")},r.prototype.find=function(t){var e=this,r=0,o=[],i="object"==typeof t;return this.each(function(n,c){for(var u=i?[t]:c.querySelectorAll(t||null);r0)return r[0].style[t]}():r.each(function(r,i){"object"==typeof t?n.each(t,function(t,e){i.style[t]=o(e)}):i.style[t]=o(e)})},r.prototype.width=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].offsetWidth}():e.each(function(n,r){e.css("width",t)})},r.prototype.height=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].offsetHeight}():e.each(function(n,r){e.css("height",t)})},r.prototype.attr=function(t,e){var n=this;return void 0===e?function(){if(n.length>0)return n[0].getAttribute(t)}():n.each(function(n,r){r.setAttribute(t,e)})},r.prototype.removeAttr=function(t){return this.each(function(e,n){n.removeAttribute(t)})},r.prototype.html=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].innerHTML}():this.each(function(e,n){n.innerHTML=t})},r.prototype.val=function(t){return void 0===t?function(){if(that.length>0)return that[0].value}():this.each(function(e,n){n.value=t})},r.prototype.append=function(t){return this.each(function(e,n){"object"==typeof t?n.appendChild(t):n.innerHTML=n.innerHTML+t})},r.prototype.remove=function(t){return this.each(function(e,n){t?n.removeChild(t):n.parentNode.removeChild(n)})},r.prototype.on=function(t,e){return this.each(function(n,r){r.attachEvent?r.attachEvent("on"+t,function(t){t.target=t.srcElement,e.call(r,t)}):r.addEventListener(t,e,!1)})},r.prototype.off=function(t,e){return this.each(function(n,r){r.detachEvent?r.detachEvent("on"+t,e):r.removeEventListener(t,e,!1)})},window.lay=n,window.layui&&layui.define&&layui.define(function(e){e(t,n)})}();layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//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,"$1")+';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,"$1")+')+"')}),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(e){"use strict";var t=e.layui&&layui.define,a={getPath:e.lay&&lay.getPath?lay.getPath():"",link:function(t,a,l){n.path&&e.lay&&lay.link&&lay.link(n.path+t,a,l)}},n={v:"5.2.1",config:{},index:e.laydate&&e.laydate.v?1e5:0,path:a.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var l="laydate",i="",r=(t?"modules/laydate/":"theme/")+"default/laydate.css?v="+n.v+i;return t?layui.addcss(r,e,l):a.link(r,e,l),this}},l=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",y=[100,2e5],d="layui-laydate-static",m="layui-laydate-list",c="laydate-selected",u="layui-laydate-hint",h="layui-laydate-footer",f=".laydate-btns-confirm",p="laydate-time-text",g=".laydate-btns-time",v=function(e){var t=this;t.index=++n.index,t.config=lay.extend({},t.config,n.config,e),n.ready(function(){t.init()})};v.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},v.prototype.config={type:"date",range:!1,format:"yyyy-MM-dd",value:null,isInitValue:!0,min:"1900-1-1",max:"2099-12-31",trigger:"click",show:!1,showBottom:!0,btns:["clear","now","confirm"],lang:"cn",theme:"default",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},v.prototype.lang=function(){var e=this,t=e.config,a={cn:{weeks:["日","一","二","三","四","五","六"],time:["时","分","秒"],timeTips:"选择时间",startTime:"开始时间",endTime:"结束时间",dateTips:"返回日期",month:["一","二","三","四","五","六","七","八","九","十","十一","十二"],tools:{confirm:"确定",clear:"清空",now:"现在"},timeout:"结束时间不能早于开始时间
    请重新选择",invalidDate:"不在有效日期或时间范围内",formatError:["日期格式不合法
    必须遵循下述格式:
    ","
    已为你重置"]},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
    Please re-select",invalidDate:"Invalid date",formatError:["The date format error
    Must be followed:
    ","
    It has been reset"]}};return a[t.lang]||a.cn},v.prototype.init=function(){var t=this,a=t.config,n="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s",l="static"===a.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};a.elem=lay(a.elem),a.eventElem=lay(a.eventElem),a.elem[0]&&(a.range===!0&&(a.range="-"),i[a.type]||(e.console&&console.error&&console.error("laydate type error:'"+a.type+"' is not supported"),a.type="date"),a.format===i.date&&(a.format=i[a.type]||i.date),t.format=a.format.match(new RegExp(n+"|.","g"))||[],t.EXP_IF="",t.EXP_SPLIT="",lay.each(t.format,function(e,a){var l=new RegExp(n).test(a)?"\\d{"+function(){return new RegExp(n).test(t.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?"1,4":/^y$/.test(a)?"1,308":"1,2"}()+"}":"\\"+a;t.EXP_IF=t.EXP_IF+l,t.EXP_SPLIT=t.EXP_SPLIT+"("+l+")"}),t.EXP_IF=new RegExp("^"+(a.range?t.EXP_IF+"\\s\\"+a.range+"\\s"+t.EXP_IF:t.EXP_IF)+"$"),t.EXP_SPLIT=new RegExp("^"+t.EXP_SPLIT+"$",""),t.isInput(a.elem[0])||"focus"===a.trigger&&(a.trigger="click"),a.elem.attr("lay-key")||(a.elem.attr("lay-key",t.index),a.eventElem.attr("lay-key",t.index)),a.mark=lay.extend({},a.calendar&&"cn"===a.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":"圣诞"}:{},a.mark),lay.each(["min","max"],function(e,t){var n=[],l=[];if("number"==typeof a[t]){var i=a[t],r=(new Date).getTime(),o=864e5,s=new Date(i?i0)return!0;var n=lay.elem("div",{"class":"layui-laydate-header"}),l=[function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="",e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",e}(),function(){var e=lay.elem("div",{"class":"laydate-set-ym"}),t=lay.elem("span"),a=lay.elem("span");return e.appendChild(t),e.appendChild(a),e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="",e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",e}()],y=lay.elem("div",{"class":"layui-laydate-content"}),d=lay.elem("table"),m=lay.elem("thead"),c=lay.elem("tr");lay.each(l,function(e,t){n.appendChild(t)}),m.appendChild(c),lay.each(new Array(6),function(e){var t=d.insertRow(0);lay.each(new Array(7),function(n){if(0===e){var l=lay.elem("th");l.innerHTML=a.weeks[n],c.appendChild(l)}t.insertCell(n)})}),d.insertBefore(m,d.children[0]),y.appendChild(d),i[e]=lay.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),i[e].appendChild(n),i[e].appendChild(y),r.push(l),o.push(y),s.push(d)}),lay(y).html(function(){var e=[],l=[];return"datetime"===t.type&&e.push(''+a.timeTips+""),lay.each(t.btns,function(e,i){var r=a.tools[i]||"btn";t.range&&"now"===i||(n&&"clear"===i&&(r="cn"===t.lang?"重置":"Reset"),l.push(''+r+""))}),e.push('"),e.join("")}()),lay.each(i,function(e,t){l.appendChild(t)}),t.showBottom&&l.appendChild(y),/^#/.test(t.theme)){var m=lay.elem("style"),c=["#{{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=c):m.innerHTML=c,lay(l).addClass("laydate-theme-molv"),l.appendChild(m)}e.remove(v.thisElemDate),n?t.elem.append(l):(document.body.appendChild(l),e.position()),e.checkDate().calendar(null,0,"init"),e.changeEvent(),v.thisElemDate=e.elemID,"function"==typeof t.ready&&t.ready(lay.extend({},t.dateTime,{month:t.dateTime.month+1}))},v.prototype.remove=function(e){var t=this,a=(t.config,lay("#"+(e||t.elemID)));return a[0]?(a.hasClass(d)||t.checkDate(function(){a.remove(),delete t.endDate}),t):t},v.prototype.position=function(){var e=this,t=e.config;return lay.position(e.bindElem||t.elem[0],e.elem,{position:t.position}),e},v.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":u}));t.elem&&(a.innerHTML=e||"",lay(t.elem).find("."+u).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+u).remove()},3e3))},v.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},v.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}},v.prototype.checkDate=function(e){var t,a,l=this,i=(new Date,l.config),r=l.lang(),o=i.dateTime=i.dateTime||l.systemDate(),s=l.bindElem||i.elem[0],d=(l.isInput(s)?"val":"html",l.isInput(s)?s.value:"static"===i.position?"":s.innerHTML),m=function(e){e.year>y[1]&&(e.year=y[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)},c=function(e,t,n){var r=["startTime","endTime"];t=(t.match(l.EXP_SPLIT)||[]).slice(1),n=n||0,i.range&&(l[r[n]]=l[r[n]]||{}),lay.each(l.format,function(o,s){var d=parseFloat(t[o]);t[o].length'+a+""),n},v.prototype.limit=function(e,t,a,n){var l,i=this,r=i.config,o={},y=r[a>41?"endDate":"dateTime"],d=lay.extend({},y,t||{});return lay.each({now:d,min:r.min,max:r.max},function(e,t){o[e]=i.newDate(lay.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return lay.each(n,function(a,n){e[n]=t[n]}),e}())).getTime()}),l=o.nowo.max,e&&e[l?"addClass":"removeClass"](s),l},v.prototype.thisDateTime=function(e){var t=this,a=t.config;return e?t.endDate:a.dateTime},v.prototype.calendar=function(e,t,a){var l,i,r,s=this,d=s.config,t=t?1:0,m=e||s.thisDateTime(t),c=new Date,u=s.lang(),h="date"!==d.type&&"datetime"!==d.type,p=lay(s.table[t]).find("td"),g=lay(s.elemHeader[t][2]).find("span");return m.yeary[1]&&(m.year=y[1],s.hint(u.invalidDate)),s.firstDate||(s.firstDate=lay.extend({},m)),c.setFullYear(m.year,m.month,1),l=c.getDay(),i=n.getEndDate(m.month||12,m.year),r=n.getEndDate(m.month+1,m.year),lay.each(p,function(e,t){var a=[m.year,m.month],n=0;t=lay(t),t.removeAttr("class"),e=l&&e=a.firstDate.year&&(i.month=n.max.month,i.date=n.max.date),a.limit(lay(l),i,t),C++}),lay(c[v?0:1]).attr("lay-ym",C-8+"-"+D[1]).html(w+T+" - "+(C-1+T))}else if("month"===e)lay.each(new Array(12),function(e){var l=lay.elem("li",{"lay-ym":e}),r={year:D[0],month:e};e+1==D[1]&&lay(l).addClass(o),l.innerHTML=i.month[e]+(v?"月":""),y.appendChild(l),D[0]=a.firstDate.year&&(r.date=n.max.date),a.limit(lay(l),r,t)}),lay(c[v?0:1]).attr("lay-ym",D[0]+"-"+D[1]).html(D[0]+T);else if("time"===e){var k=function(){lay(y).find("ol").each(function(e,n){lay(n).find("li").each(function(n,l){a.limit(lay(l),[{hours:n},{hours:a[x].hours,minutes:n},{hours:a[x].hours,minutes:a[x].minutes,seconds:n}][e],t,[["hours"],["hours","minutes"],["hours","minutes","seconds"]][e])})}),n.range||a.limit(lay(a.footer).find(f),a[x],0,["hours","minutes","seconds"])};n.range?a[x]||(a[x]={hours:0,minutes:0,seconds:0}):a[x]=l,lay.each([24,60,60],function(e,t){var n=lay.elem("li"),l=["

    "+i.time[e]+"

      "];lay.each(new Array(t),function(t){l.push(""+lay.digit(t,2)+"")}),n.innerHTML=l.join("")+"
    ",y.appendChild(n)}),k()}if(h&&u.removeChild(h),u.appendChild(y),"year"===e||"month"===e)lay(a.elemMain[t]).addClass("laydate-ym-show"),lay(y).find("li").on("click",function(){var i=0|lay(this).attr("lay-ym");if(!lay(this).hasClass(s)){0===t?(l[e]=i,a.limit(lay(a.footer).find(f),null,0)):a.endDate[e]=i;var d="year"===n.type||"month"===n.type;d?(lay(y).find("."+o).removeClass(o),lay(this).addClass(o),"month"===n.type&&"year"===e&&(a.listYM[t][0]=i,r&&(t?l.year=i:a.endDate.year=i),a.list("month",t))):(a.checkDate("limit").calendar(null,t),a.closeList()),a.setBtnStatus(),n.range||(("month"===n.type&&"month"===e||"year"===n.type&&"year"===e)&&a.setValue(a.parse()).remove().done(),a.done(null,"change")),lay(a.footer).find(g).removeClass(s)}});else{var E=lay.elem("span",{"class":p}),b=function(){lay(y).find("ol").each(function(e){var t=this,n=lay(t).find("li");t.scrollTop=30*(a[x][M[e]]-2),t.scrollTop<=0&&n.each(function(e,a){if(!lay(this).hasClass(s))return t.scrollTop=30*(e-2),!0})})},H=lay(d[2]).find("."+p);b(),E.innerHTML=n.range?[i.startTime,i.endTime][t]:i.timeTips,lay(a.elemMain[t]).addClass("laydate-time-show"),H[0]&&H.remove(),d[2].appendChild(E),lay(y).find("ol").each(function(e){var t=this;lay(t).find("li").on("click",function(){var i=0|this.innerHTML;lay(this).hasClass(s)||(n.range?a[x][M[e]]=i:l[M[e]]=i,lay(t).find("."+o).removeClass(o),lay(this).addClass(o),k(),b(),(a.endDate||"time"===n.type)&&a.done(null,"change"),a.setBtnStatus())})})}return a},v.prototype.listYM=[],v.prototype.closeList=function(){var e=this;e.config;lay.each(e.elemCont,function(t,a){lay(this).find("."+m).remove(),lay(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")}),lay(e.elem).find("."+p).remove()},v.prototype.setBtnStatus=function(e,t,a){var n,l=this,i=l.config,r=l.lang(),o=lay(l.footer).find(f);i.range&&"time"!==i.type&&(t=t||i.dateTime,a=a||l.endDate,n=l.newDate(t).getTime()>l.newDate(a).getTime(),l.limit(null,t)||l.limit(null,a)?o.addClass(s):o[n?"addClass":"removeClass"](s),e&&n&&l.hint("string"==typeof e?r.timeout.replace(/日期/g,e):r.timeout))},v.prototype.parse=function(e,t){var a=this,n=a.config,l=t||(e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},n.dateTime,a.startTime):n.dateTime),i=a.format.concat();return lay.each(i,function(e,t){/yyyy|y/.test(t)?i[e]=lay.digit(l.year,t.length):/MM|M/.test(t)?i[e]=lay.digit(l.month+1,t.length):/dd|d/.test(t)?i[e]=lay.digit(l.date,t.length):/HH|H/.test(t)?i[e]=lay.digit(l.hours,t.length):/mm|m/.test(t)?i[e]=lay.digit(l.minutes,t.length):/ss|s/.test(t)&&(i[e]=lay.digit(l.seconds,t.length))}),n.range&&!e?i.join("")+" "+n.range+" "+a.parse(1):i.join("")},v.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)},v.prototype.setValue=function(e){var t=this,a=t.config,n=t.bindElem||a.elem[0],l=t.isInput(n)?"val":"html";return"static"===a.position||lay(n)[l](e||""),this},v.prototype.stampRange=function(e,t){var a,n,l=this,i=l.config;i.range&&(a=l.newDate(i.dateTime).getTime(),n=l.newDate(l.endDate).getTime(),lay.each(t,function(t,i){var r=lay(i).attr("lay-ymd").split("-"),o=l.newDate({year:r[0],month:r[1]-1,date:r[2]}).getTime();0==e?o>a&&lay(i).addClass(c):o0&&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], +/*! layui v2.6.6 | Released under the MIT license */ + ;!function(t){"use strict";var e=document,n={modules:{},status:{},timeout:10,event:{}},r=function(){this.v="2.6.6"},o=window.LAYUI_GLOBAL||{},a=function(){var t=e.currentScript?e.currentScript.src:function(){for(var t,n=e.scripts,r=n.length-1,o=r;o>0;o--)if("interactive"===n[o].readyState){t=n[o].src;break}return t||n[r].src}();return n.dir=o.dir||t.substring(0,t.lastIndexOf("/")+1)}(),i=function(e,n){n=n||"log",t.console&&console[n]&&console[n]("layui error hint: "+e)},u="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),l=n.builtin={lay:"lay",layer:"layer",laydate:"laydate",laypage:"laypage",laytpl:"laytpl",layedit:"layedit",form:"form",upload:"upload",dropdown:"dropdown",transfer:"transfer",tree:"tree",table:"table",element:"element",rate:"rate",colorpicker:"colorpicker",slider:"slider",carousel:"carousel",flow:"flow",util:"util",code:"code",jquery:"jquery",all:"all","layui.all":"layui.all"};r.prototype.cache=n,r.prototype.define=function(t,e){var r=this,o="function"==typeof t,a=function(){var t=function(t,e){layui[t]=e,n.status[t]=!0};return"function"==typeof e&&e(function(r,o){t(r,o),n.callback[r]=function(){e(t)}}),this};return o&&(e=t,t=[]),r.use(t,a,null,"define"),r},r.prototype.use=function(t,r,o,c){function s(t,e){var r="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===t.type||r.test((t.currentTarget||t.srcElement).readyState))&&(n.modules[v]=e,d.removeChild(g),function o(){return++h>1e3*n.timeout/4?i(v+" is not a valid module","error"):void(n.status[v]?p():setTimeout(o,4))}())}function p(){o.push(layui[v]),t.length>1?f.use(t.slice(1),r,o,c):"function"==typeof r&&function(){return layui.jquery&&"function"==typeof layui.jquery&&"define"!==c?layui.jquery(function(){r.apply(layui,o)}):void r.apply(layui,o)}()}var f=this,y=n.dir=n.dir?n.dir:a,d=e.getElementsByTagName("head")[0];t=function(){return"string"==typeof t?[t]:"function"==typeof t?(r=t,["all"]):t}(),window.jQuery&&jQuery.fn.on&&(f.each(t,function(e,n){"jquery"===n&&t.splice(e,1)}),layui.jquery=layui.$=jQuery);var v=t[0],h=0;if(o=o||[],n.host=n.host||(y.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===t.length||layui["layui.all"]&&l[v])return p(),f;var m=(l[v]?y+"modules/":/^\{\/\}/.test(f.modules[v])?"":n.base||"")+(f.modules[v]||v)+".js";if(m=m.replace(/^\{\/\}/,""),!n.modules[v]&&layui[v]&&(n.modules[v]=m),n.modules[v])!function b(){return++h>1e3*n.timeout/4?i(v+" is not a valid module","error"):void("string"==typeof n.modules[v]&&n.status[v]?p():setTimeout(b,4))}();else{var g=e.createElement("script");g.async=!0,g.charset="utf-8",g.src=m+function(){var t=n.version===!0?n.v||(new Date).getTime():n.version||"";return t?"?v="+t:""}(),d.appendChild(g),!g.attachEvent||g.attachEvent.toString&&g.attachEvent.toString().indexOf("[native code")<0||u?g.addEventListener("load",function(t){s(t,m)},!1):g.attachEvent("onreadystatechange",function(t){s(t,m)}),n.modules[v]=m}return f},r.prototype.getStyle=function(e,n){var r=e.currentStyle?e.currentStyle:t.getComputedStyle(e,null);return r[r.getPropertyValue?"getPropertyValue":"getAttribute"](n)},r.prototype.link=function(t,r,o){var a=this,u=e.getElementsByTagName("head")[0],l=e.createElement("link");"string"==typeof r&&(o=r);var c=(o||t).replace(/\.|\//g,""),s=l.id="layuicss-"+c,p="creating",f=0;return l.rel="stylesheet",l.href=t+(n.debug?"?v="+(new Date).getTime():""),l.media="all",e.getElementById(s)||u.appendChild(l),"function"!=typeof r?a:(function y(o){var u=100,l=e.getElementById(s);return++f>1e3*n.timeout/u?i(t+" timeout"):void(1989===parseInt(a.getStyle(l,"width"))?(o===p&&l.removeAttribute("lay-status"),l.getAttribute("lay-status")===p?setTimeout(y,u):r()):(l.setAttribute("lay-status",p),setTimeout(function(){y(p)},u)))}(),a)},r.prototype.addcss=function(t,e,r){return layui.link(n.dir+"css/"+t,e,r)},n.callback={},r.prototype.factory=function(t){if(layui[t])return"function"==typeof n.callback[t]?n.callback[t]:null},r.prototype.img=function(t,e,n){var r=new Image;return r.src=t,r.complete?e(r):(r.onload=function(){r.onload=null,"function"==typeof e&&e(r)},void(r.onerror=function(t){r.onerror=null,"function"==typeof n&&n(t)}))},r.prototype.config=function(t){t=t||{};for(var e in t)n[e]=t[e];return this},r.prototype.modules=function(){var t={};for(var e in l)t[e]=l[e];return t}(),r.prototype.extend=function(t){var e=this;t=t||{};for(var n in t)e[n]||e.modules[n]?i(n+" Module already exists","error"):e.modules[n]=t[n];return e},r.prototype.router=function(t){var e=this,t=t||location.hash,n={path:[],search:{},hash:(t.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)?(t=t.replace(/^#\//,""),n.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],e.each(t,function(t,e){/^\w+=/.test(e)?function(){e=e.split("="),n.search[e[0]]=e[1]}():n.path.push(e)}),n):n},r.prototype.url=function(t){var e=this,n={pathname:function(){var e=t?function(){var e=(t.match(/\.[^.]+?\/.+/)||[])[0]||"";return e.replace(/^[^\/]+/,"").replace(/\?.+/,"")}():location.pathname;return e.replace(/^\//,"").split("/")}(),search:function(){var n={},r=(t?function(){var e=(t.match(/\?.+/)||[])[0]||"";return e.replace(/\#.+/,"")}():location.search).replace(/^\?+/,"").split("&");return e.each(r,function(t,e){var r=e.indexOf("="),o=function(){return r<0?e.substr(0,e.length):0!==r&&e.substr(0,r)}();o&&(n[o]=r>0?e.substr(r+1):null)}),n}(),hash:e.router(function(){return t?(t.match(/#.+/)||[])[0]||"/":location.hash}())};return n},r.prototype.data=function(e,n,r){if(e=e||"layui",r=r||localStorage,t.JSON&&t.JSON.parse){if(null===n)return delete r[e];n="object"==typeof n?n:{key:n};try{var o=JSON.parse(r[e])}catch(a){var o={}}return"value"in n&&(o[n.key]=n.value),n.remove&&delete o[n.key],r[e]=JSON.stringify(o),n.key?o[n.key]:o}},r.prototype.sessionData=function(t,e){return this.data(t,e,sessionStorage)},r.prototype.device=function(e){var n=navigator.userAgent.toLowerCase(),r=function(t){var e=new RegExp(t+"/([^\\s\\_\\-]+)");return t=(n.match(e)||[])[1],t||!1},o={os:function(){return/windows/.test(n)?"windows":/linux/.test(n)?"linux":/iphone|ipod|ipad|ios/.test(n)?"ios":/mac/.test(n)?"mac":void 0}(),ie:function(){return!!(t.ActiveXObject||"ActiveXObject"in t)&&((n.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:r("micromessenger")};return e&&!o[e]&&(o[e]=r(e)),o.android=/android/.test(n),o.ios="ios"===o.os,o.mobile=!(!o.android&&!o.ios),o},r.prototype.hint=function(){return{error:i}},r.prototype.each=function(t,e){var n,r=this,o=function(t,n){return e.call(n[t],t,n[t])};if("function"!=typeof e)return r;if(t=t||[],t.constructor===Object){for(n in t)if(o(n,t))break}else for(n=0;na?1:o0;o--)if("interactive"===n[o].readyState){t=n[o].src;break}return t||n[r].src}();return t.substring(0,t.lastIndexOf("/")+1)},n.stope=function(t){t=t||window.event,t.stopPropagation?t.stopPropagation():t.cancelBubble=!0},n.each=function(t,e){var n,r=this;if("function"!=typeof e)return r;if(t=t||[],t.constructor===Object){for(n in t)if(e.call(t[n],n,t[n]))break}else for(n=0;n1e4/o?window.console&&console.error(u+".css: Invalid"):void(1989===parseInt(n.getStyle(i,"width"))?(t===s&&i.removeAttribute("lay-status"),i.getAttribute("lay-status")===s?setTimeout(f,o):r()):(i.setAttribute("lay-status",s),setTimeout(function(){f(s)},o)))}()},n.hasScrollbar=function(){return e.body.scrollHeight>(window.innerHeight||e.documentElement.clientHeight)},n.position=function(t,r,o){if(r){o=o||{},t!==e&&t!==n("body")[0]||(o.clickType="right");var i="right"===o.clickType?function(){var t=o.e||window.event||{};return{left:t.clientX,top:t.clientY,right:t.clientX,bottom:t.clientY}}():t.getBoundingClientRect(),c=r.offsetWidth,u=r.offsetHeight,a=function(t){return t=t?"scrollLeft":"scrollTop",e.body[t]|e.documentElement[t]},s=function(t){return e.documentElement[t?"clientWidth":"clientHeight"]},l=5,f=i.left,h=i.bottom;f+c+l>s("width")&&(f=s("width")-c-l),h+u+l>s()&&(i.top>u+l?h=i.top-u-2*l:"right"===o.clickType&&(h=s()-u-2*l,h<0&&(h=0)));var p=o.position;if(p&&(r.style.position=p),r.style.left=f+("fixed"===p?0:a(1))+"px",r.style.top=h+("fixed"===p?0:a())+"px",!n.hasScrollbar()){var d=r.getBoundingClientRect();!o.SYSTEM_RELOAD&&d.bottom+l>s()&&(o.SYSTEM_RELOAD=!0,setTimeout(function(){n.position(t,r,o)},50))}}},n.options=function(t,e){var r=n(t),o=e||"lay-options";try{return new Function("return "+(r.attr(o)||"{}"))()}catch(i){return hint.error("parseerror\uff1a"+i,"error"),{}}},n.isTopElem=function(t){var r=[e,n("body")[0]],o=!1;return n.each(r,function(e,n){if(n===t)return o=!0}),o},r.addStr=function(t,e){return t=t.replace(/\s+/," "),e=e.replace(/\s+/," ").split(" "),n.each(e,function(e,n){new RegExp("\\b"+n+"\\b").test(t)||(t=t+" "+n)}),t.replace(/^\s|\s$/,"")},r.removeStr=function(t,e){return t=t.replace(/\s+/," "),e=e.replace(/\s+/," ").split(" "),n.each(e,function(e,n){var r=new RegExp("\\b"+n+"\\b");r.test(t)&&(t=t.replace(r,""))}),t.replace(/\s+/," ").replace(/^\s|\s$/,"")},r.prototype.find=function(t){var e=this,r=0,o=[],i="object"==typeof t;return this.each(function(n,c){for(var u=i?c.contains(t):c.querySelectorAll(t||null);r0)return r[0].style[t]}():r.each(function(r,i){"object"==typeof t?n.each(t,function(t,e){i.style[t]=o(e)}):i.style[t]=o(e)})},r.prototype.width=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].offsetWidth}():e.each(function(n,r){e.css("width",t)})},r.prototype.height=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].offsetHeight}():e.each(function(n,r){e.css("height",t)})},r.prototype.attr=function(t,e){var n=this;return void 0===e?function(){if(n.length>0)return n[0].getAttribute(t)}():n.each(function(n,r){r.setAttribute(t,e)})},r.prototype.removeAttr=function(t){return this.each(function(e,n){n.removeAttribute(t)})},r.prototype.html=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].innerHTML}():this.each(function(e,n){n.innerHTML=t})},r.prototype.val=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].value}():this.each(function(e,n){n.value=t})},r.prototype.append=function(t){return this.each(function(e,n){"object"==typeof t?n.appendChild(t):n.innerHTML=n.innerHTML+t})},r.prototype.remove=function(t){return this.each(function(e,n){t?n.removeChild(t):n.parentNode.removeChild(n)})},r.prototype.on=function(t,e){return this.each(function(n,r){r.attachEvent?r.attachEvent("on"+t,function(t){t.target=t.srcElement,e.call(r,t)}):r.addEventListener(t,e,!1)})},r.prototype.off=function(t,e){return this.each(function(n,r){r.detachEvent?r.detachEvent("on"+t,e):r.removeEventListener(t,e,!1)})},window.lay=n,window.layui&&layui.define&&layui.define(function(e){e(t,n)})}();layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//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,"$1")+';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,"$1")+')+"')}),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:'\u5171 '+a.count+" \u6761",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(e){"use strict";var t=e.layui&&layui.define,a={getPath:e.lay&&lay.getPath?lay.getPath():"",link:function(t,a,n){i.path&&e.lay&&lay.link&&lay.link(i.path+t,a,n)}},n=e.LAYUI_GLOBAL||{},i={v:"5.3.0",config:{},index:e.laydate&&e.laydate.v?1e5:0,path:n.laydate_dir||a.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var n="laydate",l="",r=(t?"modules/laydate/":"theme/")+"default/laydate.css?v="+i.v+l;return t?layui.addcss(r,e,n):a.link(r,e,n),this}},l=function(){var e=this,t=e.config,a=t.id;return l.that[a]=e,{hint:function(t){e.hint.call(e,t)},config:e.config}},r="laydate",o=".layui-laydate",s="layui-this",y="laydate-disabled",d=[100,2e5],m="layui-laydate-static",c="layui-laydate-list",u="layui-laydate-hint",h="layui-laydate-footer",f=".laydate-btns-confirm",p="laydate-time-text",g="laydate-btns-time",v="layui-laydate-preview",T=function(e){var t=this;t.index=++i.index,t.config=lay.extend({},t.config,i.config,e),e=t.config,e.id="id"in e?e.id:t.index,i.ready(function(){t.init()})},D="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s";l.formatArr=function(e){return(e||"").match(new RegExp(D+"|.","g"))||[]},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:"click",show:!1,showBottom:!0,isPreview:!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,a={cn:{weeks:["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"],time:["\u65f6","\u5206","\u79d2"],timeTips:"\u9009\u62e9\u65f6\u95f4",startTime:"\u5f00\u59cb\u65f6\u95f4",endTime:"\u7ed3\u675f\u65f6\u95f4",dateTips:"\u8fd4\u56de\u65e5\u671f",month:["\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d","\u4e03","\u516b","\u4e5d","\u5341","\u5341\u4e00","\u5341\u4e8c"],tools:{confirm:"\u786e\u5b9a",clear:"\u6e05\u7a7a",now:"\u73b0\u5728"},timeout:"\u7ed3\u675f\u65f6\u95f4\u4e0d\u80fd\u65e9\u4e8e\u5f00\u59cb\u65f6\u95f4
    \u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
    \u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
    ","
    \u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
    Please re-select",invalidDate:"Invalid date",formatError:["The date format error
    Must be followed\uff1a
    ","
    It has been reset"],preview:"The selected result"}};return a[t.lang]||a.cn},T.prototype.init=function(){var t=this,a=t.config,n="static"===a.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};a.elem=lay(a.elem),a.eventElem=lay(a.eventElem),a.elem[0]&&(t.rangeStr=a.range?"string"==typeof a.range?a.range:"-":"",a.range&&a.range.constructor===Array&&(t.rangeElem=[lay(a.range[0]),lay(a.range[1])]),i[a.type]||(e.console&&console.error&&console.error("laydate type error:'"+a.type+"' is not supported"),a.type="date"),a.format===i.date&&(a.format=i[a.type]||i.date),t.format=l.formatArr(a.format),t.EXP_IF="",t.EXP_SPLIT="",lay.each(t.format,function(e,a){var n=new RegExp(D).test(a)?"\\d{"+function(){return new RegExp(D).test(t.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?"1,4":/^y$/.test(a)?"1,308":"1,2"}()+"}":"\\"+a;t.EXP_IF=t.EXP_IF+n,t.EXP_SPLIT=t.EXP_SPLIT+"("+n+")"}),t.EXP_IF_ONE=new RegExp("^"+t.EXP_IF+"$"),t.EXP_IF=new RegExp("^"+(a.range?t.EXP_IF+"\\s\\"+t.rangeStr+"\\s"+t.EXP_IF:t.EXP_IF)+"$"),t.EXP_SPLIT=new RegExp("^"+t.EXP_SPLIT+"$",""),t.isInput(a.elem[0])||"focus"===a.trigger&&(a.trigger="click"),a.elem.attr("lay-key")||(a.elem.attr("lay-key",t.index),a.eventElem.attr("lay-key",t.index)),a.mark=lay.extend({},a.calendar&&"cn"===a.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-9-18":"\u56fd\u803b","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},a.mark),lay.each(["min","max"],function(e,t){var n=[],i=[];if("number"==typeof a[t]){var l=a[t],r=(new Date).getTime(),o=864e5,s=new Date(l?l0)return!0;var n=lay.elem("div",{"class":"layui-laydate-header"}),i=[function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="",e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",e}(),function(){var e=lay.elem("div",{"class":"laydate-set-ym"}),t=lay.elem("span"),a=lay.elem("span");return e.appendChild(t),e.appendChild(a),e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="",e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",e}()],l=lay.elem("div",{"class":"layui-laydate-content"}),d=lay.elem("table"),m=lay.elem("thead"),c=lay.elem("tr");lay.each(i,function(e,t){n.appendChild(t)}),m.appendChild(c),lay.each(new Array(6),function(e){var t=d.insertRow(0);lay.each(new Array(7),function(n){if(0===e){var i=lay.elem("th");i.innerHTML=a.weeks[n],c.appendChild(i)}t.insertCell(n)})}),d.insertBefore(m,d.children[0]),l.appendChild(d),r[e]=lay.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),r[e].appendChild(n),r[e].appendChild(l),o.push(i),s.push(l),y.push(d)}),lay(d).html(function(){var e=[],i=[];return"datetime"===t.type&&e.push(''+a.timeTips+""),(t.range||"datetime"!==t.type)&&e.push(''),lay.each(t.btns,function(e,l){var r=a.tools[l]||"btn";t.range&&"now"===l||(n&&"clear"===l&&(r="cn"===t.lang?"\u91cd\u7f6e":"Reset"),i.push(''+r+""))}),e.push('"),e.join("")}()),lay.each(r,function(e,t){l.appendChild(t)}),t.showBottom&&l.appendChild(d),/^#/.test(t.theme)){var c=lay.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 c?(c.setAttribute("type","text/css"),c.styleSheet.cssText=u):c.innerHTML=u,lay(l).addClass("laydate-theme-molv"),l.appendChild(c)}i.thisId=t.id,e.remove(T.thisElemDate),n?t.elem.append(l):(document.body.appendChild(l),e.position()),e.checkDate().calendar(null,0,"init"),e.changeEvent(),T.thisElemDate=e.elemID,"function"==typeof t.ready&&t.ready(lay.extend({},t.dateTime,{month:t.dateTime.month+1})),e.preview()},T.prototype.remove=function(e){var t=this,a=(t.config,lay("#"+(e||t.elemID)));return a[0]?(a.hasClass(m)||t.checkDate(function(){a.remove()}),t):t},T.prototype.position=function(){var e=this,t=e.config;return lay.position(e.bindElem||t.elem[0],e.elem,{position:t.position}),e},T.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":u}));t.elem&&(a.innerHTML=e||"",lay(t.elem).find("."+u).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+u).remove()},3e3))},T.prototype.getAsYM=function(e,t,a){return a?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,n=this,l=(new Date,n.config),r=n.lang(),o=l.dateTime=l.dateTime||n.systemDate(),s=n.bindElem||l.elem[0],y=(n.isInput(s)?"val":"html",function(){if(n.rangeElem){var e=[n.rangeElem[0].val(),n.rangeElem[1].val()];if(e[0]&&e[1])return e.join(" "+n.rangeStr+" ")}return n.isInput(s)?s.value:"static"===l.position?"":lay(s).attr("lay-date")}()),m=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=i.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},c=function(e,t,i){var r=["startTime","endTime"];t=(t.match(n.EXP_SPLIT)||[]).slice(1),i=i||0,l.range&&(n[r[i]]=n[r[i]]||{}),lay.each(n.format,function(o,s){var y=parseFloat(t[o]);t[o].lengthh(l.max)||h(o)h(l.max))&&(n.endDate=lay.extend({},l.max)),e&&e(),n},T.prototype.mark=function(e,t){var a,n=this,i=n.config;return lay.each(i.mark,function(e,n){var i=e.split("-");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]&&0!=i[1]||i[2]!=t[2]||(a=n||t[2])}),a&&e.html(''+a+""),n},T.prototype.limit=function(e,t,a,n){var i,l=this,r=l.config,o={},s=r[a>41?"endDate":"dateTime"],d=lay.extend({},s,t||{});return lay.each({now:d,min:r.min,max:r.max},function(e,t){o[e]=l.newDate(lay.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return lay.each(n,function(a,n){e[n]=t[n]}),e}())).getTime()}),i=o.nowo.max,e&&e[i?"addClass":"removeClass"](y),i},T.prototype.thisDateTime=function(e){var t=this,a=t.config;return e?t.endDate:a.dateTime},T.prototype.calendar=function(e,t,a){var n,l,r,o=this,y=o.config,t=t?1:0,m=e||o.thisDateTime(t),c=new Date,u=o.lang(),h="date"!==y.type&&"datetime"!==y.type,p=lay(o.table[t]).find("td"),g=lay(o.elemHeader[t][2]).find("span");return m.yeard[1]&&(m.year=d[1],o.hint(u.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},m)),c.setFullYear(m.year,m.month,1),n=c.getDay(),l=i.getEndDate(m.month||12,m.year),r=i.getEndDate(m.month+1,m.year),lay.each(p,function(e,t){var a=[m.year,m.month],i=0;t=lay(t),t.removeAttr("class"),e=n&&e=a.firstDate.year&&(l.month=n.max.month,l.date=n.max.date),a.limit(lay(i),l,t),M++}),lay(m[v?0:1]).attr("lay-ym",M-8+"-"+D[1]).html(E+T+" - "+(M-1+T))}else if("month"===e)lay.each(new Array(12),function(e){var i=lay.elem("li",{"lay-ym":e}),r={year:D[0],month:e};e+1==D[1]&&lay(i).addClass(s),i.innerHTML=l.month[e]+(v?"\u6708":""),o.appendChild(i),D[0]=a.firstDate.year&&(r.date=n.max.date),a.limit(lay(i),r,t)}),lay(m[v?0:1]).attr("lay-ym",D[0]+"-"+D[1]).html(D[0]+T);else if("time"===e){var C=function(){lay(o).find("ol").each(function(e,n){lay(n).find("li").each(function(n,i){a.limit(lay(i),[{hours:n},{hours:a[w].hours,minutes:n},{hours:a[w].hours,minutes:a[w].minutes,seconds:n}][e],t,[["hours"],["hours","minutes"],["hours","minutes","seconds"]][e])})}),n.range||a.limit(lay(a.footer).find(f),a[w],0,["hours","minutes","seconds"])};n.range?a[w]||(a[w]="startTime"===w?i:a.endDate):a[w]=i,lay.each([24,60,60],function(e,t){var n=lay.elem("li"),i=["

    "+l.time[e]+"

      "];lay.each(new Array(t),function(t){i.push(""+lay.digit(t,2)+"")}),n.innerHTML=i.join("")+"
    ",o.appendChild(n)}),C()}if(h&&u.removeChild(h),u.appendChild(o),"year"===e||"month"===e)lay(a.elemMain[t]).addClass("laydate-ym-show"),lay(o).find("li").on("click",function(){var l=0|lay(this).attr("lay-ym");if(!lay(this).hasClass(y)){0===t?(i[e]=l,a.limit(lay(a.footer).find(f),null,0)):a.endDate[e]=l;var d="year"===n.type||"month"===n.type;d?(lay(o).find("."+s).removeClass(s),lay(this).addClass(s),"month"===n.type&&"year"===e&&(a.listYM[t][0]=l,r&&(t?i.year=l:a.endDate.year=l),a.list("month",t))):(a.checkDate("limit").calendar(null,t),a.closeList()),a.setBtnStatus(),n.range||("month"===n.type&&"month"===e||"year"===n.type&&"year"===e)&&a.setValue(a.parse()).remove().done(),a.done(null,"change"),lay(a.footer).find("."+g).removeClass(y)}});else{var I=lay.elem("span",{"class":p}),k=function(){lay(o).find("ol").each(function(e){var t=this,n=lay(t).find("li");t.scrollTop=30*(a[w][x[e]]-2),t.scrollTop<=0&&n.each(function(e,a){if(!lay(this).hasClass(y))return t.scrollTop=30*(e-2),!0})})},b=lay(d[2]).find("."+p);k(),I.innerHTML=n.range?[l.startTime,l.endTime][t]:l.timeTips,lay(a.elemMain[t]).addClass("laydate-time-show"),b[0]&&b.remove(),d[2].appendChild(I),lay(o).find("ol").each(function(e){var t=this;lay(t).find("li").on("click",function(){var l=0|this.innerHTML;lay(this).hasClass(y)||(n.range?a[w][x[e]]=l:i[x[e]]=l,lay(t).find("."+s).removeClass(s),lay(this).addClass(s),C(),k(),(a.endDate||"time"===n.type)&&a.done(null,"change"),a.setBtnStatus())})})}return a},T.prototype.listYM=[],T.prototype.closeList=function(){var e=this;e.config;lay.each(e.elemCont,function(t,a){lay(this).find("."+c).remove(),lay(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")}),lay(e.elem).find("."+p).remove()},T.prototype.setBtnStatus=function(e,t,a){var n,i=this,l=i.config,r=i.lang(),o=lay(i.footer).find(f);l.range&&"time"!==l.type&&(t=t||l.dateTime,a=a||i.endDate,n=i.newDate(t).getTime()>i.newDate(a).getTime(),i.limit(null,t)||i.limit(null,a)?o.addClass(y):o[n?"addClass":"removeClass"](y),e&&n&&i.hint("string"==typeof e?r.timeout.replace(/\u65e5\u671f/g,e):r.timeout))},T.prototype.parse=function(e,t){var a=this,n=a.config,l=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},n.dateTime,a.startTime):n.dateTime),r=i.parse(l,a.format,1);return n.range&&void 0===e?r+" "+a.rangeStr+" "+a.parse("end"):r},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,a=t.config,n=t.bindElem||a.elem[0];return"static"===a.position?this:(e=e||"",t.isInput(n)?lay(n).val(e):t.rangeElem?(t.rangeElem[0].val(e?t.parse("start"):""),t.rangeElem[1].val(e?t.parse("end"):"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e)),this)},T.prototype.preview=function(){var e=this,t=e.config;if(t.isPreview){var a=lay(e.elem).find("."+v),n=t.range?e.endDate?e.parse():"":e.parse();a.html(n).css({color:"#5FB878","font-size":"14px;"}),setTimeout(function(){a.css({color:"#666","font-size":"12px;"})},300)}},T.prototype.done=function(e,t){var a=this,n=a.config,i=lay.extend({},lay.extend(n.dateTime,a.startTime)),l=lay.extend({},lay.extend(a.endDate,a.endTime));return lay.each([i,l],function(e,t){"month"in t&&lay.extend(t,{month:t.month+1})}),a.preview(),e=e||[a.parse(),i,l],"function"==typeof n[t||"done"]&&n[t||"done"].apply(n,e),a},T.prototype.choose=function(e,t){var a=this,n=a.config,i=a.thisDateTime(t),l=(lay(a.elem).find("td"),e.attr("lay-ymd").split("-"));l={year:0|l[0],month:(0|l[1])-1,date:0|l[2]},e.hasClass(y)||(lay.extend(i,l),n.range?(lay.each(["startTime","endTime"],function(e,t){a[t]=a[t]||{hours:0,minutes:0,seconds:0}}),a.calendar(null,t).done(null,"change")):"static"===n.position?a.calendar().done().done(null,"change"):"date"===n.type?a.setValue(a.parse()).remove().done():"datetime"===n.type&&a.calendar().done(null,"change"))},T.prototype.tool=function(e,t){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(e).hasClass(y)||(a.list("time",0),n.range&&a.list("time",1),lay(e).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(e).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue("").remove(),a.done(["",{},{}])},now:function(){var e=new Date;lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()).remove(),r&&a.calendar(),a.done()},confirm:function(){if(n.range){if(lay(e).hasClass(y))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(e).hasClass(y))return a.hint(i.invalidDate);a.done(),a.setValue(a.parse()).remove()}};o[t]&&o[t]()},T.prototype.change=function(e){var t=this,a=t.config,n=t.thisDateTime(e),i=a.range&&("year"===a.type||"month"===a.type),l=t.elemCont[e||0],r=t.listYM[e],o=function(o){var s=lay(l).find(".laydate-year-list")[0],y=lay(l).find(".laydate-month-list")[0];return s&&(r[0]=o?r[0]-15:r[0]+15,t.list("year",e)),y&&(o?r[0]--:r[0]++,t.list("month",e)),(s||y)&&(lay.extend(n,{year:r[0]}),i&&(n.year=r[0]),a.range||t.done(null,"change"),a.range||t.limit(lay(t.footer).find(f),{year:r[0]})),t.setBtnStatus(),s||y};return{prevYear:function(){o("sub")||(n.year--,t.checkDate("limit").calendar(null,e),t.done(null,"change"))},prevMonth:function(){var a=t.getAsYM(n.year,n.month,"sub");lay.extend(n,{year:a[0],month:a[1]}),t.checkDate("limit").calendar(null,e),t.done(null,"change")},nextMonth:function(){var a=t.getAsYM(n.year,n.month);lay.extend(n,{year:a[0],month:a[1]}),t.checkDate("limit").calendar(null,e),t.done(null,"change")},nextYear:function(){o()||(n.year++,t.checkDate("limit").calendar(null,e),t.done(null,"change"))}}},T.prototype.changeEvent=function(){var e=this;e.config;lay(e.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(e.elemHeader,function(t,a){lay(a[0]).on("click",function(a){e.change(t).prevYear()}),lay(a[1]).on("click",function(a){e.change(t).prevMonth()}),lay(a[2]).find("span").on("click",function(a){var n=lay(this),i=n.attr("lay-ym"),l=n.attr("lay-type");i&&(i=i.split("-"),e.listYM[t]=[0|i[0],0|i[1]],e.list(l,t),lay(e.footer).find("."+g).addClass(y))}),lay(a[3]).on("click",function(a){e.change(t).nextMonth()}),lay(a[4]).on("click",function(a){e.change(t).nextYear()})}),lay.each(e.table,function(t,a){var n=lay(a).find("td");n.on("click",function(){e.choose(lay(this),t)})}),lay(e.footer).find("span").on("click",function(){var t=lay(this).attr("lay-type");e.tool(this,t)})},T.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())},T.prototype.events=function(){var e=this,t=e.config,a=function(a,n){a.on(t.trigger,function(){n&&(e.bindElem=this),e.render()})};t.elem[0]&&!t.elem[0].eventHandler&&(a(t.elem,"bind"),a(t.eventElem),t.elem[0].eventHandler=!0)},l.that={},l.getThis=function(e){var t=l.that[e];return t||hint.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),t},a.run=function(t){t(document).on("mousedown",function(e){if(i.thisId){var a=l.getThis(i.thisId);if(a){var n=a.config;e.target!==n.elem[0]&&e.target!==n.eventElem[0]&&e.target!==t(n.closeStop)[0]&&a.remove()}}}).on("keydown",function(e){if(i.thisId){var a=l.getThis(i.thisId);a&&13===e.keyCode&&t("#"+a.elemID)[0]&&a.elemID===T.thisElemDate&&(e.preventDefault(),t(a.footer).find(f)[0].click())}}),t(e).on("resize",function(){if(i.thisId){var e=l.getThis(i.thisId);if(e)return!(!e.elem||!t(o)[0])&&void e.position()}})},i.render=function(e){var t=new T(e);return l.call(t)},i.parse=function(e,t,a){return e=e||{},"string"==typeof t&&(t=l.formatArr(t)),t=(t||[]).concat(),lay.each(t,function(n,i){/yyyy|y/.test(i)?t[n]=lay.digit(e.year,i.length):/MM|M/.test(i)?t[n]=lay.digit(e.month+(a||0),i.length):/dd|d/.test(i)?t[n]=lay.digit(e.date,i.length):/HH|H/.test(i)?t[n]=lay.digit(e.hours,i.length):/mm|m/.test(i)?t[n]=lay.digit(e.minutes,i.length):/ss|s/.test(i)&&(t[n]=lay.digit(e.seconds,i.length))}),t.join("")},i.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},t?(i.ready(),layui.define("lay",function(e){i.path=layui.cache.dir,a.run(lay),e(r,i)})):"function"==typeof define&&define.amd?define(function(){return a.run(lay),i}):function(){i.ready(),a.run(e.lay),e.laydate=i}()}(window);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=!!e&&"length"in e&&e.length,n=pe.type(e);return"function"!==n&&!pe.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&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",l.childNodes[0].style.borderCollapse="separate",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="creating",u=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function d(t){var n=100,a=document.getElementById(f);return++u>1e4/n?e.console&&console.error(l+".css: Invalid"):void(1989===parseInt(o.getStyle(a,"width"))?(t===c&&a.removeAttribute("lay-status"),a.getAttribute("lay-status")===c?setTimeout(d,n):i()):(a.setAttribute("lay-status",c),setTimeout(function(){d(c)},n)))}()}}},r={v:"3.4.0",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:260},n))}},s=function(e){var t=this,a=function(){r.ready(function(){t.creat()})};t.index=++r.index,t.config.maxWidth=i(n).width()-30,t.config=i.extend({},t.config,o.config,e),document.body?a():setTimeout(function(){a()},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,t){r.ready(function(){var n=i("#"+l[0]+e),a=n.attr("type"),s="layer-anim-close";if(n[0]){var f="layui-layer-wrap",c=function(){if(a===o.type[1]&&"object"===n.attr("conType")){n.children(":not(."+l[5]+")").remove();for(var r=n.find("."+f),s=0;s<2;s++)r.unwrap();r.css("display",r.data("display")).removeClass(f)}else{if(a===o.type[2])try{var c=i("#"+l[4]+e)[0];c.contentWindow.document.write(""),c.contentWindow.close(),n.find("."+l[5])[0].removeChild(c)}catch(u){}n[0].innerHTML="",n.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e],"function"==typeof t&&t()};n.data("isOutAnim")&&n.addClass("layer-anim "+s),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),n.attr("minLeft")&&(o.minIndex--,o.minLeft.push(n.attr("minLeft"))),r.ie&&r.ie<10||!n.data("isOutAnim")?c():setTimeout(function(){c()},200)}})},r.closeAll=function(e,t){"function"==typeof e&&(t=e,e=null),r.ready(function(){var n=i("."+l[0]);i.each(n,function(a){var o=i(this),s=e?o.attr("type")===e:1;s&&r.close(o.attr("times"),a===n.length-1?t:null),s=null}),0===n.length&&"function"==typeof t&&t()})};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(){h();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)}),!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.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev(!0)}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext(!0)}),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),a&&(t.anim=-1),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||'+function(){return 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-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(){r.ready(),o.run(e.jQuery)}()}(window);layui.define("jquery",function(e){"use strict";var t=layui.$,i={fixbar:function(e){var i,a,n="layui-fixbar",o="layui-fixbar-top",r=t(document),l=t("body");e=t.extend({showHeight:200},e),e.bar1=e.bar1===!0?"":e.bar1,e.bar2=e.bar2===!0?"":e.bar2,e.bgcolor=e.bgcolor?"background-color:"+e.bgcolor:"";var c=[e.bar1,e.bar2,""],g=t(['
      ',e.bar1?'
    • '+c[0]+"
    • ":"",e.bar2?'
    • '+c[1]+"
    • ":"",'
    • '+c[2]+"
    • ","
    "].join("")),u=g.find("."+o),s=function(){var t=r.scrollTop();t>=e.showHeight?i||(u.show(),i=1):i&&(u.hide(),i=0)};t("."+n)[0]||("object"==typeof e.css&&g.css(e.css),l.append(g),s(),g.find("li").on("click",function(){var i=t(this),a=i.attr("lay-type");"top"===a&&t("html,body").animate({scrollTop:0},200),e.click&&e.click.call(this,a)}),r.on("scroll",function(){clearTimeout(a),a=setTimeout(function(){s()},100)}))},countdown:function(e,t,i){var a=this,n="function"==typeof t,o=new Date(e).getTime(),r=new Date(!t||n?(new Date).getTime():t).getTime(),l=o-r,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];n&&(i=t);var g=setTimeout(function(){a.countdown(e,r+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],t,g),l<=0&&clearTimeout(g),g},timeAgo:function(e,t){var i=this,a=[[],[]],n=(new Date).getTime()-new Date(e).getTime();return n>26784e5?(n=new Date(e),a[0][0]=i.digit(n.getFullYear(),4),a[0][1]=i.digit(n.getMonth()+1),a[0][2]=i.digit(n.getDate()),t||(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>=18e4?(n/1e3/60|0)+"分钟前":n<0?"未来":"刚刚"},digit:function(e,t){var i="";e=String(e),t=t||2;for(var a=e.length;a/g,">").replace(/'/g,"'").replace(/"/g,""")},unescape:function(e){return String(e||"").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/,"'").replace(/\"/,'"')},event:function(e,a,n){var o=t("body");return n=n||"click",a=i.event[e]=t.extend(!0,i.event[e],a)||{},i.event.UTIL_EVENT_CALLBACK=i.event.UTIL_EVENT_CALLBACK||{},o.off(n,"*["+e+"]",i.event.UTIL_EVENT_CALLBACK[e]),i.event.UTIL_EVENT_CALLBACK[e]=function(){var i=t(this),n=i.attr(e);"function"==typeof a[n]&&a[n].call(this,i)},o.on(n,"*["+e+"]",i.event.UTIL_EVENT_CALLBACK[e]),a}};e("util",i)});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='
  1. "+(i.title||"unnaming")+"
  2. ";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);a(function(){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(),o=layui.device(),a={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,a.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("")),a=i.elem.next();(a.hasClass(u)||a.hasClass(c))&&a.remove(),o.ie&&o.ie<10&&i.elem.wrap('
    '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(n),o.ie&&o.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,i=e.config,n=t(''),o=t(['
    ',"
    "].join(""));t("#"+f)[0]||t("body").append(n),i.elem.next().hasClass(c)||(e.elemFile.wrap(o),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,a=this,l=a.config,r=a.elemFile[0],u=function(){var i=0,n=0,o=e||a.files||a.chooseFiles||r.files,u=function(){l.multiple&&i+n===a.fileLength&&"function"==typeof l.allDone&&l.allDone({total:a.fileLength,successful:i,aborted:n})};layui.each(o,function(e,o){var r=new FormData;r.append(l.field,o),layui.each(l.data,function(e,t){t="function"==typeof t?t():t,r.append(e,t)});var c={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++,a.msg("请求上传接口出现异常"),m(e),u()}};"function"==typeof l.progress&&(c.xhr=function(){var e=t.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){if(e.lengthComputable){var t=Math.floor(e.loaded/e.total*100);l.progress(t,l.item?l.item[0]:l.elem[0],e)}}),e}),t.ajax(c)})},c=function(){var e=t("#"+f);a.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var t,i=e.contents().find("body");try{t=i.text()}catch(n){a.msg("获取上传后的响应信息出现异常"),clearInterval(p.timer),m()}t&&(clearInterval(p.timer),i.html(""),d(0,t))},30)},d=function(e,t){if(a.elemFile.next("."+s).remove(),r.value="","object"!=typeof t)try{t=JSON.parse(t)}catch(i){return t={},a.msg("请对上传接口返回有效JSON")}"function"==typeof l.done&&l.done(t,e||0,function(e){a.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){a.upload(e)})},h=l.exts,v=function(){var t=[];return layui.each(e||a.chooseFiles,function(e,i){t.push(i.name)}),t}(),g={preview:function(e){a.preview(e)},upload:function(e,t){var i={};i[e]=t,a.upload(i)},pushFile:function(){return a.files=a.files||{},layui.each(a.chooseFiles,function(e,t){a.files[e]=t}),a.files},resetFile:function(e,t,i){var n=new File([t],i);a.files=a.files||{},a.files[e]=n}},y=function(){if("choose"!==i&&!l.auto||(l.choose&&l.choose(g),"choose"!==i))return l.before&&l.before(g),o.ie?o.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 a.msg("选择的文件中包含不支持的格式"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(v)))return a.msg("选择的视频中包含不支持的格式"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(v)))return a.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 a.msg("选择的图片中包含不支持的格式"),r.value=""}if(a.fileLength=function(){var t=0,i=e||a.files||a.chooseFiles||r.files;return layui.each(i,function(){t++}),t}(),l.number&&a.fileLength>l.number)return a.msg("同时最多只能上传的数量为:"+l.number);if(l.size>0&&!(o.ie&&o.ie<10)){var F;if(layui.each(a.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 a.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,a.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,a=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 o=e.elemFile,a=t.length>1?t.length+"个文件":(t[0]||{}).name||o[0].value.match(/[^\/\\]+\..+/g)||[]||"";o.next().hasClass(s)&&o.next().remove(),e.upload(null,"choose"),e.isFile()||i.choose||o.after(''+a+"")};i.elem.off("upload.start").on("upload.start",function(){var o=t(this),a=o.attr("lay-data");if(a)try{a=new Function("return "+a)(),e.config=t.extend({},i,a)}catch(l){n.error("Upload element property lay-data configuration item has a syntax error: "+a)}e.config.item=o,e.elemFile[0].click()}),o.ie&&o.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,o){var r=t(this),u=o.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),a(u),i.auto?e.upload(u):l(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var t=this.files||[];a(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))},a.render=function(e){var t=new p(e);return l.call(t)},e(r,a)});layui.define(["jquery","laytpl","lay"],function(e){"use strict";var i=layui.$,n=layui.laytpl,t=layui.hint(),a=layui.device(),l=a.mobile?"click":"mousedown",r="dropdown",o="layui_"+r+"_index",u={config:{},index:layui[r]?layui[r].index+1e4:0,set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,r,e,i)}},d=function(){var e=this,i=e.config,n=i.id;return d.that[n]=e,{config:i,reload:function(i){e.reload.call(e,i)}}},s="layui-dropdown",m="layui-menu-item-up",c="layui-menu-item-down",p="layui-menu-body-title",y="layui-menu-item-group",f="layui-menu-item-parent",v="layui-menu-item-divider",g="layui-menu-item-checked",h="layui-menu-item-checked2",w="layui-menu-body-panel",C="layui-menu-body-panel-left",V="."+y+">."+p,k=function(e){var n=this;n.index=++u.index,n.config=i.extend({},n.config,u.config,e),n.init()};k.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:300},k.prototype.reload=function(e){var n=this;n.config=i.extend({},n.config,e),n.init(!0)},k.prototype.init=function(e){var n=this,t=n.config,a=t.elem=i(t.elem);if(a.length>1)return layui.each(a,function(){u.render(i.extend({},t,{elem:this}))}),n;if(!e&&a[0]&&a.data(o)){var l=d.getThis(a.data(o));if(!l)return;return l.reload(t)}t.id="id"in t?t.id:n.index,t.show&&n.render(e),n.events()},k.prototype.render=function(e){var t=this,a=t.config,r=i("body"),s=function(){var e=i('
      ');return a.data.length>0?m(e,a.data):e.html('
    • no menu
    • '),e},m=function(e,t){return layui.each(t,function(t,l){var r=l.child&&l.child.length>0,o="isSpreadItem"in l?l.isSpreadItem:a.isSpreadItem,u=l.templet?n(l.templet).render(l):a.templet?n(a.templet).render(l):l.title,d=function(){return r&&(l.type=l.type||"parent"),l.type?{group:"group",parent:"parent","-":"-"}[l.type]||"parent":""}();if("-"===d||l.title||l.id||r){var s=i(["",function(){var e="href"in l?''+u+"":u;return r?'
      '+e+function(){return"parent"===d?'':"group"===d&&a.isAllowSpread?'':""}()+"
      ":'
      '+e+"
      "}(),""].join(""));if(s.data("item",l),r){var c=i('
      '),y=i("
        ");"parent"===d?(c.append(m(y,l.child)),s.append(c)):s.append(m(y,l.child))}e.append(s)}}),e},c=['
        ',"
        "].join("");("contextmenu"===a.trigger||lay.isTopElem(a.elem[0]))&&(e=!0),!e&&a.elem.data(o+"_opened")||(t.elemView=i(c),t.elemView.append(a.content||s()),a.className&&t.elemView.addClass(a.className),a.style&&t.elemView.attr("style",a.style),u.thisId=a.id,t.remove(),r.append(t.elemView),a.elem.data(o+"_opened",!0),t.position(),d.prevElem=t.elemView,d.prevElem.data("prevElem",a.elem),t.elemView.find(".layui-menu").on(l,function(e){lay.stope(e)}),t.elemView.find(".layui-menu li").on("click",function(e){var n=i(this),l=n.data("item")||{},r=l.child&&l.child.length>0;r||"-"===l.type||(t.remove(),"function"==typeof a.click&&a.click(l,n))}),t.elemView.find(V).on("click",function(e){var n=i(this),t=n.parent(),l=t.data("item")||{};"group"===l.type&&a.isAllowSpread&&d.spread(t)}),"mouseenter"===a.trigger&&t.elemView.on("mouseenter",function(){clearTimeout(d.timer)}).on("mouseleave",function(){t.delayRemove()}))},k.prototype.position=function(e){var i=this,n=i.config;lay.position(n.elem[0],i.elemView[0],{position:n.position,e:i.e,clickType:"contextmenu"===n.trigger?"right":null})},k.prototype.remove=function(){var e=this,i=(e.config,d.prevElem);i&&(i.data("prevElem")&&i.data("prevElem").data(o+"_opened",!1),i.remove())},k.prototype.delayRemove=function(){var e=this,i=e.config;clearTimeout(d.timer),d.timer=setTimeout(function(){e.remove()},i.delay)},k.prototype.events=function(){var e=this,i=e.config;"hover"===i.trigger&&(i.trigger="mouseenter"),e.prevElem&&e.prevElem.off(i.trigger,e.prevElemCallback),e.prevElem=i.elem,e.prevElemCallback=function(n){clearTimeout(d.timer),e.e=n,e.render(),n.preventDefault(),"function"==typeof i.ready&&i.ready(e.elemView,i.elem,e.e.target)},i.elem.on(i.trigger,e.prevElemCallback),"mouseenter"===i.trigger&&i.elem.on("mouseleave",function(){e.delayRemove()})},d.that={},d.getThis=function(e){var i=d.that[e];return i||t.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},d.spread=function(e){var i=e.children("."+p).find(".layui-icon");e.hasClass(m)?(e.removeClass(m).addClass(c),i.removeClass("layui-icon-down").addClass("layui-icon-up")):(e.removeClass(c).addClass(m),i.removeClass("layui-icon-up").addClass("layui-icon-down"))},!function(){var e=i(window),n=i(document);e.on("resize",function(){if(u.thisId){var e=d.getThis(u.thisId);if(e){if(!e.elemView[0]||!i("."+s)[0])return!1;var n=e.config;"contextmenu"===n.trigger?e.remove():e.position()}}}),n.on(l,function(e){if(u.thisId){var i=d.getThis(u.thisId);if(i){var n=i.config;!lay.isTopElem(n.elem[0])&&"contextmenu"!==n.trigger&&(e.target===n.elem[0]||n.elem.find(e.target)[0]||e.target===i.elemView[0]||i.elemView&&i.elemView.find(e.target)[0])||i.remove()}}});var t=".layui-menu:not(.layui-dropdown-menu) li";n.on("click",t,function(e){var n=i(this),t=n.parents(".layui-menu").eq(0),a=n.hasClass(y)||n.hasClass(f),l=t.attr("lay-filter")||t.attr("id"),o=lay.options(this);n.hasClass(v)||a||(t.find("."+g).removeClass(g),t.find("."+h).removeClass(h),n.addClass(g),n.parents("."+f).addClass(h),layui.event.call(this,r,"click("+l+")",o))}),n.on("click",t+V,function(e){var n=i(this),t=n.parents("."+y+":eq(0)"),a=lay.options(t[0]);"isAllowSpread"in a&&!a.isAllowSpread||d.spread(t)});var a=".layui-menu ."+f;n.on("mouseenter",a,function(n){var t=i(this),a=t.find("."+w);if(a[0]){var l=a[0].getBoundingClientRect();l.right>e.width()&&(a.addClass(C),l=a[0].getBoundingClientRect(),l.left<0&&a.removeClass(C)),l.bottom>e.height()&&a.eq(0).css("margin-top",-(l.bottom-e.height()))}}).on("mouseleave",a,function(e){var n=i(this),t=n.children("."+w);t.removeClass(C),t.css("margin-top",0)})}(),u.reload=function(e,i){var n=d.getThis(e);return n?(n.reload(i),d.call(n)):this},u.render=function(e){var i=new k(e);return d.call(i)},e(r,u)});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(t,a){return i.value=t,e.slide("set",t,a||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",p="layui-slider-input-btn",m="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),p=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 p=Math.floor((t.value-t.min)/(t.max-t.min)*100)+"%"}var m=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),s.find("."+d).html(l.setTips?l.setTips(u):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(m),s.find("."+d).show(),i.preventDefault()},o=function(){t.removeClass(m),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.children("."+p).children("i").each(function(e){i(this).on("click",function(){g=y.children("."+c).children("input").val(),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=this,n=t(r+'[lay-filter="'+e+'"]');return n.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),a.getValue(e)},u.prototype.getValue=function(e,i){i=i||t(r+'[lay-filter="'+e+'"]').eq(0);var a={},n={},l=i.find("input,select,textarea");return layui.each(l,function(e,i){var l;t(this);if(i.name=(i.name||"").replace(/^\s*|\s*&/,""),i.name){if(/^.*\[\]$/.test(i.name)){var r=i.name.match(/^(.*)\[\]$/g)[0];a[r]=0|a[r],l=i.name.replace(/^(.*)\[\]$/,"$1["+a[r]++ +"]")}/^checkbox|radio$/.test(i.type)&&!i.checked||(n[l||i.name]=i.value)}}),n},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"),g=i.find("dl"),x=g.children("dd"),b=this.selectedIndex;if(!u){var C=function(){var e=i.offset().top+i.outerHeight()+5-h.scrollTop(),t=g.outerHeight();b=p[0].selectedIndex,i.addClass(a+"ed"),x.removeClass(o),y=null,x.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=g.children("dd."+s);if(e[0]){var t=e.position().top,i=g.height(),a=e.height();t>i&&g.scrollTop(t+g.scrollTop()-i+a-5),t<0&&g.scrollTop(t+g.scrollTop()-5)}};m.on("click",function(e){i.hasClass(a+"ed")?w():(v(e,!0),C()),g.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=g.children("dd."+s);if(g.children("dd."+o)[0]&&"next"===t){var i=g.children("dd:not(."+o+",."+c+")"),n=i.eq(0).index();if(n>=0&&n无匹配项

        '):g.find("."+r).remove()},"keyup"),""===t&&g.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)}),x.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=null,a=f.config.verify,s="layui-form-danger",o={},c=t(this),u=c.parents(r),d=u.find("*[lay-verify]"),v=c.parents("form")[0],h=c.attr("lay-filter");return layui.each(d,function(l,r){var o=t(this),c=o.attr("lay-verify").split("|"),u=o.attr("lay-verType"),d=o.val();if(o.removeClass(s),layui.each(c,function(t,l){var c,f="",v="function"==typeof a[l];if(a[l]){var c=v?f=a[l](d,r):!a[l][0].test(d);if(f=f||a[l][1],"required"===l&&(f=o.attr("lay-reqText")||f),c)return"tips"===u?i.tips(f,function(){return"string"==typeof o.attr("lay-ignore")||"select"!==r.tagName.toLowerCase()&&!/^checkbox|radio$/.test(r.type)?o:o.next()}(),{tips:1}):"alert"===u?i.alert(f,{title:"提示",shadeClose:!0}):/\bstring|number\b/.test(typeof f)&&i.msg(f,{icon:5,shift:6}),n.android||n.ios||setTimeout(function(){r.focus()},7),o.addClass(s),e=!0}}),e)return e}),!e&&(o=f.getValue(null,u),layui.event.call(this,l,"submit("+h+")",{elem:this,form:v,field:o}))},f=new u,v=t(document),h=t(window);t(function(){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=layui.layer,t="tree",r={config:{},index:layui[t]?layui[t].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,t,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)}}},c="layui-hide",d="layui-disabled",s="layui-tree-set",o="layui-tree-iconClick",h="layui-icon-addition",u="layui-icon-subtraction",p="layui-tree-entry",f="layui-tree-main",y="layui-tree-txt",v="layui-tree-pack",C="layui-tree-spread",k="layui-tree-setLineShort",m="layui-tree-showLine",x="layui-tree-lineExtend",b=function(e){var a=this;a.index=++r.index,a.config=i.extend({},a.config,r.config,e),a.render()};b.prototype.config={data:[],showCheckbox:!1,showLine:!0,accordion:!1,onlyIconControl:!1,isJump:!1,edit:!1,text:{defaultNodeName:"未命名",none:"无数据"}},b.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()},b.prototype.render=function(){var e=this,a=e.config;e.checkids=[];var n=i('
        ');e.tree(n);var t=a.elem=i(a.elem);if(t[0]){if(e.key=a.id||e.index,e.elem=n,e.elemNone=i('
        '+a.text.none+"
        "),t.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);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(k),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(k)}),e.events()}},b.prototype.renderForm=function(e){a.render(e,"LAY-tree-"+this.index)},b.prototype.tree=function(e,a){var n=this,t=n.config,r=a||t.data;layui.each(r,function(a,r){var l=r.children&&r.children.length>0,o=i('
        "),h=i(['
        ','
        ','
        ',function(){return t.showLine?l?'':'':''}(),function(){return t.showCheckbox?'':""}(),function(){return t.isJump&&r.href?''+(r.title||r.label||t.text.defaultNodeName)+"":''+(r.title||r.label||t.text.defaultNodeName)+""}(),"
        ",function(){if(!t.edit)return"";var e={add:'',update:'',del:''},i=['
        '];return t.edit===!0&&(t.edit=["update","del"]),"object"==typeof t.edit?(layui.each(t.edit,function(a,n){i.push(e[n]||"")}),i.join("")+"
        "):void 0}(),"
        "].join(""));l&&(h.append(o),n.tree(o,r.children)),e.append(h),h.prev("."+s)[0]&&h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),l||h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),n.spread(h,r),t.showCheckbox&&(r.checked&&n.checkids.push(r.id),n.checkClick(h,r)),t.edit&&n.operate(h,r)})},b.prototype.spread=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f),c=r.find("."+o),k=r.find("."+y),m=t.onlyIconControl?c:l,x="";m.on("click",function(i){var a=e.children("."+v),n=m.children(".layui-icon")[0]?m.children(".layui-icon"):m.find(".layui-tree-icon").children(".layui-icon");if(a[0]){if(e.hasClass(C))e.removeClass(C),a.slideUp(200),n.removeClass(u).addClass(h);else if(e.addClass(C),a.slideDown(200),n.addClass(u).removeClass(h),t.accordion){var r=e.siblings("."+s);r.removeClass(C),r.children("."+v).slideUp(200),r.find(".layui-tree-icon").children(".layui-icon").removeClass(u).addClass(h)}}else x="normal"}),k.on("click",function(){var n=i(this);n.hasClass(d)||(x=e.hasClass(C)?t.onlyIconControl?"open":"close":t.onlyIconControl?"close":"open",t.click&&t.click({elem:e,state:x,data:a}))})},b.prototype.setCheckbox=function(e,i,a){var n=this,t=(n.config,a.prop("checked"));if(!a.prop("disabled")){if("object"==typeof i.children||e.find("."+v)[0]){var r=e.find("."+v).find('input[same="layuiTreeCheck"]');r.each(function(){this.disabled||(this.checked=t)})}var l=function(e){if(e.parents("."+s)[0]){var i,a=e.parent("."+v),n=a.parent(),r=a.prev().find('input[same="layuiTreeCheck"]');t?r.prop("checked",t):(a.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||r.prop("checked",!1)),l(n)}};l(e),n.renderForm("checkbox")}},b.prototype.checkClick=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f);l.on("click",'input[same="layuiTreeCheck"]+',function(r){layui.stope(r);var l=i(this).prev(),c=l.prop("checked");l.prop("disabled")||(n.setCheckbox(e,a,l),t.oncheck&&t.oncheck({elem:e,checked:c,data:a}))})},b.prototype.operate=function(e,a){var t=this,r=t.config,l=e.children("."+p),d=l.children("."+f);l.children(".layui-tree-btnGroup").on("click",".layui-icon",function(l){layui.stope(l);var f=i(this).data("type"),b=e.children("."+v),g={data:a,type:f,elem:e};if("add"==f){b[0]||(r.showLine?(d.find("."+o).addClass("layui-tree-icon"),d.find("."+o).children(".layui-icon").addClass(h).removeClass("layui-icon-file")):d.find(".layui-tree-iconArrow").removeClass(c),e.append('
        '));var w=r.operate&&r.operate(g),N={};if(N.title=r.text.defaultNodeName,N.id=w,t.tree(e.children("."+v),[N]),r.showLine)if(b[0])b.hasClass(x)||b.addClass(x),e.find("."+v).each(function(){i(this).children("."+s).last().addClass(k)}),b.children("."+s).last().prev().hasClass(k)?b.children("."+s).last().prev().removeClass(k):b.children("."+s).last().removeClass(k),!e.parent("."+v)[0]&&e.next()[0]&&b.children("."+s).last().removeClass(k);else{var T=e.siblings("."+s),L=1,A=e.parent("."+v);layui.each(T,function(e,a){i(a).children("."+v)[0]||(L=0)}),1==L?(T.children("."+v).addClass(m),T.children("."+v).children("."+s).removeClass(k),e.children("."+v).addClass(m),A.removeClass(x),A.children("."+s).last().children("."+v).children("."+s).last().addClass(k)):e.children("."+v).children("."+s).addClass(k)}if(!r.showCheckbox)return;if(d.find('input[same="layuiTreeCheck"]')[0].checked){var I=e.children("."+v).children("."+s).last();I.find('input[same="layuiTreeCheck"]')[0].checked=!0}t.renderForm("checkbox")}else if("update"==f){var F=d.children("."+y).html();d.children("."+y).html(""),d.append(''),d.children(".layui-tree-editInput").val(F).focus();var j=function(e){var i=e.val().trim();i=i?i:r.text.defaultNodeName,e.remove(),d.children("."+y).html(i),g.data.title=i,r.operate&&r.operate(g)};d.children(".layui-tree-editInput").blur(function(){j(i(this))}),d.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),j(i(this)))})}else n.confirm('确认删除该节点 "'+(a.title||"")+'" 吗?',function(a){if(r.operate&&r.operate(g),g.status="remove",n.close(a),!e.prev("."+s)[0]&&!e.next("."+s)[0]&&!e.parent("."+v)[0])return e.remove(),void t.elem.append(t.elemNone);if(e.siblings("."+s).children("."+p)[0]){if(r.showCheckbox){var l=function(e){if(e.parents("."+s)[0]){var a=e.siblings("."+s).children("."+p),n=e.parent("."+v).prev(),r=n.find('input[same="layuiTreeCheck"]')[0],c=1,d=0;0==r.checked&&(a.each(function(e,a){var n=i(a).find('input[same="layuiTreeCheck"]')[0];0!=n.checked||n.disabled||(c=0),n.disabled||(d=1)}),1==c&&1==d&&(r.checked=!0,t.renderForm("checkbox"),l(n.parent("."+s))))}};l(e)}if(r.showLine){var d=e.siblings("."+s),h=1,f=e.parent("."+v);layui.each(d,function(e,a){i(a).children("."+v)[0]||(h=0)}),1==h?(b[0]||(f.removeClass(x),d.children("."+v).addClass(m),d.children("."+v).children("."+s).removeClass(k)),e.next()[0]?f.children("."+s).last().children("."+v).children("."+s).last().addClass(k):e.prev().children("."+v).children("."+s).last().addClass(k),e.next()[0]||e.parents("."+s)[1]||e.parents("."+s).eq(0).next()[0]||e.prev("."+s).addClass(k)):!e.next()[0]&&e.hasClass(k)&&e.prev().addClass(k)}}else{var y=e.parent("."+v).prev();if(r.showLine){y.find("."+o).removeClass("layui-tree-icon"),y.find("."+o).children(".layui-icon").removeClass(u).addClass("layui-icon-file");var w=y.parents("."+v).eq(0);w.addClass(x),w.children("."+s).each(function(){i(this).children("."+v).children("."+s).last().addClass(k)})}else y.find(".layui-tree-iconArrow").addClass(c);e.parents("."+s).eq(0).removeClass(C),e.parent("."+v).remove()}e.remove()})})},b.prototype.events=function(){var e=this,a=e.config;e.elem.find(".layui-tree-checkedFirst");e.setChecked(e.checkids),e.elem.find(".layui-tree-search").on("keyup",function(){var n=i(this),t=n.val(),r=n.nextAll(),l=[];r.find("."+y).each(function(){var e=i(this).parents("."+p);if(i(this).html().indexOf(t)!=-1){l.push(i(this).parent());var a=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+v)[0]&&a(e.parent("."+v).parent("."+s))};a(e.parent("."+s))}}),r.find("."+p).each(function(){var e=i(this).parent("."+s);e.hasClass("layui-tree-searchShow")||e.addClass(c)}),0==r.find(".layui-tree-searchShow").length&&e.elem.append(e.elemNone),a.onsearch&&a.onsearch({elem:l})}),e.elem.find(".layui-tree-search").on("keydown",function(){i(this).nextAll().find("."+p).each(function(){var e=i(this).parent("."+s);e.removeClass("layui-tree-searchShow "+c)}),i(".layui-tree-emptyText")[0]&&i(".layui-tree-emptyText").remove()})},b.prototype.getChecked=function(){var e=this,a=e.config,n=[],t=[];e.elem.find(".layui-form-checked").each(function(){n.push(i(this).prev()[0].value)});var r=function(e,a){layui.each(e,function(e,t){layui.each(n,function(e,n){if(t.id==n){var l=i.extend({},t);return delete l.children,a.push(l),t.children&&(l.children=[],r(t.children,l.children)),!0}})})};return r(i.extend({},a.data),t),t},b.prototype.setChecked=function(e){var a=this;a.config;a.elem.find("."+s).each(function(a,n){var t=i(this).data("id"),r=i(n).children("."+p).find('input[same="layuiTreeCheck"]'),l=r.next();if("number"==typeof e){if(t==e)return r[0].checked||l.click(),!1}else"object"==typeof e&&layui.each(e,function(e,i){if(i==t&&!r[0].checked)return l.click(),!0})})},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 b(e);return l.call(i)},e(t,r)});layui.define(["laytpl","form"],function(e){"use strict";var a=layui.$,t=layui.laytpl,i=layui.form,n="transfer",l={config:{},index:layui[n]?layui[n].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,n,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;t.config=a.extend({},t.config,e),t.render()},x.prototype.render=function(){var e=this,i=e.config,n=e.elem=a(t(v).render({data:i,index:e.index})),l=i.elem=a(i.elem);l[0]&&(i.data=i.data||[],i.value=i.value||[],e.key=i.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=n.find("."+y),e.layBtn=n.find("."+f+" .layui-btn"),e.layBox.css({width:i.width,height:i.height}),e.layData.css({height:function(){return i.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,i=["
        • ",'',"
        • "].join("");a[t].views.push(i),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){i.render(e,"LAY-transfer-"+this.index)},x.prototype.renderCheckBtn=function(e){var t=this,i=t.config;e=e||{},t.layBox.each(function(n){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(n)[f?"removeClass":"addClass"](o),!e.stopNone){var p=r.children("li:not(."+c+")").length;t.noneView(r,p?"":i.text.none)}}),t.renderForm("checkbox")},x.prototype.noneView=function(e,t){var i=a('

          '+(t||"")+"

          ");e.find("."+d)[0]&&e.find("."+d).remove(),t.replace(/\s/g,"")&&e.append(i)},x.prototype.setValue=function(){var e=this,t=e.config,i=[];return e.layBox.eq(1).find("."+y+' input[type="checkbox"]').each(function(){var e=a(this).data("hide");e||i.push(this.value)}),t.value=i,e},x.prototype.parseData=function(e){var t=this,i=t.config,n=[];return layui.each(i.data,function(t,l){l=("function"==typeof i.parseData?i.parseData(l):l)||l,n.push(l=a.extend({},l)),layui.each(i.value,function(e,a){a==l.value&&(l.selected=!0)}),e&&e(l)}),i.data=n,t},x.prototype.getData=function(e){var a=this,t=a.config,i=[];return a.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},x.prototype.events=function(){var e=this,t=e.config;e.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var t=a(this).prev(),i=t[0].checked,n=t.parents("."+s).eq(0).find("."+y);t[0].disabled||("all"===t.attr("lay-type")&&n.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=i)}),e.renderCheckBtn({stopNone:!0}))}),e.layBtn.on("click",function(){var i=a(this),n=i.data("index"),l=e.layBox.eq(n),r=[];if(!i.hasClass(o)){e.layBox.eq(n).each(function(t){var i=a(this),n=i.find("."+y);n.children("li").each(function(){var t=a(this),i=t.find('input[type="checkbox"]'),n=i.data("hide");i[0].checked&&!n&&(i[0].checked=!1,l.siblings("."+s).find("."+y).append(t.clone()),t.remove(),r.push(i[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),n)}}),e.laySearch.find("input").on("keyup",function(){var i=this.value,n=a(this).parents("."+h).eq(0).siblings("."+y),l=n.children("li");l.each(function(){var e=a(this),t=e.find('input[type="checkbox"]'),n=t[0].title.indexOf(i)!==-1;e[n?"removeClass":"addClass"](c),t.data("hide",!n)}),e.renderCheckBtn();var r=l.length===n.children("li."+c).length;e.noneView(n,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(n,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,i){e.reload.call(e,t,i)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)}}},s=function(e){var t=c.config[e];return t||o.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),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",N=".layui-table-fixed-r",A=".layui-table-total",L=".layui-table-page",S=".layui-table-sort",R="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("")},z=['',"","
          "].join(""),E=['
          ',"{{# if(d.data.toolbar){ }}",'
          ','
          ','
          ',"
          ","{{# } }}",'
          ',"{{# if(d.data.loading){ }}",'
          ','',"
          ","{{# } }}","{{# var left, right; }}",'
          ',_(),"
          ",'
          ',z,"
          ","{{# if(left){ }}",'
          ','
          ',_({fixed:!0}),"
          ",'
          ',z,"
          ","
          ","{{# }; }}","{{# if(right){ }}",'
          ','
          ',_({fixed:"right"}),'
          ',"
          ",'
          ',z,"
          ","
          ","{{# }; }}","
          ","{{# if(d.data.totalRow){ }}",'
          ','','',"
          ","
          ","{{# } }}","{{# if(d.data.page){ }}",'
          ','
          ',"
          ","{{# } }}","","
          "].join(""),j=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",totalRowName:"totalRow",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=j.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next("."+v),o=e.elem=t(i(E).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(N),e.layTotal=o.find(A),e.layPage=o.find(L),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="string"==typeof t?r[t]: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,i){var a=this;e=e||{},delete a.haveInit,e.data&&e.data.constructor===Array&&delete a.config.data,a.config=t.extend(i,{},a.config,e),a.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(),"function"==typeof a.error&&a.error(e,t)}})}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,"object"==typeof a.totalRow&&(c[n.totalRowName]=t.extend({},a.totalRow)),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=e[s.response.totalRowName],v=[],m=[],g=[],b=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=[],h=[],p=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,v=s.index+"-"+r.key,m=l[c];if(void 0!==m&&null!==m||(m=""),!r.colGroup){var g=['','
          '+function(){var n=t.extend(!0,{LAY_INDEX:p},l),o=d.config.checkName;switch(r.type){case"checkbox":return'";case"radio":return n[o]&&(e=a),'';case"numbers":return p}return r.toolbar?i(t(r.toolbar).html()||"").render(n):u(r,m,n)}(),"
          "].join("");o.push(g),r.fixed&&"right"!==r.fixed&&y.push(g),"right"===r.fixed&&h.push(g)}}),v.push(''+o.join("")+""),m.push(''+y.join("")+""),g.push(''+h.join("")+""))}),c.layBody.scrollTop(0),c.layMain.find("."+p).remove(),c.layMain.find("tbody").html(v.join("")),c.layFixLeft.find("tbody").html(m.join("")),c.layFixRight.find("tbody").html(g.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),0===y.length?(c.renderForm(),c.errorView(s.text.none)):(c.layFixed.removeClass(f),r?b():(b(),c.renderTotal(y,h),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,a){var l=this,n=l.config,o={};if(n.totalRow){layui.each(e,function(e,t){0!==t.length&&l.eachCols(function(e,i){var a=i.field||e,l=t[a];i.totalRow&&(o[a]=(o[a]||0)+(parseFloat(l)||0))})}),l.dataTotal={};var r=[];l.eachCols(function(e,d){var c=d.field||e,s=function(){var e,t=d.totalRowText||"",i=parseFloat(o[c]).toFixed(2),l={};return l[c]=i,e=d.totalRow?u(d,i,l)||t:t,a?a[d.field]||e:e}(),y=['','
          '+function(){var e=d.totalRow||n.totalRow;return"string"==typeof e?i(e).render(t.extend({TOTAL_NUMS:s},d)):s}(),"
          "].join("");d.field&&(l.dataTotal[c]=s),r.push(y)}),l.layTotal.find("tbody").html(""+r.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&&(n=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){o.error("Table modules: sort field '"+n+"' not matched")}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=j.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,i=this,a=i.config,o=t("body"),c={},s=i.layHeader.find("th"),h=".layui-table-cell",p=a.elem.attr("lay-filter");i.layTool.on("click","*[lay-event]",function(e){var o=t(this),c=o.attr("lay-event"),s=function(e){var l=t(e.list),n=t('
            ');n.html(l),a.height&&n.css("max-height",a.height-(i.layTool.outerHeight()||50)),o.find(".layui-table-tool-panel")[0]||o.append(n),i.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(i.tipsIndex),c){case"LAYTABLE_COLS":s({list:function(){var e=[];return i.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 l=t(e.elem),n=this.checked,o=l.data("key"),r=l.data("parentkey");layui.each(a.cols,function(e,t){layui.each(t,function(t,l){if(e+"-"+t===o){var d=l.hide;l.hide=!n,i.elem.find('*[data-key="'+a.index+"-"+o+'"]')[n?"removeClass":"addClass"](f),d!=l.hide&&i.setParentCol(!n,r),i.resize()}})})})}});break;case"LAYTABLE_EXPORT":r.ie?l.tips("导出功能不支持 IE,请用 Chrome 等高级浏览器导出",this,{tips:3}):s({list:function(){return['
          • 导出到 Csv 文件
          • ','
          • 导出到 Excel 文件
          • '].join("")}(),done:function(e,l){l.on("click",function(){var e=t(this).data("type");d.exportFile.call(i,a.id,null,e)})}});break;case"LAYTABLE_PRINT":var u=window.open("打印窗口","_blank"),h=[""].join(""),v=t(i.layHeader.html());v.append(i.layMain.find("table").html()),v.append(i.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:a},{}))}),s.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data("unresize")||c.resizeStart||(c.allowResize=i.width()-l<=10,o.css("cursor",c.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);c.resizeStart||o.css("cursor","")}).on("mousedown",function(e){var l=t(this);if(c.allowResize){var n=l.data("key");e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],i.getCssRule(n,function(e){var t=e.style.width||l.outerWidth();c.rule=e,c.ruleWidth=parseFloat(t),c.minWidth=l.data("minwidth")||a.cellMinWidth})}}),F.on("mousemove",function(t){if(c.resizeStart){if(t.preventDefault(),c.rule){var a=c.ruleWidth+t.clientX-c.offset[0];a');return n[0].value=i.data("content")||l.text(),i.find("."+R)[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('
            ')}};i.layBody.on("click","."+g,function(e){var n=t(this),o=n.parent(),d=o.children(h);i.tipsIndex=l.tips(['
            ',d.html(),"
            ",''].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:r.ios||r.android?300:i.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)}),i.layBody.on("click","*[lay-event]",function(){var e=t(this),a=e.parents("tr").eq(0).data("index");layui.event.call(this,y,"tool("+p+")",v.call(this,{event:e.attr("lay-event")})),i.setThisRowChecked(a)}),i.layMain.on("scroll",function(){var e=t(this),a=e.scrollLeft(),n=e.scrollTop();i.layHeader.scrollLeft(a),i.layTotal.scrollLeft(a),i.layFixed.find(k).scrollTop(n),l.close(i.tipsIndex)}),j.on("resize",function(){i.resize()})},function(){F.on("click",function(){F.trigger("table.remove.tool.panel")}),F.on("table.remove.tool.panel",function(){t(".layui-table-tool-panel").remove()})}(),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,"error")}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.getData=function(e){var t=[],i=d.cache[e]||[];return layui.each(i,function(e,i){i.constructor!==Array&&t.push(d.clearCacheKey(i))}),t},d.exportFile=function(e,t,i){var a=this;t=t||d.clearCacheKey(d.cache[e]),i=i||"csv";var l=c.config[e]||{},n={csv:"text/csv",xls:"application/vnd.ms-excel"}[i],s=document.createElement("a");return r.ie?o.error("IE_NOT_SUPPORT_EXPORTS"):(s.href="data:"+n+";charset=utf-8,\ufeff"+encodeURIComponent(function(){var i=[],l=[],n=[];return layui.each(t,function(t,a){var n=[];"object"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||"")}),layui.each(d.clearCacheKey(a),function(e,t){n.push('"'+(t||"")+'"')})):d.eachCols(e,function(e,l){if(l.field&&"normal"==l.type&&!l.hide){var o=a[l.field];void 0!==o&&null!==o||(o=""),0==t&&i.push(l.title||""),n.push('"'+u(l,o,a,"text")+'"')}}),l.push(n.join(","))}),layui.each(a.dataTotal,function(e,t){n.push(t)}),i.join(",")+"\r\n"+l.join("\r\n")+"\r\n"+n.join(",")}()),s.download=(l.title||"table_"+(l.index||""))+"."+i,document.body.appendChild(s),s.click(),void document.body.removeChild(s))},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,i){var a=s(e);if(a){var l=c.that[e];return l.reload(t,i),c.call(l)}},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},t(function(){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):al.length&&(l.value=l.length),parseInt(l.value)!==l.value&&(l.half||(l.value=Math.ceil(l.value)-l.value<.5?Math.ceil(l.value):Math.floor(l.value)));for(var n='
              ",s=1;s<=l.length;s++){var r='
            • ";l.half&&parseInt(l.value)!==l.value&&s==Math.ceil(l.value)?n=n+'
            • ":n+=r}n+="
            "+(l.text?''+l.value+"星":"")+"";var c=l.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),l.span=e.elemTemp.next("span"),l.setText&&l.setText(l.value),c.html(e.elemTemp),c.addClass("layui-inline"),l.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,l=a.config;l.value=e,a.render()},v.prototype.action=function(){var e=this,l=e.config,i=e.elemTemp,n=i.find("i").width();i.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(l.value=t,l.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(l.value=l.value-.5)}l.text&&i.next("span").text(l.value+"星"),l.choose&&l.choose(l.value),l.setText&&l.setText(l.value)}),v.on("mousemove",function(e){if(i.find("i").each(function(){a(this).addClass(o).removeClass(r)}),i.find("i:lt("+t+")").each(function(){a(this).addClass(u).removeClass(f)}),l.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(s).removeClass(u)}}),v.on("mouseleave",function(){i.find("i").each(function(){a(this).addClass(o).removeClass(r)}),i.find("i:lt("+Math.floor(l.value)+")").each(function(){a(this).addClass(u).removeClass(f)}),l.half&&parseInt(l.value)!==l.value&&i.children("li:eq("+Math.floor(l.value)+")").children("i").addClass(s).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},l.render=function(e){var a=new v(e);return i.call(a)},e(n,l)});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&&f.width()&&(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:["","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:''},L=new c;t(n,L)});layui.define("jquery",function(a){"use strict";var e=layui.$;a("code",function(a){var l=[];a=a||{},a.elem=e(a.elem||".layui-code"),a.lang="lang"in a?a.lang:"code",a.elem.each(function(){l.push(this)}),layui.each(l.reverse(),function(l,i){var t=e(i),c=t.html();(t.attr("lay-encode")||a.encode)&&(c=c.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),t.html('
            1. '+c.replace(/[\r\t\n]+/g,"
            2. ")+"
            "),t.find(">.layui-code-h3")[0]||t.prepend('

            '+(t.attr("lay-title")||a.title||"</>")+''+(t.attr("lay-lang")||a.lang||"")+"

            ");var n=t.find(">.layui-code-ol");t.addClass("layui-box layui-code-view"),(t.attr("lay-skin")||a.skin)&&t.addClass("layui-code-"+(t.attr("lay-skin")||a.skin)),(n.find("li").length/100|0)>0&&n.css("margin-left",(n.find("li").length/100|0)+"px"),(t.attr("lay-height")||a.height)&&n.css("max-height",t.attr("lay-height")||a.height)})})}).addcss("modules/code.css?v=2","skincodecss"); \ No newline at end of file +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 t=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}(),i=e.LAYUI_GLOBAL||{};return i.layer_dir||t.substring(0,t.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="creating",u=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function d(t){var n=100,a=document.getElementById(f);return++u>1e4/n?e.console&&console.error(l+".css: Invalid"):void(1989===parseInt(o.getStyle(a,"width"))?(t===c&&a.removeAttribute("lay-status"),a.getAttribute("lay-status")===c?setTimeout(d,n):i()):(a.setAttribute("lay-status",c),setTimeout(function(){d(c)},n)))}()}}},r={v:"3.5.0",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:260},n))}},s=function(e){var t=this,a=function(){t.creat()};t.index=++r.index,t.config.maxWidth=i(n).width()-30,t.config=i.extend({},t.config,o.config,e),document.body?a():setTimeout(function(){a()},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"],l.SHADE="layui-layer-shade",l.MOVE="layui-layer-move",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,minStack:!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("#"+l.MOVE)[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),e.shadeo=i("#"+l.SHADE+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),e.shadeo.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():function(){e.offset(),parseInt(o.getStyle(document.getElementById(l.MOVE),"z-index"))||function(){e.layero.css("visibility","hidden"),r.ready(function(){e.offset(),e.layero.css("visibility","visible")})}()}(),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&&t.shadeo.on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n,t.index);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,t.index)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n,t.index)},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){t=t||{};var a=i("#"+l[0]+e),s=i("#"+l.SHADE+e),f=a.find(l[1]).outerHeight()||0,c=a.attr("minLeft")||181*o.minIndex+"px",u=a.css("position"),d={width:180,height:f,position:"fixed",overflow:"hidden"};o.record(a),o.minLeft[0]&&(c=o.minLeft[0],o.minLeft.shift()),t.minStack&&(d.left=c,d.top=n.height()-f,a.attr("minLeft")||o.minIndex++,a.attr("minLeft",c)),a.attr("position",u),r.style(e,d,!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),s.hide()},r.restore=function(e){var t=i("#"+l[0]+e),n=i("#"+l.SHADE+e),a=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(a[0]),height:parseFloat(a[1]),top:parseFloat(a[2]),left:parseFloat(a[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e),n.show()},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,t){var n=i("#"+l[0]+e),a=n.attr("type"),s="layer-anim-close";if(n[0]){var f="layui-layer-wrap",c=function(){if(a===o.type[1]&&"object"===n.attr("conType")){n.children(":not(."+l[5]+")").remove();for(var r=n.find("."+f),s=0;s<2;s++)r.unwrap();r.css("display",r.data("display")).removeClass(f)}else{if(a===o.type[2])try{var c=i("#"+l[4]+e)[0];c.contentWindow.document.write(""),c.contentWindow.close(),n.find("."+l[5])[0].removeChild(c)}catch(u){}n[0].innerHTML="",n.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e],"function"==typeof t&&t()};n.data("isOutAnim")&&n.addClass("layer-anim "+s),i("#layui-layer-moves, #"+l.SHADE+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),n.attr("minLeft")&&(o.minIndex--,o.minLeft.push(n.attr("minLeft"))),r.ie&&r.ie<10||!n.data("isOutAnim")?c():setTimeout(function(){c()},200)}},r.closeAll=function(e,t){"function"==typeof e&&(t=e,e=null);var n=i("."+l[0]);i.each(n,function(a){var o=i(this),s=e?o.attr("type")===e:1;s&&r.close(o.attr("times"),a===n.length-1?t:null),s=null}),0===n.length&&"function"==typeof t&&t()};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(){h();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)}),!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.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev(!0)}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext(!0)}),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),a&&(t.anim=-1),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||'+function(){return 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-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(){r.ready(),o.run(e.jQuery)}()}(window);layui.define("jquery",function(e){"use strict";var t=layui.$,i=layui.hint(),n={fixbar:function(e){var i,n,r="layui-fixbar",a="layui-fixbar-top",o=t(document),l=t("body");e=t.extend({showHeight:200},e),e.bar1=e.bar1===!0?"":e.bar1,e.bar2=e.bar2===!0?"":e.bar2,e.bgcolor=e.bgcolor?"background-color:"+e.bgcolor:"";var c=[e.bar1,e.bar2,""],g=t(['
              ',e.bar1?'
            • '+c[0]+"
            • ":"",e.bar2?'
            • '+c[1]+"
            • ":"",'
            • '+c[2]+"
            • ","
            "].join("")),u=g.find("."+a),s=function(){var t=o.scrollTop();t>=e.showHeight?i||(u.show(),i=1):i&&(u.hide(),i=0)};t("."+r)[0]||("object"==typeof e.css&&g.css(e.css),l.append(g),s(),g.find("li").on("click",function(){var i=t(this),n=i.attr("lay-type");"top"===n&&t("html,body").animate({scrollTop:0},200),e.click&&e.click.call(this,n)}),o.on("scroll",function(){clearTimeout(n),n=setTimeout(function(){s()},100)}))},countdown:function(e,t,i){var n=this,r="function"==typeof t,a=new Date(e).getTime(),o=new Date(!t||r?(new Date).getTime():t).getTime(),l=a-o,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];r&&(i=t);var g=setTimeout(function(){n.countdown(e,o+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],t,g),l<=0&&clearTimeout(g),g},timeAgo:function(e,t){var i=this,n=[[],[]],r=(new Date).getTime()-new Date(e).getTime();return r>26784e5?(r=new Date(e),n[0][0]=i.digit(r.getFullYear(),4),n[0][1]=i.digit(r.getMonth()+1),n[0][2]=i.digit(r.getDate()),t||(n[1][0]=i.digit(r.getHours()),n[1][1]=i.digit(r.getMinutes()),n[1][2]=i.digit(r.getSeconds())),n[0].join("-")+" "+n[1].join(":")):r>=864e5?(r/1e3/60/60/24|0)+"\u5929\u524d":r>=36e5?(r/1e3/60/60|0)+"\u5c0f\u65f6\u524d":r>=18e4?(r/1e3/60|0)+"\u5206\u949f\u524d":r<0?"\u672a\u6765":"\u521a\u521a"},digit:function(e,t){var i="";e=String(e),t=t||2;for(var n=e.length;n/g,">").replace(/'/g,"'").replace(/"/g,""")},unescape:function(e){return String(e||"").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/,"'").replace(/\"/,'"')},toVisibleArea:function(e){if(e=t.extend({margin:160,duration:200,type:"y"},e),e.scrollElem[0]&&e.thisElem[0]){var i=e.scrollElem,n=e.thisElem,r="y"===e.type,a=r?"scrollTop":"scrollLeft",o=r?"top":"left",l=i[a](),c=i[r?"height":"width"](),g=i.offset()[o],u=n.offset()[o]-g,s={};(u>c-e.margin||u0&&t.unshift(""),t.join(" ")}()+">"+(a.title||"unnaming")+"";return s[0]?s.before(r):n.append(r),o.append('
            '+(a.content||"")+"
            "),b.hideTabMore(!0),b.tabAuto(),this},s.prototype.tabDelete=function(t,a){var e=".layui-tab-title",l=i(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+a+'"]');return b.tabDelete(null,s),this},s.prototype.tabChange=function(t,a){var e=".layui-tab-title",l=i(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+a+'"]');return b.tabClick.call(s[0],null,null,s),this},s.prototype.tab=function(t){t=t||{},m.on("click",t.headerElem,function(a){var e=i(this).index();b.tabClick.call(this,a,e,null,t)})},s.prototype.progress=function(t,a){var e="layui-progress",l=i("."+e+"[lay-filter="+t+"]"),n=l.find("."+e+"-bar"),s=n.find("."+e+"-text");return n.css("width",a).attr("lay-percent",a),s.text(a),this};var o=".layui-nav",r="layui-nav-item",c="layui-nav-bar",u="layui-nav-tree",d="layui-nav-child",y="layui-nav-child-c",f="layui-nav-more",h="layui-icon-down",p="layui-anim layui-anim-upbit",b={tabClick:function(t,a,s,o){o=o||{};var r=s||i(this),a=a||r.parent().children("li").index(r),c=o.headerElem?r.parent():r.parents(".layui-tab").eq(0),u=o.bodyElem?i(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(a).addClass(n).siblings().removeClass(n)),layui.event.call(this,e,"tab("+y+")",{elem:c,index:a})},tabDelete:function(t,a){var n=a||i(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]?b.tabClick.call(n.next()[0],null,s+1):n.prev()[0]&&b.tabClick.call(n.prev()[0],null,s-1)),n.remove(),r.eq(s).remove(),setTimeout(function(){b.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;i(".layui-tab").each(function(){var s=i(this),o=s.children(".layui-tab-title"),r=(s.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),c=i('');if(n===window&&8!=a.ie&&b.hideTabMore(!0),s.attr("lay-allowClose")&&o.find("li").each(function(){var t=i(this);if(!t.find("."+l)[0]){var a=i('');a.on("click",b.tabDelete),t.append(a)}}),"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(i){o[this.title?"removeClass":"addClass"](t),this.title=this.title?"":"\u6536\u7f29"})}else o.find("."+e).remove(),s.removeAttr("overflow")})},hideTabMore:function(t){var a=i(".layui-tab-title");t!==!0&&"tabmore"===i(t.target).attr("lay-stope")||(a.removeClass("layui-tab-more"),a.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=i(this),a=t.parents(o),n=a.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]||(a.find("."+l).removeClass(l),s.addClass(l)),a.hasClass(u)&&(c.removeClass(p),c[0]&&(s["none"===c.css("display")?"addClass":"removeClass"](r+"ed"),"all"===a.attr("lay-shrink")&&s.siblings().removeClass(r+"ed"))),layui.event.call(this,e,"nav("+n+")",t)},collapse:function(){var t=i(this),a=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),a.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(){b.tabAuto.call({})},nav:function(){var t=200,e={},s={},v={},m="layui-nav-title",C=function(l,o,r){var c=i(this),h=c.find("."+d);if(o.hasClass(u)){var b=c.children("."+m);l.css({top:c.offset().top-o.offset().top,height:(b[0]?b:c).outerHeight(),opacity:1})}else h.addClass(p),h.hasClass(y)&&h.css({left:-(h.outerWidth()-c.width())/2}),h[0]?l.css({left:l.position().left+l.width()/2,width:0,opacity:0}):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:h[0]?0:c.width(),opacity:h[0]?0:1})},a.ie&&a.ie<10?0:t),clearTimeout(v[r]),"block"===h.css("display")&&clearTimeout(s[r]),s[r]=setTimeout(function(){h.addClass(n),c.find("."+f).addClass(f+"d")},300)};i(o+l).each(function(a){var l=i(this),o=i(''),y=l.find("."+r);l.find("."+c)[0]||(l.append(o),(l.hasClass(u)?y.find("dd,>."+m):y).on("mouseenter",function(){C.call(this,o,l,a)}).on("mouseleave",function(){l.hasClass(u)?o.css({height:0,opacity:0}):(clearTimeout(s[a]),s[a]=setTimeout(function(){l.find("."+d).removeClass(n),l.find("."+f).removeClass(f+"d")},300))}),l.on("mouseleave",function(){clearTimeout(e[a]),v[a]=setTimeout(function(){l.hasClass(u)||o.css({width:0,left:o.position().left+o.width()/2,opacity:0})},t)})),y.find("a").each(function(){var t=i(this),a=(t.parent(),t.siblings("."+d));a[0]&&!t.children("."+f)[0]&&t.append(''),t.off("click",b.clickThis).on("click",b.clickThis)})})},breadcrumb:function(){var t=".layui-breadcrumb";i(t+l).each(function(){var t=i(this),a="lay-separator",e=t.attr(a)||"/",l=t.find("a");l.next("span["+a+"]")[0]||(l.each(function(t){t!==l.length-1&&i(this).after(""+e+"")}),t.css("visibility","visible"))})},progress:function(){var t="layui-progress";i("."+t+l).each(function(){var a=i(this),e=a.find(".layui-progress-bar"),l=e.attr("lay-percent");e.css("width",function(){return/^.+\/.+$/.test(l)?100*new Function("return "+l)()+"%":l}()),a.attr("lay-showPercent")&&setTimeout(function(){e.html(''+l+"")},350)})},collapse:function(){var t="layui-collapse";i("."+t+l).each(function(){var t=i(this).find(".layui-colla-item");t.each(function(){var t=i(this),a=t.find(".layui-colla-title"),e=t.find(".layui-colla-content"),l="none"===e.css("display");a.find(".layui-colla-icon").remove(),a.append(''+(l?"":"")+""),a.off("click",b.collapse).on("click",b.collapse)})})}};return s[t]?s[t]():layui.each(s,function(t,i){i()})},s.prototype.render=s.prototype.init;var v=new s,m=i(document);i(function(){v.render()});var C=".layui-tab-title li";m.on("click",C,b.tabClick),m.on("click",b.hideTabMore),i(window).on("resize",b.tabAuto),t(e,v)});layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,n=layui.hint(),o=layui.device(),a={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,a.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("")),a=i.elem.next();(a.hasClass(u)||a.hasClass(c))&&a.remove(),o.ie&&o.ie<10&&i.elem.wrap('
            '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(n),o.ie&&o.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,i=e.config,n=t(''),o=t(['
            ',"
            "].join(""));t("#"+f)[0]||t("body").append(n),i.elem.next().hasClass(c)||(e.elemFile.wrap(o),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,a=this,l=a.config,r=a.elemFile[0],u=function(){var i=0,n=0,o=e||a.files||a.chooseFiles||r.files,u=function(){l.multiple&&i+n===a.fileLength&&"function"==typeof l.allDone&&l.allDone({total:a.fileLength,successful:i,aborted:n})};layui.each(o,function(e,o){var r=new FormData;r.append(l.field,o),layui.each(l.data,function(e,t){t="function"==typeof t?t():t,r.append(e,t)});var c={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++,a.msg("\u8bf7\u6c42\u4e0a\u4f20\u63a5\u53e3\u51fa\u73b0\u5f02\u5e38"),m(e),u()}};"function"==typeof l.progress&&(c.xhr=function(){var i=t.ajaxSettings.xhr();return i.upload.addEventListener("progress",function(t){if(t.lengthComputable){var i=Math.floor(t.loaded/t.total*100);l.progress(i,l.item?l.item[0]:l.elem[0],t,e)}}),i}),t.ajax(c)})},c=function(){var e=t("#"+f);a.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var t,i=e.contents().find("body");try{t=i.text()}catch(n){a.msg("\u83b7\u53d6\u4e0a\u4f20\u540e\u7684\u54cd\u5e94\u4fe1\u606f\u51fa\u73b0\u5f02\u5e38"),clearInterval(p.timer),m()}t&&(clearInterval(p.timer),i.html(""),d(0,t))},30)},d=function(e,t){if(a.elemFile.next("."+s).remove(),r.value="","object"!=typeof t)try{t=JSON.parse(t)}catch(i){return t={},a.msg("\u8bf7\u5bf9\u4e0a\u4f20\u63a5\u53e3\u8fd4\u56de\u6709\u6548JSON")}"function"==typeof l.done&&l.done(t,e||0,function(e){a.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){a.upload(e)})},h=l.exts,v=function(){var t=[];return layui.each(e||a.chooseFiles,function(e,i){t.push(i.name)}),t}(),g={preview:function(e){a.preview(e)},upload:function(e,t){var i={};i[e]=t,a.upload(i)},pushFile:function(){return a.files=a.files||{},layui.each(a.chooseFiles,function(e,t){a.files[e]=t}),a.files},resetFile:function(e,t,i){var n=new File([t],i);a.files=a.files||{},a.files[e]=n}},y=function(){if("choose"!==i&&!l.auto||(l.choose&&l.choose(g),"choose"!==i))return l.before&&l.before(g),o.ie?o.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 a.msg("\u9009\u62e9\u7684\u6587\u4ef6\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(v)))return a.msg("\u9009\u62e9\u7684\u89c6\u9891\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(v)))return a.msg("\u9009\u62e9\u7684\u97f3\u9891\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),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 a.msg("\u9009\u62e9\u7684\u56fe\u7247\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),r.value=""}if(a.fileLength=function(){var t=0,i=e||a.files||a.chooseFiles||r.files;return layui.each(i,function(){t++}),t}(),l.number&&a.fileLength>l.number)return a.msg("\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20\u7684\u6570\u91cf\u4e3a\uff1a"+l.number);if(l.size>0&&!(o.ie&&o.ie<10)){var F;if(layui.each(a.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 a.msg("\u6587\u4ef6\u4e0d\u80fd\u8d85\u8fc7"+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,a.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,a=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 o=e.elemFile,a=(i.item?i.item:i.elem,t.length>1?t.length+"\u4e2a\u6587\u4ef6":(t[0]||{}).name||o[0].value.match(/[^\/\\]+\..+/g)||[]||"");o.next().hasClass(s)&&o.next().remove(),e.upload(null,"choose"),e.isFile()||i.choose||o.after(''+a+"")};i.elem.off("upload.start").on("upload.start",function(){var o=t(this),a=o.attr("lay-data");if(a)try{a=new Function("return "+a)(),e.config=t.extend({},i,a)}catch(l){n.error("Upload element property lay-data configuration item has a syntax error: "+a)}e.config.item=o,e.elemFile[0].click()}),o.ie&&o.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,o){var r=t(this),u=o.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),a(u),i.auto?e.upload(u):l(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var t=this.files||[];a(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))},a.render=function(e){var t=new p(e);return l.call(t)},e(r,a)});layui.define(["jquery","laytpl","lay"],function(e){"use strict";var i=layui.$,n=layui.laytpl,t=layui.hint(),a=layui.device(),l=a.mobile?"click":"mousedown",r="dropdown",o="layui_"+r+"_index",u={config:{},index:layui[r]?layui[r].index+1e4:0,set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,r,e,i)}},d=function(){var e=this,i=e.config,n=i.id;return d.that[n]=e,{config:i,reload:function(i){e.reload.call(e,i)}}},s="layui-dropdown",m="layui-menu-item-up",c="layui-menu-item-down",p="layui-menu-body-title",y="layui-menu-item-group",f="layui-menu-item-parent",v="layui-menu-item-divider",g="layui-menu-item-checked",h="layui-menu-item-checked2",w="layui-menu-body-panel",C="layui-menu-body-panel-left",V="."+y+">."+p,k=function(e){var n=this;n.index=++u.index,n.config=i.extend({},n.config,u.config,e),n.init()};k.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:300},k.prototype.reload=function(e){var n=this;n.config=i.extend({},n.config,e),n.init(!0)},k.prototype.init=function(e){var n=this,t=n.config,a=t.elem=i(t.elem);if(a.length>1)return layui.each(a,function(){u.render(i.extend({},t,{elem:this}))}),n;if(!e&&a[0]&&a.data(o)){var l=d.getThis(a.data(o));if(!l)return;return l.reload(t)}t.id="id"in t?t.id:n.index,t.show&&n.render(e),n.events()},k.prototype.render=function(e){var t=this,a=t.config,r=i("body"),s=function(){var e=i('
              ');return a.data.length>0?m(e,a.data):e.html('
            • no menu
            • '),e},m=function(e,t){return layui.each(t,function(t,l){var r=l.child&&l.child.length>0,o="isSpreadItem"in l?l.isSpreadItem:a.isSpreadItem,u=l.templet?n(l.templet).render(l):a.templet?n(a.templet).render(l):l.title,d=function(){return r&&(l.type=l.type||"parent"),l.type?{group:"group",parent:"parent","-":"-"}[l.type]||"parent":""}();if("-"===d||l.title||l.id||r){var s=i(["",function(){var e="href"in l?''+u+"":u;return r?'
              '+e+function(){return"parent"===d?'':"group"===d&&a.isAllowSpread?'':""}()+"
              ":'
              '+e+"
              "}(),""].join(""));if(s.data("item",l),r){var c=i('
              '),y=i("
                ");"parent"===d?(c.append(m(y,l.child)),s.append(c)):s.append(m(y,l.child))}e.append(s)}}),e},c=['
                ',"
                "].join("");("contextmenu"===a.trigger||lay.isTopElem(a.elem[0]))&&(e=!0),!e&&a.elem.data(o+"_opened")||(t.elemView=i(c),t.elemView.append(a.content||s()),a.className&&t.elemView.addClass(a.className),a.style&&t.elemView.attr("style",a.style),u.thisId=a.id,t.remove(),r.append(t.elemView),a.elem.data(o+"_opened",!0),t.position(),d.prevElem=t.elemView,d.prevElem.data("prevElem",a.elem),t.elemView.find(".layui-menu").on(l,function(e){lay.stope(e)}),t.elemView.find(".layui-menu li").on("click",function(e){var n=i(this),l=n.data("item")||{},r=l.child&&l.child.length>0;r||"-"===l.type||(t.remove(),"function"==typeof a.click&&a.click(l,n))}),t.elemView.find(V).on("click",function(e){var n=i(this),t=n.parent(),l=t.data("item")||{};"group"===l.type&&a.isAllowSpread&&d.spread(t)}),"mouseenter"===a.trigger&&t.elemView.on("mouseenter",function(){clearTimeout(d.timer)}).on("mouseleave",function(){t.delayRemove()}))},k.prototype.position=function(e){var i=this,n=i.config;lay.position(n.elem[0],i.elemView[0],{position:n.position,e:i.e,clickType:"contextmenu"===n.trigger?"right":null})},k.prototype.remove=function(){var e=this,i=(e.config,d.prevElem);i&&(i.data("prevElem")&&i.data("prevElem").data(o+"_opened",!1),i.remove())},k.prototype.delayRemove=function(){var e=this,i=e.config;clearTimeout(d.timer),d.timer=setTimeout(function(){e.remove()},i.delay)},k.prototype.events=function(){var e=this,i=e.config;"hover"===i.trigger&&(i.trigger="mouseenter"),e.prevElem&&e.prevElem.off(i.trigger,e.prevElemCallback),e.prevElem=i.elem,e.prevElemCallback=function(n){clearTimeout(d.timer),e.e=n,e.render(),n.preventDefault(),"function"==typeof i.ready&&i.ready(e.elemView,i.elem,e.e.target)},i.elem.on(i.trigger,e.prevElemCallback),"mouseenter"===i.trigger&&i.elem.on("mouseleave",function(){e.delayRemove()})},d.that={},d.getThis=function(e){var i=d.that[e];return i||t.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},d.spread=function(e){var i=e.children("."+p).find(".layui-icon");e.hasClass(m)?(e.removeClass(m).addClass(c),i.removeClass("layui-icon-down").addClass("layui-icon-up")):(e.removeClass(c).addClass(m),i.removeClass("layui-icon-up").addClass("layui-icon-down"))},!function(){var e=i(window),n=i(document);e.on("resize",function(){if(u.thisId){var e=d.getThis(u.thisId);if(e){if(!e.elemView[0]||!i("."+s)[0])return!1;var n=e.config;"contextmenu"===n.trigger?e.remove():e.position()}}}),n.on(l,function(e){if(u.thisId){var i=d.getThis(u.thisId);if(i){var n=i.config;!lay.isTopElem(n.elem[0])&&"contextmenu"!==n.trigger&&(e.target===n.elem[0]||n.elem.find(e.target)[0]||e.target===i.elemView[0]||i.elemView&&i.elemView.find(e.target)[0])||i.remove()}}});var t=".layui-menu:not(.layui-dropdown-menu) li";n.on("click",t,function(e){var n=i(this),t=n.parents(".layui-menu").eq(0),a=n.hasClass(y)||n.hasClass(f),l=t.attr("lay-filter")||t.attr("id"),o=lay.options(this);n.hasClass(v)||a||(t.find("."+g).removeClass(g),t.find("."+h).removeClass(h),n.addClass(g),n.parents("."+f).addClass(h),layui.event.call(this,r,"click("+l+")",o))}),n.on("click",t+V,function(e){var n=i(this),t=n.parents("."+y+":eq(0)"),a=lay.options(t[0]);"isAllowSpread"in a&&!a.isAllowSpread||d.spread(t)});var a=".layui-menu ."+f;n.on("mouseenter",a,function(n){var t=i(this),a=t.find("."+w);if(a[0]){var l=a[0].getBoundingClientRect();l.right>e.width()&&(a.addClass(C),l=a[0].getBoundingClientRect(),l.left<0&&a.removeClass(C)),l.bottom>e.height()&&a.eq(0).css("margin-top",-(l.bottom-e.height()))}}).on("mouseleave",a,function(e){var n=i(this),t=n.children("."+w);t.removeClass(C),t.css("margin-top",0)})}(),u.reload=function(e,i){var n=d.getThis(e);return n?(n.reload(i),d.call(n)):this},u.render=function(e){var i=new k(e);return d.call(i)},e(r,u)});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(t,a){return i.value=t,e.slide("set",t,a||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",p="layui-slider-input-btn",m="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),p=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 p=Math.floor((t.value-t.min)/(t.max-t.min)*100)+"%"}var m=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),s.find("."+d).html(l.setTips?l.setTips(u):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(m),s.find("."+d).show(),i.preventDefault()},o=function(){t.removeClass(m),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.children("."+p).children("i").each(function(e){i(this).on("click",function(){g=y.children("."+c).children("input").val(),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]+/,"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"],phone:[/^1\d{10}$/,"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7"],email:[/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"],url:[/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/,"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"],number:function(e){if(!e||isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:[/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"],identity:[/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u8eab\u4efd\u8bc1\u53f7"]}}};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=this,n=t(r+'[lay-filter="'+e+'"]');return n.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),a.getValue(e)},u.prototype.getValue=function(e,i){i=i||t(r+'[lay-filter="'+e+'"]').eq(0);var a={},n={},l=i.find("input,select,textarea");return layui.each(l,function(e,i){var l;t(this);if(i.name=(i.name||"").replace(/^\s*|\s*&/,""),i.name){if(/^.*\[\]$/.test(i.name)){var r=i.name.match(/^(.*)\[\]$/g)[0];a[r]=0|a[r],l=i.name.replace(/^(.*)\[\]$/,"$1["+a[r]++ +"]")}/^checkbox|radio$/.test(i.type)&&!i.checked||(n[l||i.name]=i.value)}}),n},u.prototype.render=function(e,i){var n=this,u=t(r+function(){return i?'[lay-filter="'+i+'"]':""}()),d={select:function(){var e,i="\u8bf7\u9009\u62e9",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"),g=i.find("dl"),x=g.children("dd"),b=this.selectedIndex;if(!u){var C=function(){var e=i.offset().top+i.outerHeight()+5-h.scrollTop(),t=g.outerHeight();b=p[0].selectedIndex,i.addClass(a+"ed"),x.removeClass(o),y=null,x.eq(b).addClass(s).siblings().removeClass(s),e+t>h.height()&&e>=t&&i.addClass(a+"up"),$()},w=function(e){i.removeClass(a+"ed "+a+"up"),k.blur(),y=null,e||T(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||""))})},$=function(){var e=g.children("dd."+s);if(e[0]){var t=e.position().top,i=g.height(),a=e.height();t>i&&g.scrollTop(t+g.scrollTop()-i+a-5),t<0&&g.scrollTop(t+g.scrollTop()-5)}};m.on("click",function(e){i.hasClass(a+"ed")?w():(v(e,!0),C()),g.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=g.children("dd."+s);if(g.children("dd."+o)[0]&&"next"===t){var i=g.children("dd:not(."+o+",."+c+")"),n=i.eq(0).index();if(n>=0&&n\u65e0\u5339\u914d\u9879

                '):g.find("."+r).remove()},"keyup"),""===t&&g.find("."+r).remove(),void $())};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(){T(k.val(),function(e){d||k.val("")},"blur")},200)}),x.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('
                \u6ca1\u6709\u9009\u9879
                '),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()),e}()+"
                ","
                "].join(""));r.after(u),n.call(this,u)})}};return e?d[e]?d[e]():a.error("\u4e0d\u652f\u6301\u7684"+e+"\u8868\u5355\u6e32\u67d3"):layui.each(d,function(e,t){t()}),n};var d=function(){var e=null,a=f.config.verify,s="layui-form-danger",o={},c=t(this),u=c.parents(r),d=u.find("*[lay-verify]"),v=c.parents("form")[0],h=c.attr("lay-filter");return layui.each(d,function(l,r){var o=t(this),c=o.attr("lay-verify").split("|"),u=o.attr("lay-verType"),d=o.val();if(o.removeClass(s),layui.each(c,function(t,l){var c,f="",v="function"==typeof a[l];if(a[l]){var c=v?f=a[l](d,r):!a[l][0].test(d);if(f=f||a[l][1],"required"===l&&(f=o.attr("lay-reqText")||f),c)return"tips"===u?i.tips(f,function(){return"string"==typeof o.attr("lay-ignore")||"select"!==r.tagName.toLowerCase()&&!/^checkbox|radio$/.test(r.type)?o:o.next()}(),{tips:1}):"alert"===u?i.alert(f,{title:"\u63d0\u793a",shadeClose:!0}):/\bstring|number\b/.test(typeof f)&&i.msg(f,{icon:5,shift:6}),n.android||n.ios||setTimeout(function(){r.focus()},7),o.addClass(s),e=!0}}),e)return e}),!e&&(o=f.getValue(null,u),layui.event.call(this,l,"submit("+h+")",{elem:this,form:v,field:o}))},f=new u,v=t(document),h=t(window);t(function(){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=layui.layer,t="tree",r={config:{},index:layui[t]?layui[t].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,t,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)}}},c="layui-hide",d="layui-disabled",s="layui-tree-set",o="layui-tree-iconClick",h="layui-icon-addition",u="layui-icon-subtraction",p="layui-tree-entry",f="layui-tree-main",y="layui-tree-txt",v="layui-tree-pack",C="layui-tree-spread",k="layui-tree-setLineShort",m="layui-tree-showLine",x="layui-tree-lineExtend",b=function(e){var a=this;a.index=++r.index,a.config=i.extend({},a.config,r.config,e),a.render()};b.prototype.config={data:[],showCheckbox:!1,showLine:!0,accordion:!1,onlyIconControl:!1,isJump:!1,edit:!1,text:{defaultNodeName:"\u672a\u547d\u540d",none:"\u65e0\u6570\u636e"}},b.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()},b.prototype.render=function(){var e=this,a=e.config;e.checkids=[];var n=i('
                ');e.tree(n);var t=a.elem=i(a.elem);if(t[0]){if(e.key=a.id||e.index,e.elem=n,e.elemNone=i('
                '+a.text.none+"
                "),t.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);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(k),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(k)}),e.events()}},b.prototype.renderForm=function(e){a.render(e,"LAY-tree-"+this.index)},b.prototype.tree=function(e,a){var n=this,t=n.config,r=a||t.data;layui.each(r,function(a,r){var l=r.children&&r.children.length>0,o=i('
                "),h=i(['
                ','
                ','
                ',function(){return t.showLine?l?'':'':''}(),function(){return t.showCheckbox?'':""}(),function(){return t.isJump&&r.href?''+(r.title||r.label||t.text.defaultNodeName)+"":''+(r.title||r.label||t.text.defaultNodeName)+""}(),"
                ",function(){if(!t.edit)return"";var e={add:'',update:'',del:''},i=['
                '];return t.edit===!0&&(t.edit=["update","del"]),"object"==typeof t.edit?(layui.each(t.edit,function(a,n){i.push(e[n]||"")}),i.join("")+"
                "):void 0}(),"
                "].join(""));l&&(h.append(o),n.tree(o,r.children)),e.append(h),h.prev("."+s)[0]&&h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),l||h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),n.spread(h,r),t.showCheckbox&&(r.checked&&n.checkids.push(r.id),n.checkClick(h,r)),t.edit&&n.operate(h,r)})},b.prototype.spread=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f),c=r.find("."+o),k=r.find("."+y),m=t.onlyIconControl?c:l,x="";m.on("click",function(i){var a=e.children("."+v),n=m.children(".layui-icon")[0]?m.children(".layui-icon"):m.find(".layui-tree-icon").children(".layui-icon");if(a[0]){if(e.hasClass(C))e.removeClass(C),a.slideUp(200),n.removeClass(u).addClass(h);else if(e.addClass(C),a.slideDown(200),n.addClass(u).removeClass(h),t.accordion){var r=e.siblings("."+s);r.removeClass(C),r.children("."+v).slideUp(200),r.find(".layui-tree-icon").children(".layui-icon").removeClass(u).addClass(h)}}else x="normal"}),k.on("click",function(){var n=i(this);n.hasClass(d)||(x=e.hasClass(C)?t.onlyIconControl?"open":"close":t.onlyIconControl?"close":"open",t.click&&t.click({elem:e,state:x,data:a}))})},b.prototype.setCheckbox=function(e,i,a){var n=this,t=(n.config,a.prop("checked"));if(!a.prop("disabled")){if("object"==typeof i.children||e.find("."+v)[0]){var r=e.find("."+v).find('input[same="layuiTreeCheck"]');r.each(function(){this.disabled||(this.checked=t)})}var l=function(e){if(e.parents("."+s)[0]){var i,a=e.parent("."+v),n=a.parent(),r=a.prev().find('input[same="layuiTreeCheck"]');t?r.prop("checked",t):(a.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||r.prop("checked",!1)),l(n)}};l(e),n.renderForm("checkbox")}},b.prototype.checkClick=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f);l.on("click",'input[same="layuiTreeCheck"]+',function(r){layui.stope(r);var l=i(this).prev(),c=l.prop("checked");l.prop("disabled")||(n.setCheckbox(e,a,l),t.oncheck&&t.oncheck({elem:e,checked:c,data:a}))})},b.prototype.operate=function(e,a){var t=this,r=t.config,l=e.children("."+p),d=l.children("."+f);l.children(".layui-tree-btnGroup").on("click",".layui-icon",function(l){layui.stope(l);var f=i(this).data("type"),b=e.children("."+v),g={data:a,type:f,elem:e};if("add"==f){b[0]||(r.showLine?(d.find("."+o).addClass("layui-tree-icon"),d.find("."+o).children(".layui-icon").addClass(h).removeClass("layui-icon-file")):d.find(".layui-tree-iconArrow").removeClass(c),e.append('
                '));var w=r.operate&&r.operate(g),N={};if(N.title=r.text.defaultNodeName,N.id=w,t.tree(e.children("."+v),[N]),r.showLine)if(b[0])b.hasClass(x)||b.addClass(x),e.find("."+v).each(function(){i(this).children("."+s).last().addClass(k)}),b.children("."+s).last().prev().hasClass(k)?b.children("."+s).last().prev().removeClass(k):b.children("."+s).last().removeClass(k),!e.parent("."+v)[0]&&e.next()[0]&&b.children("."+s).last().removeClass(k);else{var T=e.siblings("."+s),L=1,A=e.parent("."+v);layui.each(T,function(e,a){i(a).children("."+v)[0]||(L=0)}),1==L?(T.children("."+v).addClass(m),T.children("."+v).children("."+s).removeClass(k),e.children("."+v).addClass(m),A.removeClass(x),A.children("."+s).last().children("."+v).children("."+s).last().addClass(k)):e.children("."+v).children("."+s).addClass(k)}if(!r.showCheckbox)return;if(d.find('input[same="layuiTreeCheck"]')[0].checked){var I=e.children("."+v).children("."+s).last();I.find('input[same="layuiTreeCheck"]')[0].checked=!0}t.renderForm("checkbox")}else if("update"==f){var F=d.children("."+y).html();d.children("."+y).html(""),d.append(''),d.children(".layui-tree-editInput").val(F).focus();var j=function(e){var i=e.val().trim();i=i?i:r.text.defaultNodeName,e.remove(),d.children("."+y).html(i),g.data.title=i,r.operate&&r.operate(g)};d.children(".layui-tree-editInput").blur(function(){j(i(this))}),d.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),j(i(this)))})}else n.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(a.title||"")+'" \u5417\uff1f',function(a){if(r.operate&&r.operate(g),g.status="remove",n.close(a),!e.prev("."+s)[0]&&!e.next("."+s)[0]&&!e.parent("."+v)[0])return e.remove(),void t.elem.append(t.elemNone);if(e.siblings("."+s).children("."+p)[0]){if(r.showCheckbox){var l=function(e){if(e.parents("."+s)[0]){var a=e.siblings("."+s).children("."+p),n=e.parent("."+v).prev(),r=n.find('input[same="layuiTreeCheck"]')[0],c=1,d=0;0==r.checked&&(a.each(function(e,a){var n=i(a).find('input[same="layuiTreeCheck"]')[0];0!=n.checked||n.disabled||(c=0),n.disabled||(d=1)}),1==c&&1==d&&(r.checked=!0,t.renderForm("checkbox"),l(n.parent("."+s))))}};l(e)}if(r.showLine){var d=e.siblings("."+s),h=1,f=e.parent("."+v);layui.each(d,function(e,a){i(a).children("."+v)[0]||(h=0)}),1==h?(b[0]||(f.removeClass(x),d.children("."+v).addClass(m),d.children("."+v).children("."+s).removeClass(k)),e.next()[0]?f.children("."+s).last().children("."+v).children("."+s).last().addClass(k):e.prev().children("."+v).children("."+s).last().addClass(k),e.next()[0]||e.parents("."+s)[1]||e.parents("."+s).eq(0).next()[0]||e.prev("."+s).addClass(k)):!e.next()[0]&&e.hasClass(k)&&e.prev().addClass(k)}}else{var y=e.parent("."+v).prev();if(r.showLine){y.find("."+o).removeClass("layui-tree-icon"),y.find("."+o).children(".layui-icon").removeClass(u).addClass("layui-icon-file");var w=y.parents("."+v).eq(0);w.addClass(x),w.children("."+s).each(function(){i(this).children("."+v).children("."+s).last().addClass(k)})}else y.find(".layui-tree-iconArrow").addClass(c);e.parents("."+s).eq(0).removeClass(C),e.parent("."+v).remove()}e.remove()})})},b.prototype.events=function(){var e=this,a=e.config;e.elem.find(".layui-tree-checkedFirst");e.setChecked(e.checkids),e.elem.find(".layui-tree-search").on("keyup",function(){var n=i(this),t=n.val(),r=n.nextAll(),l=[];r.find("."+y).each(function(){var e=i(this).parents("."+p);if(i(this).html().indexOf(t)!=-1){l.push(i(this).parent());var a=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+v)[0]&&a(e.parent("."+v).parent("."+s))};a(e.parent("."+s))}}),r.find("."+p).each(function(){var e=i(this).parent("."+s);e.hasClass("layui-tree-searchShow")||e.addClass(c)}),0==r.find(".layui-tree-searchShow").length&&e.elem.append(e.elemNone),a.onsearch&&a.onsearch({elem:l})}),e.elem.find(".layui-tree-search").on("keydown",function(){i(this).nextAll().find("."+p).each(function(){var e=i(this).parent("."+s);e.removeClass("layui-tree-searchShow "+c)}),i(".layui-tree-emptyText")[0]&&i(".layui-tree-emptyText").remove()})},b.prototype.getChecked=function(){var e=this,a=e.config,n=[],t=[];e.elem.find(".layui-form-checked").each(function(){n.push(i(this).prev()[0].value)});var r=function(e,a){layui.each(e,function(e,t){layui.each(n,function(e,n){if(t.id==n){var l=i.extend({},t);return delete l.children,a.push(l),t.children&&(l.children=[],r(t.children,l.children)),!0}})})};return r(i.extend({},a.data),t),t},b.prototype.setChecked=function(e){var a=this;a.config;a.elem.find("."+s).each(function(a,n){var t=i(this).data("id"),r=i(n).children("."+p).find('input[same="layuiTreeCheck"]'),l=r.next();if("number"==typeof e){if(t==e)return r[0].checked||l.click(),!1}else"object"==typeof e&&layui.each(e,function(e,i){if(i==t&&!r[0].checked)return l.click(),!0})})},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 b(e);return l.call(i)},e(t,r)});layui.define(["laytpl","form"],function(e){"use strict";var a=layui.$,t=layui.laytpl,i=layui.form,n="transfer",l={config:{},index:layui[n]?layui[n].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,n,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:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},x.prototype.reload=function(e){var t=this;t.config=a.extend({},t.config,e),t.render()},x.prototype.render=function(){var e=this,i=e.config,n=e.elem=a(t(v).render({data:i,index:e.index})),l=i.elem=a(i.elem);l[0]&&(i.data=i.data||[],i.value=i.value||[],e.key=i.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=n.find("."+y),e.layBtn=n.find("."+f+" .layui-btn"),e.layBox.css({width:i.width,height:i.height}),e.layData.css({height:function(){return i.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,i=["
                • ",'',"
                • "].join("");a[t].views.push(i),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){i.render(e,"LAY-transfer-"+this.index)},x.prototype.renderCheckBtn=function(e){var t=this,i=t.config;e=e||{},t.layBox.each(function(n){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(n)[f?"removeClass":"addClass"](o),!e.stopNone){var p=r.children("li:not(."+c+")").length;t.noneView(r,p?"":i.text.none)}}),t.renderForm("checkbox")},x.prototype.noneView=function(e,t){var i=a('

                  '+(t||"")+"

                  ");e.find("."+d)[0]&&e.find("."+d).remove(),t.replace(/\s/g,"")&&e.append(i)},x.prototype.setValue=function(){var e=this,t=e.config,i=[];return e.layBox.eq(1).find("."+y+' input[type="checkbox"]').each(function(){var e=a(this).data("hide");e||i.push(this.value)}),t.value=i,e},x.prototype.parseData=function(e){var t=this,i=t.config,n=[];return layui.each(i.data,function(t,l){l=("function"==typeof i.parseData?i.parseData(l):l)||l,n.push(l=a.extend({},l)),layui.each(i.value,function(e,a){a==l.value&&(l.selected=!0)}),e&&e(l)}),i.data=n,t},x.prototype.getData=function(e){var a=this,t=a.config,i=[];return a.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},x.prototype.events=function(){var e=this,t=e.config;e.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var t=a(this).prev(),i=t[0].checked,n=t.parents("."+s).eq(0).find("."+y);t[0].disabled||("all"===t.attr("lay-type")&&n.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=i)}),e.renderCheckBtn({stopNone:!0}))}),e.layBtn.on("click",function(){var i=a(this),n=i.data("index"),l=e.layBox.eq(n),r=[];if(!i.hasClass(o)){e.layBox.eq(n).each(function(t){var i=a(this),n=i.find("."+y);n.children("li").each(function(){var t=a(this),i=t.find('input[type="checkbox"]'),n=i.data("hide");i[0].checked&&!n&&(i[0].checked=!1,l.siblings("."+s).find("."+y).append(t.clone()),t.remove(),r.push(i[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),n)}}),e.laySearch.find("input").on("keyup",function(){var i=this.value,n=a(this).parents("."+h).eq(0).siblings("."+y),l=n.children("li");l.each(function(){var e=a(this),t=e.find('input[type="checkbox"]'),n=t[0].title.indexOf(i)!==-1;e[n?"removeClass":"addClass"](c),t.data("hide",!n)}),e.renderCheckBtn();var r=l.length===n.children("li."+c).length;e.noneView(n,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(n,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,i){e.reload.call(e,t,i)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)}}},s=function(e){var t=c.config[e];return t||o.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),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",N=".layui-table-fixed-r",A=".layui-table-total",L=".layui-table-page",S=".layui-table-sort",R="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("")},z=['',"","
                  "].join(""),E=['
                  ',"{{# if(d.data.toolbar){ }}",'
                  ','
                  ','
                  ',"
                  ","{{# } }}",'
                  ',"{{# if(d.data.loading){ }}",'
                  ','',"
                  ","{{# } }}","{{# var left, right; }}",'
                  ',_(),"
                  ",'
                  ',z,"
                  ","{{# if(left){ }}",'
                  ','
                  ',_({fixed:!0}),"
                  ",'
                  ',z,"
                  ","
                  ","{{# }; }}","{{# if(right){ }}",'
                  ','
                  ',_({fixed:"right"}),'
                  ',"
                  ",'
                  ',z,"
                  ","
                  ","{{# }; }}","
                  ","{{# if(d.data.totalRow){ }}",'
                  ','','',"
                  ","
                  ","{{# } }}","{{# if(d.data.page){ }}",'
                  ','
                  ',"
                  ","{{# } }}","","
                  "].join(""),j=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:"\u65e0\u6570\u636e"}},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",totalRowName:"totalRow",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=j.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next("."+v),o=e.elem=t(i(E).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(N),e.layTotal=o.find(A),e.layPage=o.find(L),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:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}},d=[];"object"==typeof a.defaultToolbar&&layui.each(a.defaultToolbar,function(e,t){var i="string"==typeof t?r[t]: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,i){var a=this;e=e||{},delete a.haveInit,e.data&&e.data.constructor===Array&&delete a.config.data,a.config=t.extend(i,{},a.config,e),a.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]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+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("\u6570\u636e\u63a5\u53e3\u8bf7\u6c42\u5f02\u5e38\uff1a"+t),i.renderForm(),i.setColsWidth(),"function"==typeof a.error&&a.error(e,t)}})}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,"object"==typeof a.totalRow&&(c[n.totalRowName]=t.extend({},a.totalRow)),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=e[s.response.totalRowName],v=[],m=[],g=[],b=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=[],h=[],p=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,v=s.index+"-"+r.key,m=l[c];if(void 0!==m&&null!==m||(m=""),!r.colGroup){var g=['','
                  '+function(){var n=t.extend(!0,{LAY_INDEX:p},l),o=d.config.checkName;switch(r.type){case"checkbox":return'";case"radio":return n[o]&&(e=a),'';case"numbers":return p}return r.toolbar?i(t(r.toolbar).html()||"").render(n):u(r,m,n)}(),"
                  "].join("");o.push(g),r.fixed&&"right"!==r.fixed&&y.push(g),"right"===r.fixed&&h.push(g)}}),v.push(''+o.join("")+""),m.push(''+y.join("")+""),g.push(''+h.join("")+""))}),c.layBody.scrollTop(0),c.layMain.find("."+p).remove(),c.layMain.find("tbody").html(v.join("")),c.layFixLeft.find("tbody").html(m.join("")),c.layFixRight.find("tbody").html(g.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),0===y.length?(c.renderForm(),c.errorView(s.text.none)):(c.layFixed.removeClass(f),r?b():(b(),c.renderTotal(y,h),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,a){var l=this,n=l.config,o={};if(n.totalRow){layui.each(e,function(e,t){0!==t.length&&l.eachCols(function(e,i){var a=i.field||e,l=t[a];i.totalRow&&(o[a]=(o[a]||0)+(parseFloat(l)||0))})}),l.dataTotal={};var r=[];l.eachCols(function(e,d){var c=d.field||e,s=function(){var e,t=d.totalRowText||"",i=parseFloat(o[c]).toFixed(2),l={};return l[c]=i,e=d.totalRow?u(d,i,l)||t:t,a?a[d.field]||e:e}(),y=['','
                  '+function(){var e=d.totalRow||n.totalRow;return"string"==typeof e?i(e).render(t.extend({TOTAL_NUMS:s},d)):s}(),"
                  "].join("");d.field&&(l.dataTotal[c]=s),r.push(y)}),l.layTotal.find("tbody").html(""+r.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&&(n=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){o.error("Table modules: sort field '"+n+"' not matched")}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=j.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,i=this,a=i.config,o=t("body"),c={},s=i.layHeader.find("th"),h=".layui-table-cell",p=a.elem.attr("lay-filter");i.layTool.on("click","*[lay-event]",function(e){var o=t(this),c=o.attr("lay-event"),s=function(e){var l=t(e.list),n=t('
                    ');n.html(l),a.height&&n.css("max-height",a.height-(i.layTool.outerHeight()||50)),o.find(".layui-table-tool-panel")[0]||o.append(n),i.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(i.tipsIndex),c){case"LAYTABLE_COLS":s({list:function(){var e=[];return i.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 l=t(e.elem),n=this.checked,o=l.data("key"),r=l.data("parentkey");layui.each(a.cols,function(e,t){layui.each(t,function(t,l){if(e+"-"+t===o){var d=l.hide;l.hide=!n,i.elem.find('*[data-key="'+a.index+"-"+o+'"]')[n?"removeClass":"addClass"](f),d!=l.hide&&i.setParentCol(!n,r),i.resize()}})})})}});break;case"LAYTABLE_EXPORT":r.ie?l.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):s({list:function(){return['
                  • \u5bfc\u51fa\u5230 Csv \u6587\u4ef6
                  • ','
                  • \u5bfc\u51fa\u5230 Excel \u6587\u4ef6
                  • '].join("")}(),done:function(e,l){l.on("click",function(){var e=t(this).data("type");d.exportFile.call(i,a.id,null,e)})}});break;case"LAYTABLE_PRINT":var u=window.open("\u6253\u5370\u7a97\u53e3","_blank"),h=[""].join(""),v=t(i.layHeader.html());v.append(i.layMain.find("table").html()),v.append(i.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:a},{}))}),s.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data("unresize")||c.resizeStart||(c.allowResize=i.width()-l<=10,o.css("cursor",c.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);c.resizeStart||o.css("cursor","")}).on("mousedown",function(e){var l=t(this);if(c.allowResize){var n=l.data("key");e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],i.getCssRule(n,function(e){var t=e.style.width||l.outerWidth();c.rule=e,c.ruleWidth=parseFloat(t),c.minWidth=l.data("minwidth")||a.cellMinWidth})}}),F.on("mousemove",function(t){if(c.resizeStart){if(t.preventDefault(),c.rule){var a=c.ruleWidth+t.clientX-c.offset[0];a');return n[0].value=i.data("content")||l.text(),i.find("."+R)[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('
                    ')}};i.layBody.on("click","."+g,function(e){var n=t(this),o=n.parent(),d=o.children(h);i.tipsIndex=l.tips(['
                    ',d.html(),"
                    ",''].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:r.ios||r.android?300:i.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)}),i.layBody.on("click","*[lay-event]",function(){var e=t(this),a=e.parents("tr").eq(0).data("index");layui.event.call(this,y,"tool("+p+")",v.call(this,{event:e.attr("lay-event")})),i.setThisRowChecked(a)}),i.layMain.on("scroll",function(){var e=t(this),a=e.scrollLeft(),n=e.scrollTop();i.layHeader.scrollLeft(a),i.layTotal.scrollLeft(a),i.layFixed.find(k).scrollTop(n),l.close(i.tipsIndex)}),j.on("resize",function(){i.resize()})},function(){F.on("click",function(){F.trigger("table.remove.tool.panel")}),F.on("table.remove.tool.panel",function(){t(".layui-table-tool-panel").remove()})}(),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,"error")}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.getData=function(e){var t=[],i=d.cache[e]||[];return layui.each(i,function(e,i){i.constructor!==Array&&t.push(d.clearCacheKey(i))}),t},d.exportFile=function(e,t,i){var a=this;t=t||d.clearCacheKey(d.cache[e]),i=i||"csv";var l=c.config[e]||{},n={csv:"text/csv",xls:"application/vnd.ms-excel"}[i],s=document.createElement("a");return r.ie?o.error("IE_NOT_SUPPORT_EXPORTS"):(s.href="data:"+n+";charset=utf-8,\ufeff"+encodeURIComponent(function(){var i=[],l=[],n=[];return layui.each(t,function(t,a){var n=[];"object"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||"")}),layui.each(d.clearCacheKey(a),function(e,t){n.push('"'+(t||"")+'"')})):d.eachCols(e,function(e,l){if(l.field&&"normal"==l.type&&!l.hide){var o=a[l.field];void 0!==o&&null!==o||(o=""),0==t&&i.push(l.title||""),n.push('"'+u(l,o,a,"text")+'"')}}),l.push(n.join(","))}),layui.each(a.dataTotal,function(e,t){n.push(t)}),i.join(",")+"\r\n"+l.join("\r\n")+"\r\n"+n.join(",")}()),s.download=(l.title||"table_"+(l.index||""))+"."+i,document.body.appendChild(s),s.click(),void document.body.removeChild(s))},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,i){var a=s(e);if(a){var l=c.that[e];return l.reload(t,i),c.call(l)}},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},t(function(){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):al.length&&(l.value=l.length),parseInt(l.value)!==l.value&&(l.half||(l.value=Math.ceil(l.value)-l.value<.5?Math.ceil(l.value):Math.floor(l.value)));for(var n='
                      ",s=1;s<=l.length;s++){var r='
                    • ";l.half&&parseInt(l.value)!==l.value&&s==Math.ceil(l.value)?n=n+'
                    • ":n+=r}n+="
                    "+(l.text?''+l.value+"\u661f":"")+"";var c=l.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),l.span=e.elemTemp.next("span"),l.setText&&l.setText(l.value),c.html(e.elemTemp),c.addClass("layui-inline"),l.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,l=a.config;l.value=e,a.render()},v.prototype.action=function(){var e=this,l=e.config,i=e.elemTemp,n=i.find("i").width();i.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(l.value=t,l.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(l.value=l.value-.5)}l.text&&i.next("span").text(l.value+"\u661f"),l.choose&&l.choose(l.value),l.setText&&l.setText(l.value)}),v.on("mousemove",function(e){if(i.find("i").each(function(){a(this).addClass(o).removeClass(r)}),i.find("i:lt("+t+")").each(function(){a(this).addClass(u).removeClass(f)}),l.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(s).removeClass(u)}}),v.on("mouseleave",function(){i.find("i").each(function(){a(this).addClass(o).removeClass(r)}),i.find("i:lt("+Math.floor(l.value)+")").each(function(){a(this).addClass(u).removeClass(f)}),l.half&&parseInt(l.value)!==l.value&&i.children("li:eq("+Math.floor(l.value)+")").children("i").addClass(s).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},l.render=function(e){var a=new v(e);return i.call(a)},e(n,l)});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 m=l(e.elem);if(m[0]){var f=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,y=e.end||"\u6ca1\u6709\u66f4\u591a\u4e86",v=e.scrollElem&&e.scrollElem!==document,d="\u52a0\u8f7d\u66f4\u591a",h=l('");m.find(".layui-flow-more")[0]||m.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(y):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?(f.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),!i&&m.width()&&(r=setTimeout(function(){var i=v?e.height():l(window).height(),n=v?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("lay-src")){var f=e.attr("lay-src");layui.img(f,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",f).removeAttr("lay-src"),l[0]&&m(l),i++},function(){t.lazyimg.elem.eq(i);e.removeAttr("lay-src")})}},m=function(e,o){var m=a?(o||n).height():l(window).height(),f=n.scrollTop(),u=f+m;if(t.lazyimg.elem=l(r),e)c(e,m);else for(var s=0;su)break}};if(m(),!o){var f;n.on("scroll",function(){var e=l(this);f&&clearTimeout(f),f=setTimeout(function(){m(null,e)},50)}),o=!0}return m},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("\u8bf7\u6682\u65f6\u7528shift+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||"\u4e0a\u4f20\u5931\u8d25")}})})},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:"\u5e2e\u52a9",area:["600px","380px"],shadeClose:!0,shade:.1,skin:"layui-layer-msg",content:["","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:"\u8d85\u94fe\u63a5",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=["[\u5fae\u7b11]","[\u563b\u563b]","[\u54c8\u54c8]","[\u53ef\u7231]","[\u53ef\u601c]","[\u6316\u9f3b]","[\u5403\u60ca]","[\u5bb3\u7f9e]","[\u6324\u773c]","[\u95ed\u5634]","[\u9119\u89c6]","[\u7231\u4f60]","[\u6cea]","[\u5077\u7b11]","[\u4eb2\u4eb2]","[\u751f\u75c5]","[\u592a\u5f00\u5fc3]","[\u767d\u773c]","[\u53f3\u54fc\u54fc]","[\u5de6\u54fc\u54fc]","[\u5618]","[\u8870]","[\u59d4\u5c48]","[\u5410]","[\u54c8\u6b20]","[\u62b1\u62b1]","[\u6012]","[\u7591\u95ee]","[\u998b\u5634]","[\u62dc\u62dc]","[\u601d\u8003]","[\u6c57]","[\u56f0]","[\u7761]","[\u94b1]","[\u5931\u671b]","[\u9177]","[\u8272]","[\u54fc]","[\u9f13\u638c]","[\u6655]","[\u60b2\u4f24]","[\u6293\u72c2]","[\u9ed1\u7ebf]","[\u9634\u9669]","[\u6012\u9a82]","[\u4e92\u7c89]","[\u5fc3]","[\u4f24\u5fc3]","[\u732a\u5934]","[\u718a\u732b]","[\u5154\u5b50]","[ok]","[\u8036]","[good]","[NO]","[\u8d5e]","[\u6765]","[\u5f31]","[\u8349\u6ce5\u9a6c]","[\u795e\u9a6c]","[\u56e7]","[\u6d6e\u4e91]","[\u7ed9\u529b]","[\u56f4\u89c2]","[\u5a01\u6b66]","[\u5965\u7279\u66fc]","[\u793c\u7269]","[\u949f]","[\u8bdd\u7b52]","[\u8721\u70db]","[\u86cb\u7cd5]"],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:"\u63d2\u5165\u4ee3\u7801",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:''},L=new c;t(n,L)});layui.define("jquery",function(a){"use strict";var e=layui.$;a("code",function(a){var l=[];a=a||{},a.elem=e(a.elem||".layui-code"),a.lang="lang"in a?a.lang:"code",a.elem.each(function(){l.push(this)}),layui.each(l.reverse(),function(l,i){var t=e(i),c=t.html();(t.attr("lay-encode")||a.encode)&&(c=c.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),t.html('
                    1. '+c.replace(/[\r\t\n]+/g,"
                    2. ")+"
                    "),t.find(">.layui-code-h3")[0]||t.prepend('

                    '+(t.attr("lay-title")||a.title||"</>")+''+(t.attr("lay-lang")||a.lang||"")+"

                    ");var n=t.find(">.layui-code-ol");t.addClass("layui-box layui-code-view"),(t.attr("lay-skin")||a.skin)&&t.addClass("layui-code-"+(t.attr("lay-skin")||a.skin)),(n.find("li").length/100|0)>0&&n.css("margin-left",(n.find("li").length/100|0)+"px"),(t.attr("lay-height")||a.height)&&n.css("max-height",t.attr("lay-height")||a.height)})})}).addcss("modules/code.css?v=2","skincodecss"); \ No newline at end of file diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php index 67b4f4a..fb5fad8 100644 --- a/vendor/composer/InstalledVersions.php +++ b/vendor/composer/InstalledVersions.php @@ -26,12 +26,12 @@ private static $installed = array ( array ( 'firebase/php-jwt' => array ( - 'pretty_version' => 'v5.2.0', - 'version' => '5.2.0.0', + 'pretty_version' => 'v5.2.1', + 'version' => '5.2.1.0', 'aliases' => array ( ), - 'reference' => 'feb0e820b8436873675fd3aca04f3728eb2185cb', + 'reference' => 'f42c9110abe98dd6cfe9053c49bc86acc70b2d23', ), 'league/flysystem' => array ( @@ -71,12 +71,12 @@ private static $installed = array ( ), 'phpmailer/phpmailer' => array ( - 'pretty_version' => 'v6.2.0', - 'version' => '6.2.0.0', + 'pretty_version' => 'v6.4.1', + 'version' => '6.4.1.0', 'aliases' => array ( ), - 'reference' => 'e38888a75c070304ca5514197d4847a59a5c853f', + 'reference' => '9256f12d8fb0cd0500f93b19e18c356906cbed3d', ), 'psr/cache' => array ( @@ -89,21 +89,21 @@ private static $installed = array ( ), 'psr/container' => array ( - 'pretty_version' => '1.0.0', - 'version' => '1.0.0.0', + 'pretty_version' => '1.1.1', + 'version' => '1.1.1.0', 'aliases' => array ( ), - 'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f', + 'reference' => '8622567409010282b7aeebe4bb841fe98b58dcaf', ), 'psr/log' => array ( - 'pretty_version' => '1.1.3', - 'version' => '1.1.3.0', + 'pretty_version' => '1.1.4', + 'version' => '1.1.4.0', 'aliases' => array ( ), - 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc', + 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', ), 'psr/simple-cache' => array ( @@ -116,17 +116,17 @@ private static $installed = array ( ), 'symfony/polyfill-mbstring' => array ( - 'pretty_version' => 'v1.22.0', - 'version' => '1.22.0.0', + 'pretty_version' => 'v1.22.1', + 'version' => '1.22.1.0', 'aliases' => array ( ), - 'reference' => 'f377a3dd1fde44d37b9831d68dc8dea3ffd28e13', + 'reference' => '5232de97ee3b75b0360528dae24e73db49566ab1', ), 'symfony/polyfill-php72' => array ( - 'pretty_version' => 'v1.22.0', - 'version' => '1.22.0.0', + 'pretty_version' => 'v1.22.1', + 'version' => '1.22.1.0', 'aliases' => array ( ), @@ -134,8 +134,8 @@ private static $installed = array ( ), 'symfony/polyfill-php80' => array ( - 'pretty_version' => 'v1.22.0', - 'version' => '1.22.0.0', + 'pretty_version' => 'v1.22.1', + 'version' => '1.22.1.0', 'aliases' => array ( ), @@ -143,12 +143,12 @@ private static $installed = array ( ), 'symfony/var-dumper' => array ( - 'pretty_version' => 'v4.4.19', - 'version' => '4.4.19.0', + 'pretty_version' => 'v4.4.22', + 'version' => '4.4.22.0', 'aliases' => array ( ), - 'reference' => 'a1eab2f69906dc83c5ddba4632180260d0ab4f7f', + 'reference' => 'c194bcedde6295f3ec3e9eba1f5d484ea97c41a7', ), 'taoser/taoler' => array ( @@ -170,12 +170,12 @@ private static $installed = array ( ), 'topthink/framework' => array ( - 'pretty_version' => 'v6.0.7', - 'version' => '6.0.7.0', + 'pretty_version' => 'v6.0.8', + 'version' => '6.0.8.0', 'aliases' => array ( ), - 'reference' => 'db8fe22520a9660dd5e4c87e304034ac49e39270', + 'reference' => '4789343672aef06d571d556da369c0e156609bce', ), 'topthink/think-captcha' => array ( @@ -206,12 +206,12 @@ private static $installed = array ( ), 'topthink/think-orm' => array ( - 'pretty_version' => 'v2.0.36', - 'version' => '2.0.36.0', + 'pretty_version' => 'v2.0.40', + 'version' => '2.0.40.0', 'aliases' => array ( ), - 'reference' => 'f48dc09050f25029d41a66bfc9c3c403e4f82024', + 'reference' => '1119d979b850849f3725856460cf108eec1c3eb8', ), 'topthink/think-template' => array ( @@ -240,6 +240,15 @@ private static $installed = array ( ), 'reference' => 'edce0ae2c9551ab65f9e94a222604b0dead3576d', ), + 'wamkj/thinkphp6.0-databackup' => + array ( + 'pretty_version' => 'v1.0', + 'version' => '1.0.0.0', + 'aliases' => + array ( + ), + 'reference' => '28a0e406d827132942723a3c9f69bb20c98e652f', + ), 'zzstudio/think-addons' => array ( 'pretty_version' => '2.0.5', diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index 5c8abdb..c158ae2 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -7,6 +7,7 @@ $baseDir = dirname($vendorDir); return array( '9b552a3cc426e3287cc811caefa3cf53' => $vendorDir . '/topthink/think-helper/src/helper.php', + '35fab96057f1bf5e7aba31a8a6d5fdde' => $vendorDir . '/topthink/think-orm/stubs/load_stubs.php', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 7f438f8..cd4ff01 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -6,6 +6,7 @@ $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( + 'wamkj\\thinkphp\\' => array($vendorDir . '/wamkj/thinkphp6.0-databackup/src'), 'think\\view\\driver\\' => array($vendorDir . '/topthink/think-view/src'), 'think\\trace\\' => array($vendorDir . '/topthink/think-trace/src'), 'think\\captcha\\' => array($vendorDir . '/topthink/think-captcha/src'), diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 85e2522..90bae3d 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -8,6 +8,7 @@ class ComposerStaticInit1b32198725235c8d6500c87262ef30c2 { public static $files = array ( '9b552a3cc426e3287cc811caefa3cf53' => __DIR__ . '/..' . '/topthink/think-helper/src/helper.php', + '35fab96057f1bf5e7aba31a8a6d5fdde' => __DIR__ . '/..' . '/topthink/think-orm/stubs/load_stubs.php', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', @@ -17,6 +18,10 @@ class ComposerStaticInit1b32198725235c8d6500c87262ef30c2 ); public static $prefixLengthsPsr4 = array ( + 'w' => + array ( + 'wamkj\\thinkphp\\' => 15, + ), 't' => array ( 'think\\view\\driver\\' => 18, @@ -62,6 +67,10 @@ class ComposerStaticInit1b32198725235c8d6500c87262ef30c2 ); public static $prefixDirsPsr4 = array ( + 'wamkj\\thinkphp\\' => + array ( + 0 => __DIR__ . '/..' . '/wamkj/thinkphp6.0-databackup/src', + ), 'think\\view\\driver\\' => array ( 0 => __DIR__ . '/..' . '/topthink/think-view/src', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 2a4c8cb..b01a1bc 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -2,17 +2,17 @@ "packages": [ { "name": "firebase/php-jwt", - "version": "v5.2.0", - "version_normalized": "5.2.0.0", + "version": "v5.2.1", + "version_normalized": "5.2.1.0", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb" + "reference": "f42c9110abe98dd6cfe9053c49bc86acc70b2d23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/feb0e820b8436873675fd3aca04f3728eb2185cb", - "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/f42c9110abe98dd6cfe9053c49bc86acc70b2d23", + "reference": "f42c9110abe98dd6cfe9053c49bc86acc70b2d23", "shasum": "", "mirrors": [ { @@ -27,7 +27,7 @@ "require-dev": { "phpunit/phpunit": ">=4.8 <=9" }, - "time": "2020-03-25T18:49:23+00:00", + "time": "2021-02-12T00:02:00+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -59,7 +59,7 @@ ], "support": { "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/master" + "source": "https://github.com/firebase/php-jwt/tree/v5.2.1" }, "install-path": "../firebase/php-jwt" }, @@ -333,17 +333,17 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.2.0", - "version_normalized": "6.2.0.0", + "version": "v6.4.1", + "version_normalized": "6.4.1.0", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "e38888a75c070304ca5514197d4847a59a5c853f" + "reference": "9256f12d8fb0cd0500f93b19e18c356906cbed3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f", - "reference": "e38888a75c070304ca5514197d4847a59a5c853f", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/9256f12d8fb0cd0500f93b19e18c356906cbed3d", + "reference": "9256f12d8fb0cd0500f93b19e18c356906cbed3d", "shasum": "", "mirrors": [ { @@ -367,14 +367,14 @@ "yoast/phpunit-polyfills": "^0.2.0" }, "suggest": { - "ext-mbstring": "Needed to send email in multibyte encoding charset", + "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", "league/oauth2-google": "Needed for Google XOAUTH2 authentication", "psr/log": "For optional PSR-3 debug logging", "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication", "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)" }, - "time": "2020-11-25T15:24:57+00:00", + "time": "2021-04-29T12:25:04+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -406,7 +406,7 @@ "description": "PHPMailer is a full-featured email creation and transfer class for PHP", "support": { "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.2.0" + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.4.1" }, "funding": [ { @@ -473,17 +473,17 @@ }, { "name": "psr/container", - "version": "1.0.0", - "version_normalized": "1.0.0.0", + "version": "1.1.1", + "version_normalized": "1.1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", "shasum": "", "mirrors": [ { @@ -493,15 +493,10 @@ ] }, "require": { - "php": ">=5.3.0" + "php": ">=7.2.0" }, - "time": "2017-02-14T16:28:37+00:00", + "time": "2021-03-05T17:36:06+00:00", "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "installation-source": "dist", "autoload": { "psr-4": { @@ -515,7 +510,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -527,21 +522,25 @@ "container-interop", "psr" ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.1" + }, "install-path": "../psr/container" }, { "name": "psr/log", - "version": "1.1.3", - "version_normalized": "1.1.3.0", + "version": "1.1.4", + "version_normalized": "1.1.4.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "", "mirrors": [ { @@ -553,7 +552,7 @@ "require": { "php": ">=5.3.0" }, - "time": "2020-03-23T09:12:05+00:00", + "time": "2021-05-03T11:20:27+00:00", "type": "library", "extra": { "branch-alias": { @@ -573,7 +572,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for logging libraries", @@ -583,6 +582,9 @@ "psr", "psr-3" ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, "install-path": "../psr/log" }, { @@ -644,17 +646,17 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.22.0", - "version_normalized": "1.22.0.0", + "version": "v1.22.1", + "version_normalized": "1.22.1.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13" + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", - "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1", "shasum": "", "mirrors": [ { @@ -669,7 +671,7 @@ "suggest": { "ext-mbstring": "For best performance" }, - "time": "2021-01-07T16:49:33+00:00", + "time": "2021-01-22T09:19:47+00:00", "type": "library", "extra": { "branch-alias": { @@ -713,7 +715,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1" }, "funding": [ { @@ -733,8 +735,8 @@ }, { "name": "symfony/polyfill-php72", - "version": "v1.22.0", - "version_normalized": "1.22.0.0", + "version": "v1.22.1", + "version_normalized": "1.22.1.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", @@ -798,7 +800,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.22.1" }, "funding": [ { @@ -818,8 +820,8 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.22.0", - "version_normalized": "1.22.0.0", + "version": "v1.22.1", + "version_normalized": "1.22.1.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", @@ -890,7 +892,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" }, "funding": [ { @@ -910,17 +912,17 @@ }, { "name": "symfony/var-dumper", - "version": "v4.4.19", - "version_normalized": "4.4.19.0", + "version": "v4.4.22", + "version_normalized": "4.4.22.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "a1eab2f69906dc83c5ddba4632180260d0ab4f7f" + "reference": "c194bcedde6295f3ec3e9eba1f5d484ea97c41a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/a1eab2f69906dc83c5ddba4632180260d0ab4f7f", - "reference": "a1eab2f69906dc83c5ddba4632180260d0ab4f7f", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c194bcedde6295f3ec3e9eba1f5d484ea97c41a7", + "reference": "c194bcedde6295f3ec3e9eba1f5d484ea97c41a7", "shasum": "", "mirrors": [ { @@ -950,7 +952,7 @@ "ext-intl": "To show region name in time zone dump", "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, - "time": "2021-01-27T09:09:26+00:00", + "time": "2021-04-19T13:36:17+00:00", "bin": [ "Resources/bin/var-dump-server" ], @@ -988,7 +990,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v4.4.19" + "source": "https://github.com/symfony/var-dumper/tree/v4.4.22" }, "funding": [ { @@ -1066,17 +1068,17 @@ }, { "name": "topthink/framework", - "version": "v6.0.7", - "version_normalized": "6.0.7.0", + "version": "v6.0.8", + "version_normalized": "6.0.8.0", "source": { "type": "git", "url": "https://github.com/top-think/framework.git", - "reference": "db8fe22520a9660dd5e4c87e304034ac49e39270" + "reference": "4789343672aef06d571d556da369c0e156609bce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/top-think/framework/zipball/db8fe22520a9660dd5e4c87e304034ac49e39270", - "reference": "db8fe22520a9660dd5e4c87e304034ac49e39270", + "url": "https://api.github.com/repos/top-think/framework/zipball/4789343672aef06d571d556da369c0e156609bce", + "reference": "4789343672aef06d571d556da369c0e156609bce", "shasum": "", "mirrors": [ { @@ -1102,7 +1104,7 @@ "mockery/mockery": "^1.2", "phpunit/phpunit": "^7.0" }, - "time": "2021-01-25T14:48:29+00:00", + "time": "2021-04-27T00:41:08+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -1134,7 +1136,7 @@ ], "support": { "issues": "https://github.com/top-think/framework/issues", - "source": "https://github.com/top-think/framework/tree/v6.0.7" + "source": "https://github.com/top-think/framework/tree/v6.0.8" }, "install-path": "../topthink/framework" }, @@ -1299,17 +1301,17 @@ }, { "name": "topthink/think-orm", - "version": "v2.0.36", - "version_normalized": "2.0.36.0", + "version": "v2.0.40", + "version_normalized": "2.0.40.0", "source": { "type": "git", "url": "https://github.com/top-think/think-orm.git", - "reference": "f48dc09050f25029d41a66bfc9c3c403e4f82024" + "reference": "1119d979b850849f3725856460cf108eec1c3eb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/top-think/think-orm/zipball/f48dc09050f25029d41a66bfc9c3c403e4f82024", - "reference": "f48dc09050f25029d41a66bfc9c3c403e4f82024", + "url": "https://api.github.com/repos/top-think/think-orm/zipball/1119d979b850849f3725856460cf108eec1c3eb8", + "reference": "1119d979b850849f3725856460cf108eec1c3eb8", "shasum": "", "mirrors": [ { @@ -1320,19 +1322,25 @@ }, "require": { "ext-json": "*", + "ext-pdo": "*", "php": ">=7.1.0", "psr/log": "~1.0", "psr/simple-cache": "^1.0", "topthink/think-helper": "^3.1" }, - "time": "2021-01-12T09:08:52+00:00", + "require-dev": { + "phpunit/phpunit": "^7|^8|^9.5" + }, + "time": "2021-04-19T13:29:37+00:00", "type": "library", "installation-source": "dist", "autoload": { "psr-4": { "think\\": "src" }, - "files": [] + "files": [ + "stubs/load_stubs.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1351,7 +1359,7 @@ ], "support": { "issues": "https://github.com/top-think/think-orm/issues", - "source": "https://github.com/top-think/think-orm/tree/v2.0.36" + "source": "https://github.com/top-think/think-orm/tree/v2.0.40" }, "install-path": "../topthink/think-orm" }, @@ -1507,6 +1515,60 @@ "description": "thinkphp template driver", "install-path": "../topthink/think-view" }, + { + "name": "wamkj/thinkphp6.0-databackup", + "version": "v1.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/wamkj/thinkphp6.0-databackup.git", + "reference": "28a0e406d827132942723a3c9f69bb20c98e652f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wamkj/thinkphp6.0-databackup/zipball/28a0e406d827132942723a3c9f69bb20c98e652f", + "reference": "28a0e406d827132942723a3c9f69bb20c98e652f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1.0", + "topthink/framework": "^6.0" + }, + "time": "2020-02-15T13:04:16+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "wamkj\\thinkphp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "wamkj", + "email": "1149183529@qq.com" + } + ], + "description": "thinkphp6.0的数据库自动备份扩展", + "keywords": [ + "think-databackup", + "thinkphp" + ], + "support": { + "issues": "https://github.com/wamkj/thinkphp6.0-databackup/issues", + "source": "https://github.com/wamkj/thinkphp6.0-databackup/tree/v1.0" + }, + "install-path": "../wamkj/thinkphp6.0-databackup" + }, { "name": "zzstudio/think-addons", "version": "2.0.5", diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 12ec343..4d35a4a 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -13,12 +13,12 @@ array ( 'firebase/php-jwt' => array ( - 'pretty_version' => 'v5.2.0', - 'version' => '5.2.0.0', + 'pretty_version' => 'v5.2.1', + 'version' => '5.2.1.0', 'aliases' => array ( ), - 'reference' => 'feb0e820b8436873675fd3aca04f3728eb2185cb', + 'reference' => 'f42c9110abe98dd6cfe9053c49bc86acc70b2d23', ), 'league/flysystem' => array ( @@ -58,12 +58,12 @@ ), 'phpmailer/phpmailer' => array ( - 'pretty_version' => 'v6.2.0', - 'version' => '6.2.0.0', + 'pretty_version' => 'v6.4.1', + 'version' => '6.4.1.0', 'aliases' => array ( ), - 'reference' => 'e38888a75c070304ca5514197d4847a59a5c853f', + 'reference' => '9256f12d8fb0cd0500f93b19e18c356906cbed3d', ), 'psr/cache' => array ( @@ -76,21 +76,21 @@ ), 'psr/container' => array ( - 'pretty_version' => '1.0.0', - 'version' => '1.0.0.0', + 'pretty_version' => '1.1.1', + 'version' => '1.1.1.0', 'aliases' => array ( ), - 'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f', + 'reference' => '8622567409010282b7aeebe4bb841fe98b58dcaf', ), 'psr/log' => array ( - 'pretty_version' => '1.1.3', - 'version' => '1.1.3.0', + 'pretty_version' => '1.1.4', + 'version' => '1.1.4.0', 'aliases' => array ( ), - 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc', + 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', ), 'psr/simple-cache' => array ( @@ -103,17 +103,17 @@ ), 'symfony/polyfill-mbstring' => array ( - 'pretty_version' => 'v1.22.0', - 'version' => '1.22.0.0', + 'pretty_version' => 'v1.22.1', + 'version' => '1.22.1.0', 'aliases' => array ( ), - 'reference' => 'f377a3dd1fde44d37b9831d68dc8dea3ffd28e13', + 'reference' => '5232de97ee3b75b0360528dae24e73db49566ab1', ), 'symfony/polyfill-php72' => array ( - 'pretty_version' => 'v1.22.0', - 'version' => '1.22.0.0', + 'pretty_version' => 'v1.22.1', + 'version' => '1.22.1.0', 'aliases' => array ( ), @@ -121,8 +121,8 @@ ), 'symfony/polyfill-php80' => array ( - 'pretty_version' => 'v1.22.0', - 'version' => '1.22.0.0', + 'pretty_version' => 'v1.22.1', + 'version' => '1.22.1.0', 'aliases' => array ( ), @@ -130,12 +130,12 @@ ), 'symfony/var-dumper' => array ( - 'pretty_version' => 'v4.4.19', - 'version' => '4.4.19.0', + 'pretty_version' => 'v4.4.22', + 'version' => '4.4.22.0', 'aliases' => array ( ), - 'reference' => 'a1eab2f69906dc83c5ddba4632180260d0ab4f7f', + 'reference' => 'c194bcedde6295f3ec3e9eba1f5d484ea97c41a7', ), 'taoser/taoler' => array ( @@ -157,12 +157,12 @@ ), 'topthink/framework' => array ( - 'pretty_version' => 'v6.0.7', - 'version' => '6.0.7.0', + 'pretty_version' => 'v6.0.8', + 'version' => '6.0.8.0', 'aliases' => array ( ), - 'reference' => 'db8fe22520a9660dd5e4c87e304034ac49e39270', + 'reference' => '4789343672aef06d571d556da369c0e156609bce', ), 'topthink/think-captcha' => array ( @@ -193,12 +193,12 @@ ), 'topthink/think-orm' => array ( - 'pretty_version' => 'v2.0.36', - 'version' => '2.0.36.0', + 'pretty_version' => 'v2.0.40', + 'version' => '2.0.40.0', 'aliases' => array ( ), - 'reference' => 'f48dc09050f25029d41a66bfc9c3c403e4f82024', + 'reference' => '1119d979b850849f3725856460cf108eec1c3eb8', ), 'topthink/think-template' => array ( @@ -227,6 +227,15 @@ ), 'reference' => 'edce0ae2c9551ab65f9e94a222604b0dead3576d', ), + 'wamkj/thinkphp6.0-databackup' => + array ( + 'pretty_version' => 'v1.0', + 'version' => '1.0.0.0', + 'aliases' => + array ( + ), + 'reference' => '28a0e406d827132942723a3c9f69bb20c98e652f', + ), 'zzstudio/think-addons' => array ( 'pretty_version' => '2.0.5', diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php index a34835b..dd12eab 100644 --- a/vendor/composer/platform_check.php +++ b/vendor/composer/platform_check.php @@ -15,6 +15,7 @@ extension_loaded('filter') || $missingExtensions[] = 'filter'; extension_loaded('hash') || $missingExtensions[] = 'hash'; extension_loaded('json') || $missingExtensions[] = 'json'; extension_loaded('mbstring') || $missingExtensions[] = 'mbstring'; +extension_loaded('pdo') || $missingExtensions[] = 'pdo'; if ($missingExtensions) { $issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions); diff --git a/vendor/firebase/php-jwt/README.md b/vendor/firebase/php-jwt/README.md index 9c8b545..ba13907 100644 --- a/vendor/firebase/php-jwt/README.md +++ b/vendor/firebase/php-jwt/README.md @@ -115,6 +115,19 @@ echo "Decode:\n" . print_r($decoded_array, true) . "\n"; ?> ``` +Using JWKs +---------- + +```php +// Set of keys. The "keys" key is required. For example, the JSON response to +// this endpoint: https://www.gstatic.com/iap/verify/public_key-jwk +$jwks = ['keys' => []]; + +// JWK::parseKeySet($jwks) returns an associative array of **kid** to private +// key. Pass this as the second parameter to JWT::decode. +JWT::decode($payload, JWK::parseKeySet($jwks), $supportedAlgorithm); +``` + Changelog --------- diff --git a/vendor/firebase/php-jwt/src/JWK.php b/vendor/firebase/php-jwt/src/JWK.php index 1d27391..7632f4a 100644 --- a/vendor/firebase/php-jwt/src/JWK.php +++ b/vendor/firebase/php-jwt/src/JWK.php @@ -3,6 +3,7 @@ namespace Firebase\JWT; use DomainException; +use InvalidArgumentException; use UnexpectedValueException; /** diff --git a/vendor/phpmailer/phpmailer/README.md b/vendor/phpmailer/phpmailer/README.md index d9cbbaa..fa27d2f 100644 --- a/vendor/phpmailer/phpmailer/README.md +++ b/vendor/phpmailer/phpmailer/README.md @@ -1,46 +1,45 @@ ![PHPMailer](https://raw.github.com/PHPMailer/PHPMailer/master/examples/images/phpmailer.png) -# PHPMailer - A full-featured email creation and transfer class for PHP +# PHPMailer – A full-featured email creation and transfer class for PHP -Build status: [![Build Status](https://travis-ci.org/PHPMailer/PHPMailer.svg)](https://travis-ci.org/PHPMailer/PHPMailer) -[![Scrutinizer Quality Score](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/badges/quality-score.png?s=3758e21d279becdf847a557a56a3ed16dfec9d5d)](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/) -[![Code Coverage](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/badges/coverage.png?s=3fe6ca5fe8cd2cdf96285756e42932f7ca256962)](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/) +[![Test status](https://github.com/PHPMailer/PHPMailer/workflows/Tests/badge.svg)](https://github.com/PHPMailer/PHPMailer/actions) [![Latest Stable Version](https://poser.pugx.org/phpmailer/phpmailer/v/stable.svg)](https://packagist.org/packages/phpmailer/phpmailer) [![Total Downloads](https://poser.pugx.org/phpmailer/phpmailer/downloads)](https://packagist.org/packages/phpmailer/phpmailer) [![License](https://poser.pugx.org/phpmailer/phpmailer/license.svg)](https://packagist.org/packages/phpmailer/phpmailer) [![API Docs](https://github.com/phpmailer/phpmailer/workflows/Docs/badge.svg)](https://phpmailer.github.io/PHPMailer/) -[![Latest Stable Version](https://poser.pugx.org/phpmailer/phpmailer/v/stable.svg)](https://packagist.org/packages/phpmailer/phpmailer) [![Total Downloads](https://poser.pugx.org/phpmailer/phpmailer/downloads)](https://packagist.org/packages/phpmailer/phpmailer) [![Latest Unstable Version](https://poser.pugx.org/phpmailer/phpmailer/v/unstable.svg)](https://packagist.org/packages/phpmailer/phpmailer) [![License](https://poser.pugx.org/phpmailer/phpmailer/license.svg)](https://packagist.org/packages/phpmailer/phpmailer) [![API Docs](https://github.com/phpmailer/phpmailer/workflows/Docs/badge.svg)](http://phpmailer.github.io/PHPMailer/) - -## Class Features +## Features - Probably the world's most popular code for sending email from PHP! - Used by many open-source projects: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla! and many more -- Integrated SMTP support - send without a local mail server +- Integrated SMTP support – send without a local mail server - Send emails with multiple To, CC, BCC and Reply-to addresses - Multipart/alternative emails for mail clients that do not read HTML email - Add attachments, including inline - Support for UTF-8 content and 8bit, base64, binary, and quoted-printable encodings -- SMTP authentication with LOGIN, PLAIN, CRAM-MD5, and XOAUTH2 mechanisms over SSL and SMTP+STARTTLS transports +- SMTP authentication with LOGIN, PLAIN, CRAM-MD5, and XOAUTH2 mechanisms over SMTPS and SMTP+STARTTLS transports - Validates email addresses automatically -- Protect against header injection attacks +- Protects against header injection attacks - Error messages in over 50 languages! - DKIM and S/MIME signing support -- Compatible with PHP 5.5 and later +- Compatible with PHP 5.5 and later, including PHP 8.0 - Namespaced to prevent name clashes - Much more! ## Why you might need it -Many PHP developers need to send email from their code. The only PHP function that supports this is [`mail()`](https://www.php.net/manual/en/function.mail.php). However, it does not provide any assistance for making use of popular features such as encryption, authentication, HTML messages, and attachments. +Many PHP developers need to send email from their code. The only PHP function that supports this directly is [`mail()`](https://www.php.net/manual/en/function.mail.php). However, it does not provide any assistance for making use of popular features such as encryption, authentication, HTML messages, and attachments. -Formatting email correctly is surprisingly difficult. There are myriad overlapping RFCs, requiring tight adherence to horribly complicated formatting and encoding rules – the vast majority of code that you'll find online that uses the `mail()` function directly is just plain wrong! -*Please* don't be tempted to do it yourself – if you don't use PHPMailer, there are many other excellent libraries that you should look at before rolling your own. Try [SwiftMailer](https://swiftmailer.symfony.com/), [Zend/Mail](https://zendframework.github.io/zend-mail/), [ZetaComponents](https://github.com/zetacomponents/Mail) etc. +Formatting email correctly is surprisingly difficult. There are myriad overlapping (and conflicting) standards, requiring tight adherence to horribly complicated formatting and encoding rules – the vast majority of code that you'll find online that uses the `mail()` function directly is just plain wrong, if not unsafe! -The PHP `mail()` function usually sends via a local mail server, typically fronted by a `sendmail` binary on Linux, BSD, and macOS platforms, however, Windows usually doesn't include a local mail server; PHPMailer's integrated SMTP implementation allows email sending on Windows platforms without a local mail server. +The PHP `mail()` function usually sends via a local mail server, typically fronted by a `sendmail` binary on Linux, BSD, and macOS platforms, however, Windows usually doesn't include a local mail server; PHPMailer's integrated SMTP client allows email sending on all platforms without needing a local mail server. Be aware though, that the `mail()` function should be avoided when possible; it's both faster and [safer](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html) to use SMTP to localhost. + +*Please* don't be tempted to do it yourself – if you don't use PHPMailer, there are many other excellent libraries that +you should look at before rolling your own. Try [SwiftMailer](https://swiftmailer.symfony.com/) +, [Laminas/Mail](https://docs.laminas.dev/laminas-mail/), [ZetaComponents](https://github.com/zetacomponents/Mail) etc. ## License -This software is distributed under the [LGPL 2.1](http://www.gnu.org/licenses/lgpl-2.1.html) license, along with the [GPL Cooperation Commitment](https://gplcc.github.io/gplcc/). Please read LICENSE for information on the software availability and distribution. +This software is distributed under the [LGPL 2.1](http://www.gnu.org/licenses/lgpl-2.1.html) license, along with the [GPL Cooperation Commitment](https://gplcc.github.io/gplcc/). Please read [LICENSE](https://github.com/PHPMailer/PHPMailer/blob/master/LICENSE) for information on the software availability and distribution. ## Installation & loading PHPMailer is available on [Packagist](https://packagist.org/packages/phpmailer/phpmailer) (using semantic versioning), and installation via [Composer](https://getcomposer.org) is the recommended way to install PHPMailer. Just add this line to your `composer.json` file: ```json -"phpmailer/phpmailer": "~6.1" +"phpmailer/phpmailer": "^6.2" ``` or run @@ -53,7 +52,8 @@ Note that the `vendor` folder and the `vendor/autoload.php` script are generated If you want to use the Gmail XOAUTH2 authentication class, you will also need to add a dependency on the `league/oauth2-client` package in your `composer.json`. -Alternatively, if you're not using Composer, copy the contents of the PHPMailer folder into one of the `include_path` directories specified in your PHP configuration and load each class file manually: +Alternatively, if you're not using Composer, you +can [download PHPMailer as a zip file](https://github.com/PHPMailer/PHPMailer/archive/master.zip), (note that docs and examples are not included in the zip file), then copy the contents of the PHPMailer folder into one of the `include_path` directories specified in your PHP configuration and load each class file manually: ```php SMTPDebug = SMTP::DEBUG_SERVER; // Enable verbose debug output - $mail->isSMTP(); // Send using SMTP - $mail->Host = 'smtp1.example.com'; // Set the SMTP server to send through - $mail->SMTPAuth = true; // Enable SMTP authentication - $mail->Username = 'user@example.com'; // SMTP username - $mail->Password = 'secret'; // SMTP password - $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged - $mail->Port = 587; // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above + $mail->SMTPDebug = SMTP::DEBUG_SERVER; //Enable verbose debug output + $mail->isSMTP(); //Send using SMTP + $mail->Host = 'smtp.example.com'; //Set the SMTP server to send through + $mail->SMTPAuth = true; //Enable SMTP authentication + $mail->Username = 'user@example.com'; //SMTP username + $mail->Password = 'secret'; //SMTP password + $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; //Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged + $mail->Port = 587; //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above //Recipients $mail->setFrom('from@example.com', 'Mailer'); - $mail->addAddress('joe@example.net', 'Joe User'); // Add a recipient - $mail->addAddress('ellen@example.com'); // Name is optional + $mail->addAddress('joe@example.net', 'Joe User'); //Add a recipient + $mail->addAddress('ellen@example.com'); //Name is optional $mail->addReplyTo('info@example.com', 'Information'); $mail->addCC('cc@example.com'); $mail->addBCC('bcc@example.com'); - // Attachments - $mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments - $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name + //Attachments + $mail->addAttachment('/var/tmp/file.tar.gz'); //Add attachments + $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); //Optional name - // Content - $mail->isHTML(true); // Set email format to HTML + //Content + $mail->isHTML(true); //Set email format to HTML $mail->Subject = 'Here is the subject'; $mail->Body = 'This is the HTML message body in bold!'; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; @@ -130,7 +128,7 @@ try { } ``` -You'll find plenty more to play with in the [examples](https://github.com/PHPMailer/PHPMailer/tree/master/examples) folder. +You'll find plenty to play with in the [examples](https://github.com/PHPMailer/PHPMailer/tree/master/examples) folder, which covers many common scenarios including sending through gmail, building contact forms, sending to mailing lists, and more. If you are re-using the instance (e.g. when sending to a mailing list), you may need to clear the recipient list to avoid sending duplicate messages. See [the mailing list example](https://github.com/PHPMailer/PHPMailer/blob/master/examples/mailing_list.phps) for further guidance. @@ -140,43 +138,43 @@ That's it. You should now be ready to use PHPMailer! PHPMailer defaults to English, but in the [language](https://github.com/PHPMailer/PHPMailer/tree/master/language/) folder you'll find many translations for PHPMailer error messages that you may encounter. Their filenames contain [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the translations, for example `fr` for French. To specify a language, you need to tell PHPMailer which one to use, like this: ```php -// To load the French version +//To load the French version $mail->setLanguage('fr', '/optional/path/to/language/directory/'); ``` -We welcome corrections and new languages - if you're looking for corrections to do, run the [PHPMailerLangTest.php](https://github.com/PHPMailer/PHPMailer/tree/master/test/PHPMailerLangTest.php) script in the tests folder and it will show any missing translations. +We welcome corrections and new languages – if you're looking for corrections, run the [PHPMailerLangTest.php](https://github.com/PHPMailer/PHPMailer/tree/master/test/PHPMailerLangTest.php) script in the tests folder and it will show any missing translations. ## Documentation -Start reading at the [GitHub wiki](https://github.com/PHPMailer/PHPMailer/wiki). If you're having trouble, this should be the first place you look as it's the most frequently updated. +Start reading at the [GitHub wiki](https://github.com/PHPMailer/PHPMailer/wiki). If you're having trouble, head for [the troubleshooting guide](https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting) as it's frequently updated. Examples of how to use PHPMailer for common scenarios can be found in the [examples](https://github.com/PHPMailer/PHPMailer/tree/master/examples) folder. If you're looking for a good starting point, we recommend you start with [the Gmail example](https://github.com/PHPMailer/PHPMailer/tree/master/examples/gmail.phps). -Note that in order to reduce PHPMailer's deployed code footprint, the examples are no longer included if you load PHPMailer via Composer or via [GitHub's zip file download](https://github.com/PHPMailer/PHPMailer/archive/master.zip), so you'll need to either clone the git repository or use the above links to get to the examples directly. +To reduce PHPMailer's deployed code footprint, examples are not included if you load PHPMailer via Composer or via [GitHub's zip file download](https://github.com/PHPMailer/PHPMailer/archive/master.zip), so you'll need to either clone the git repository or use the above links to get to the examples directly. -Complete generated API documentation is [available online](http://phpmailer.github.io/PHPMailer/). +Complete generated API documentation is [available online](https://phpmailer.github.io/PHPMailer/). -You can generate complete API-level documentation by running `phpdoc` in the top-level folder, and documentation will appear in the `docs` folder, though you'll need to have [PHPDocumentor](http://www.phpdoc.org) installed. You may find [the unit tests](https://github.com/PHPMailer/PHPMailer/blob/master/test/PHPMailerTest.php) a good source of how to do various operations such as encryption. +You can generate complete API-level documentation by running `phpdoc` in the top-level folder, and documentation will appear in the `docs` folder, though you'll need to have [PHPDocumentor](http://www.phpdoc.org) installed. You may find [the unit tests](https://github.com/PHPMailer/PHPMailer/blob/master/test/PHPMailerTest.php) a good reference for how to do various operations such as encryption. If the documentation doesn't cover what you need, search the [many questions on Stack Overflow](http://stackoverflow.com/questions/tagged/phpmailer), and before you ask a question about "SMTP Error: Could not connect to SMTP host.", [read the troubleshooting guide](https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting). ## Tests -There is a PHPUnit test script in the [test](https://github.com/PHPMailer/PHPMailer/tree/master/test/) folder. PHPMailer uses PHPUnit 4.8 - we would use 5.x but we need to run on PHP 5.5. +[PHPMailer tests](https://github.com/PHPMailer/PHPMailer/tree/master/test/) use PHPUnit 9, with [a polyfill](https://github.com/Yoast/PHPUnit-Polyfills) to let 9-style tests run on older PHPUnit and PHP versions. -Build status: [![Build Status](https://travis-ci.org/PHPMailer/PHPMailer.svg)](https://travis-ci.org/PHPMailer/PHPMailer) +[![Test status](https://github.com/PHPMailer/PHPMailer/workflows/Tests/badge.svg)](https://github.com/PHPMailer/PHPMailer/actions) If this isn't passing, is there something you can do to help? ## Security Please disclose any vulnerabilities found responsibly – report security issues to the maintainers privately. -See [SECURITY](https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY.md) for details on security issues. +See [SECURITY](https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY.md) and [PHPMailer's security advisories on GitHub](https://github.com/PHPMailer/PHPMailer/security). ## Contributing Please submit bug reports, suggestions and pull requests to the [GitHub issue tracker](https://github.com/PHPMailer/PHPMailer/issues). We're particularly interested in fixing edge-cases, expanding test coverage and updating translations. -If you found a mistake in the docs, or want to add something, go ahead and amend the wiki - anyone can edit it. +If you found a mistake in the docs, or want to add something, go ahead and amend the wiki – anyone can edit it. If you have git clones from prior to the move to the PHPMailer GitHub organisation, you'll need to update any remote URLs referencing the old GitHub location with a command like this from within your clone: @@ -187,27 +185,36 @@ git remote set-url upstream https://github.com/PHPMailer/PHPMailer.git Please *don't* use the SourceForge or Google Code projects any more; they are obsolete and no longer maintained. ## Sponsorship -Development time and resources for PHPMailer are provided by [Smartmessages.net](https://info.smartmessages.net/), a powerful email marketing system. +Development time and resources for PHPMailer are provided by [Smartmessages.net](https://info.smartmessages.net/), the world's only privacy-first email marketing system. -Smartmessages email marketing +Smartmessages.net privacy-first email marketing logo -Other contributions are gladly received, whether in beer 🍺, T-shirts 👕, Amazon wishlist raids, or cold, hard cash 💰. If you'd like to donate to say "thank you" to maintainers or contributors, please contact them through individual profile pages via [the contributors page](https://github.com/PHPMailer/PHPMailer/graphs/contributors). +Donations are very welcome, whether in beer 🍺, T-shirts 👕, or cold, hard cash 💰. Sponsorship through GitHub is a simple and convenient way to say "thank you" to PHPMailer's maintainers and contributors – just click the "Sponsor" button [on the project page](https://github.com/PHPMailer/PHPMailer). If your company uses PHPMailer, consider taking part in Tidelift's enterprise support programme. + +## PHPMailer For Enterprise + +Available as part of the Tidelift Subscription. + +The maintainers of PHPMailer and thousands of other packages are working with Tidelift to deliver commercial +support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and +improve code health, while paying the maintainers of the exact packages you +use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-phpmailer-phpmailer?utm_source=packagist-phpmailer-phpmailer&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) ## Changelog See [changelog](changelog.md). ## History - PHPMailer was originally written in 2001 by Brent R. Matzelle as a [SourceForge project](http://sourceforge.net/projects/phpmailer/). -- Marcus Bointon (coolbru on SF) and Andy Prevost (codeworxtech) took over the project in 2004. +- [Marcus Bointon](https://github.com/Synchro) (`coolbru` on SF) and Andy Prevost (`codeworxtech`) took over the project in 2004. - Became an Apache incubator project on Google Code in 2010, managed by Jim Jagielski. -- Marcus created his fork on [GitHub](https://github.com/Synchro/PHPMailer) in 2008. +- Marcus created [his fork on GitHub](https://github.com/Synchro/PHPMailer) in 2008. - Jim and Marcus decide to join forces and use GitHub as the canonical and official repo for PHPMailer in 2013. -- PHPMailer moves to the [PHPMailer organisation](https://github.com/PHPMailer) on GitHub in 2013. +- PHPMailer moves to [the PHPMailer organisation](https://github.com/PHPMailer) on GitHub in 2013. ### What's changed since moving from SourceForge? - Official successor to the SourceForge and Google Code projects. - Test suite. -- Continuous integration with Travis-CI. +- Continuous integration with Github Actions. - Composer support. - Public development. - Additional languages and language strings. diff --git a/vendor/phpmailer/phpmailer/SECURITY.md b/vendor/phpmailer/phpmailer/SECURITY.md index fc3e61c..5a6a8f4 100644 --- a/vendor/phpmailer/phpmailer/SECURITY.md +++ b/vendor/phpmailer/phpmailer/SECURITY.md @@ -1,6 +1,8 @@ # Security notices relating to PHPMailer -Please disclose any vulnerabilities found responsibly - report any security problems found to the maintainers privately. +Please disclose any security issues or vulnerabilities found through [Tidelift's coordinated disclosure system](https://tidelift.com/security) or to the maintainers privately. + +PHPMailer versions between 6.1.8 and 6.4.0 contain a regression of the earlier CVE-2018-19296 object injection vulnerability as a result of [a fix for Windows UNC paths in 6.1.8](https://github.com/PHPMailer/PHPMailer/commit/e2e07a355ee8ff36aba21d0242c5950c56e4c6f9). Recorded as [CVE-2020-36326](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2020-36326). Reported by Fariskhi Vidyan via Tidelift. 6.4.1 fixes this issue, and also enforces stricter checks for URL schemes in local path contexts. PHPMailer versions 6.1.5 and earlier contain an output escaping bug that occurs in `Content-Type` and `Content-Disposition` when filenames passed into `addAttachment` and other methods that accept attachment names contain double quote characters, in contravention of RFC822 3.4.1. No specific vulnerability has been found relating to this, but it could allow file attachments to bypass attachment filters that are based on matching filename extensions. Recorded as [CVE-2020-13625](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2020-13625). Reported by Elar Lang of Clarified Security. diff --git a/vendor/phpmailer/phpmailer/VERSION b/vendor/phpmailer/phpmailer/VERSION index 4ac4fde..306894a 100644 --- a/vendor/phpmailer/phpmailer/VERSION +++ b/vendor/phpmailer/phpmailer/VERSION @@ -1 +1 @@ -6.2.0 \ No newline at end of file +6.4.1 \ No newline at end of file diff --git a/vendor/phpmailer/phpmailer/composer.json b/vendor/phpmailer/phpmailer/composer.json index 7388bd9..58393b2 100644 --- a/vendor/phpmailer/phpmailer/composer.json +++ b/vendor/phpmailer/phpmailer/composer.json @@ -40,7 +40,7 @@ "yoast/phpunit-polyfills": "^0.2.0" }, "suggest": { - "ext-mbstring": "Needed to send email in multibyte encoding charset", + "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", "league/oauth2-google": "Needed for Google XOAUTH2 authentication", "psr/log": "For optional PSR-3 debug logging", @@ -57,5 +57,9 @@ "PHPMailer\\Test\\": "test/" } }, - "license": "LGPL-2.1-only" + "license": "LGPL-2.1-only", + "scripts": { + "check": "./vendor/bin/phpcs", + "test": "./vendor/bin/phpunit" + } } diff --git a/vendor/phpmailer/phpmailer/get_oauth_token.php b/vendor/phpmailer/phpmailer/get_oauth_token.php index 560d364..befdc34 100644 --- a/vendor/phpmailer/phpmailer/get_oauth_token.php +++ b/vendor/phpmailer/phpmailer/get_oauth_token.php @@ -38,20 +38,20 @@ namespace PHPMailer\PHPMailer; * Plenty to choose from here: * @see http://oauth2-client.thephpleague.com/providers/thirdparty/ */ -// @see https://github.com/thephpleague/oauth2-google +//@see https://github.com/thephpleague/oauth2-google use League\OAuth2\Client\Provider\Google; -// @see https://packagist.org/packages/hayageek/oauth2-yahoo +//@see https://packagist.org/packages/hayageek/oauth2-yahoo use Hayageek\OAuth2\Client\Provider\Yahoo; -// @see https://github.com/stevenmaguire/oauth2-microsoft +//@see https://github.com/stevenmaguire/oauth2-microsoft use Stevenmaguire\OAuth2\Client\Provider\Microsoft; if (!isset($_GET['code']) && !isset($_GET['provider'])) { ?> -Select Provider:
                    -Google
                    -Yahoo
                    -Microsoft/Outlook/Hotmail/Live/Office365
                    +Select Provider:
                    +Google
                    +Yahoo
                    +Microsoft/Outlook/Hotmail/Live/Office365
                    getAuthorizationUrl($options); $_SESSION['oauth2state'] = $provider->getState(); header('Location: ' . $authUrl); exit; -// Check given state against previously stored one to mitigate CSRF attack + //Check given state against previously stored one to mitigate CSRF attack } elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) { unset($_SESSION['oauth2state']); unset($_SESSION['provider']); exit('Invalid state'); } else { unset($_SESSION['provider']); - // Try to get an access token (using the authorization code grant) + //Try to get an access token (using the authorization code grant) $token = $provider->getAccessToken( 'authorization_code', [ 'code' => $_GET['code'] ] ); - // Use this to interact with an API on the users behalf - // Use this to get a new access token if the old one expires + //Use this to interact with an API on the users behalf + //Use this to get a new access token if the old one expires echo 'Refresh Token: ', $token->getRefreshToken(); } diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php index 55bdd9c..e770a1a 100644 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php +++ b/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php @@ -16,6 +16,8 @@ $PHPMAILER_LANG['file_open'] = 'Chyba souboru: Nelze otevřít soubor $PHPMAILER_LANG['from_failed'] = 'Následující adresa odesílatele je nesprávná: '; $PHPMAILER_LANG['instantiate'] = 'Nelze vytvořit instanci emailové funkce.'; $PHPMAILER_LANG['invalid_address'] = 'Neplatná adresa: '; +$PHPMAILER_LANG['invalid_hostentry'] = 'Záznam hostitele je nesprávný: '; +$PHPMAILER_LANG['invalid_host'] = 'Hostitel je nesprávný: '; $PHPMAILER_LANG['mailer_not_supported'] = ' mailer není podporován.'; $PHPMAILER_LANG['provide_address'] = 'Musíte zadat alespoň jednu emailovou adresu příjemce.'; $PHPMAILER_LANG['recipients_failed'] = 'Chyba SMTP: Následující adresy příjemců nejsou správně: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php index a1cfb28..028f5bc 100644 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php +++ b/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php @@ -18,6 +18,8 @@ $PHPMAILER_LANG['file_open'] = 'File Error: Súbor sa otvoriť pre č $PHPMAILER_LANG['from_failed'] = 'Následujúca adresa From je nesprávna: '; $PHPMAILER_LANG['instantiate'] = 'Nedá sa vytvoriť inštancia emailovej funkcie.'; $PHPMAILER_LANG['invalid_address'] = 'Neodoslané, emailová adresa je nesprávna: '; +$PHPMAILER_LANG['invalid_hostentry'] = 'Záznam hostiteľa je nesprávny: '; +$PHPMAILER_LANG['invalid_host'] = 'Hostiteľ je nesprávny: '; $PHPMAILER_LANG['mailer_not_supported'] = ' emailový klient nieje podporovaný.'; $PHPMAILER_LANG['provide_address'] = 'Musíte zadať aspoň jednu emailovú adresu príjemcu.'; $PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Adresy príjemcov niesu správne '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php new file mode 100644 index 0000000..6213832 --- /dev/null +++ b/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr_latn.php @@ -0,0 +1,28 @@ + + * @author Miloš Milanović + */ + +$PHPMAILER_LANG['authenticate'] = 'SMTP greška: autentifikacija nije uspela.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP greška: povezivanje sa SMTP serverom nije uspelo.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP greška: podaci nisu prihvaćeni.'; +$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.'; +$PHPMAILER_LANG['encoding'] = 'Nepoznato kodiranje: '; +$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: '; +$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: '; +$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: '; +$PHPMAILER_LANG['from_failed'] = 'SMTP greška: slanje sa sledećih adresa nije uspelo: '; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP greška: slanje na sledeće adrese nije uspelo: '; +$PHPMAILER_LANG['instantiate'] = 'Nije moguće pokrenuti mail funkciju.'; +$PHPMAILER_LANG['invalid_address'] = 'Poruka nije poslata. Neispravna adresa: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' majler nije podržan.'; +$PHPMAILER_LANG['provide_address'] = 'Definišite bar jednu adresu primaoca.'; +$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Povezivanje sa SMTP serverom nije uspelo.'; +$PHPMAILER_LANG['smtp_error'] = 'Greška SMTP servera: '; +$PHPMAILER_LANG['variable_set'] = 'Nije moguće zadati niti resetovati promenljivu: '; +$PHPMAILER_LANG['extension_missing'] = 'Nedostaje proširenje: '; diff --git a/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php b/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php index 9fa60cf..3dea055 100644 --- a/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php +++ b/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php @@ -16,11 +16,11 @@ $PHPMAILER_LANG['file_access'] = 'Немає доступу до фай $PHPMAILER_LANG['file_open'] = 'Помилка файлової системи: не вдається відкрити файл: '; $PHPMAILER_LANG['from_failed'] = 'Невірна адреса відправника: '; $PHPMAILER_LANG['instantiate'] = 'Неможливо запустити функцію mail().'; -$PHPMAILER_LANG['provide_address'] = 'Будь-ласка, введіть хоча б одну email-адресу отримувача.'; +$PHPMAILER_LANG['provide_address'] = 'Будь ласка, введіть хоча б одну email-адресу отримувача.'; $PHPMAILER_LANG['mailer_not_supported'] = ' - поштовий сервер не підтримується.'; $PHPMAILER_LANG['recipients_failed'] = 'Помилка SMTP: не вдалося відправлення для таких отримувачів: '; $PHPMAILER_LANG['empty_message'] = 'Пусте повідомлення'; -$PHPMAILER_LANG['invalid_address'] = 'Не відправлено через невірний формат email-адреси: '; +$PHPMAILER_LANG['invalid_address'] = 'Не відправлено через неправильний формат email-адреси: '; $PHPMAILER_LANG['signing'] = 'Помилка підпису: '; $PHPMAILER_LANG['smtp_connect_failed'] = 'Помилка з\'єднання з SMTP-сервером'; $PHPMAILER_LANG['smtp_error'] = 'Помилка SMTP-сервера: '; diff --git a/vendor/phpmailer/phpmailer/phpunit.xml.dist b/vendor/phpmailer/phpmailer/phpunit.xml.dist new file mode 100644 index 0000000..c68df96 --- /dev/null +++ b/vendor/phpmailer/phpmailer/phpunit.xml.dist @@ -0,0 +1,35 @@ + + + + + ./test/ + + + + + + + + languages + pop3 + + + + + ./src + + + + + + + + diff --git a/vendor/phpmailer/phpmailer/src/OAuth.php b/vendor/phpmailer/phpmailer/src/OAuth.php index 07fde4c..c93d0be 100644 --- a/vendor/phpmailer/phpmailer/src/OAuth.php +++ b/vendor/phpmailer/phpmailer/src/OAuth.php @@ -123,7 +123,7 @@ class OAuth */ public function getOauth64() { - // Get a new token if it's not available or has expired + //Get a new token if it's not available or has expired if (null === $this->oauthToken || $this->oauthToken->hasExpired()) { $this->oauthToken = $this->getToken(); } diff --git a/vendor/phpmailer/phpmailer/src/PHPMailer.php b/vendor/phpmailer/phpmailer/src/PHPMailer.php index c8fc1a8..2d16116 100644 --- a/vendor/phpmailer/phpmailer/src/PHPMailer.php +++ b/vendor/phpmailer/phpmailer/src/PHPMailer.php @@ -748,7 +748,7 @@ class PHPMailer * * @var string */ - const VERSION = '6.2.0'; + const VERSION = '6.4.1'; /** * Error severity: message only, continue processing. @@ -862,18 +862,25 @@ class PHPMailer $subject = $this->encodeHeader($this->secureHeader($subject)); } //Calling mail() with null params breaks + $this->edebug('Sending with mail()'); + $this->edebug('Sendmail path: ' . ini_get('sendmail_path')); + $this->edebug("Envelope sender: {$this->Sender}"); + $this->edebug("To: {$to}"); + $this->edebug("Subject: {$subject}"); + $this->edebug("Headers: {$header}"); if (!$this->UseSendmailOptions || null === $params) { $result = @mail($to, $subject, $body, $header); } else { + $this->edebug("Additional params: {$params}"); $result = @mail($to, $subject, $body, $header, $params); } - + $this->edebug('Result: ' . ($result ? 'true' : 'false')); return $result; } /** - * Output debugging info via user-defined method. - * Only generates output if SMTP debug output is enabled (@see SMTP::$do_debug). + * Output debugging info via a user-defined method. + * Only generates output if debug output is enabled. * * @see PHPMailer::$Debugoutput * @see PHPMailer::$SMTPDebug @@ -1070,7 +1077,7 @@ class PHPMailer $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim $pos = strrpos($address, '@'); if (false === $pos) { - // At-sign is missing. + //At-sign is missing. $error_message = sprintf( '%s (%s): %s', $this->lang('invalid_address'), @@ -1086,7 +1093,7 @@ class PHPMailer return false; } $params = [$kind, $address, $name]; - // Enqueue addresses with IDN until we know the PHPMailer::$CharSet. + //Enqueue addresses with IDN until we know the PHPMailer::$CharSet. if (static::idnSupported() && $this->has8bitChars(substr($address, ++$pos))) { if ('Reply-To' !== $kind) { if (!array_key_exists($address, $this->RecipientsQueue)) { @@ -1103,7 +1110,7 @@ class PHPMailer return false; } - // Immediately add standard addresses without IDN. + //Immediately add standard addresses without IDN. return call_user_func_array([$this, 'addAnAddress'], $params); } @@ -1191,6 +1198,15 @@ class PHPMailer $address->mailbox . '@' . $address->host ) ) { + //Decode the name part if it's present and encoded + if ( + property_exists($address, 'personal') && + extension_loaded('mbstring') && + preg_match('/^=\?.*\?=$/', $address->personal) + ) { + $address->personal = mb_decode_mimeheader($address->personal); + } + $addresses[] = [ 'name' => (property_exists($address, 'personal') ? $address->personal : ''), 'address' => $address->mailbox . '@' . $address->host, @@ -1214,9 +1230,15 @@ class PHPMailer } else { list($name, $email) = explode('<', $address); $email = trim(str_replace('>', '', $email)); + $name = trim($name); if (static::validateAddress($email)) { + //If this name is encoded, decode it + if (preg_match('/^=\?.*\?=$/', $name)) { + $name = mb_decode_mimeheader($name); + } $addresses[] = [ - 'name' => trim(str_replace(['"', "'"], '', $name)), + //Remove any surrounding quotes and spaces from the name + 'name' => trim($name, '\'" '), 'address' => $email, ]; } @@ -1242,7 +1264,7 @@ class PHPMailer { $address = trim($address); $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim - // Don't validate now addresses with IDN. Will be done in send(). + //Don't validate now addresses with IDN. Will be done in send(). $pos = strrpos($address, '@'); if ( (false === $pos) @@ -1395,7 +1417,7 @@ class PHPMailer */ public function punyencodeAddress($address) { - // Verify we have required functions, CharSet, and at-sign. + //Verify we have required functions, CharSet, and at-sign. $pos = strrpos($address, '@'); if ( !empty($this->CharSet) && @@ -1403,16 +1425,20 @@ class PHPMailer static::idnSupported() ) { $domain = substr($address, ++$pos); - // Verify CharSet string is a valid one, and domain properly encoded in this CharSet. + //Verify CharSet string is a valid one, and domain properly encoded in this CharSet. if ($this->has8bitChars($domain) && @mb_check_encoding($domain, $this->CharSet)) { - $domain = mb_convert_encoding($domain, 'UTF-8', $this->CharSet); + //Convert the domain from whatever charset it's in to UTF-8 + $domain = mb_convert_encoding($domain, self::CHARSET_UTF8, $this->CharSet); //Ignore IDE complaints about this line - method signature changed in PHP 5.4 $errorcode = 0; if (defined('INTL_IDNA_VARIANT_UTS46')) { - $punycode = idn_to_ascii($domain, $errorcode, INTL_IDNA_VARIANT_UTS46); + //Use the current punycode standard (appeared in PHP 7.2) + $punycode = idn_to_ascii($domain, $errorcode, \INTL_IDNA_VARIANT_UTS46); } elseif (defined('INTL_IDNA_VARIANT_2003')) { - $punycode = idn_to_ascii($domain, $errorcode, INTL_IDNA_VARIANT_2003); + //Fall back to this old, deprecated/removed encoding + $punycode = idn_to_ascii($domain, $errorcode, \INTL_IDNA_VARIANT_2003); } else { + //Fall back to a default we don't know about $punycode = idn_to_ascii($domain, $errorcode); } if (false !== $punycode) { @@ -1462,7 +1488,7 @@ class PHPMailer { if ( 'smtp' === $this->Mailer - || ('mail' === $this->Mailer && (PHP_VERSION_ID >= 80000 || stripos(PHP_OS, 'WIN') === 0)) + || ('mail' === $this->Mailer && (\PHP_VERSION_ID >= 80000 || stripos(PHP_OS, 'WIN') === 0)) ) { //SMTP mandates RFC-compliant line endings //and it's also used with mail() on Windows @@ -1474,8 +1500,8 @@ class PHPMailer //Check for buggy PHP versions that add a header with an incorrect line break if ( 'mail' === $this->Mailer - && ((PHP_VERSION_ID >= 70000 && PHP_VERSION_ID < 70017) - || (PHP_VERSION_ID >= 70100 && PHP_VERSION_ID < 70103)) + && ((\PHP_VERSION_ID >= 70000 && \PHP_VERSION_ID < 70017) + || (\PHP_VERSION_ID >= 70100 && \PHP_VERSION_ID < 70103)) && ini_get('mail.add_x_header') === '1' && stripos(PHP_OS, 'WIN') === 0 ) { @@ -1488,10 +1514,10 @@ class PHPMailer } try { - $this->error_count = 0; // Reset errors + $this->error_count = 0; //Reset errors $this->mailHeader = ''; - // Dequeue recipient and Reply-To addresses with IDN + //Dequeue recipient and Reply-To addresses with IDN foreach (array_merge($this->RecipientsQueue, $this->ReplyToQueue) as $params) { $params[1] = $this->punyencodeAddress($params[1]); call_user_func_array([$this, 'addAnAddress'], $params); @@ -1500,7 +1526,7 @@ class PHPMailer throw new Exception($this->lang('provide_address'), self::STOP_CRITICAL); } - // Validate From, Sender, and ConfirmReadingTo addresses + //Validate From, Sender, and ConfirmReadingTo addresses foreach (['From', 'Sender', 'ConfirmReadingTo'] as $address_kind) { $this->$address_kind = trim($this->$address_kind); if (empty($this->$address_kind)) { @@ -1524,29 +1550,29 @@ class PHPMailer } } - // Set whether the message is multipart/alternative + //Set whether the message is multipart/alternative if ($this->alternativeExists()) { $this->ContentType = static::CONTENT_TYPE_MULTIPART_ALTERNATIVE; } $this->setMessageType(); - // Refuse to send an empty message unless we are specifically allowing it + //Refuse to send an empty message unless we are specifically allowing it if (!$this->AllowEmpty && empty($this->Body)) { throw new Exception($this->lang('empty_message'), self::STOP_CRITICAL); } //Trim subject consistently $this->Subject = trim($this->Subject); - // Create body before headers in case body makes changes to headers (e.g. altering transfer encoding) + //Create body before headers in case body makes changes to headers (e.g. altering transfer encoding) $this->MIMEHeader = ''; $this->MIMEBody = $this->createBody(); - // createBody may have added some headers, so retain them + //createBody may have added some headers, so retain them $tempheaders = $this->MIMEHeader; $this->MIMEHeader = $this->createHeader(); $this->MIMEHeader .= $tempheaders; - // To capture the complete message when using mail(), create - // an extra header list which createHeader() doesn't fold in + //To capture the complete message when using mail(), create + //an extra header list which createHeader() doesn't fold in if ('mail' === $this->Mailer) { if (count($this->to) > 0) { $this->mailHeader .= $this->addrAppend('To', $this->to); @@ -1559,7 +1585,7 @@ class PHPMailer ); } - // Sign with DKIM if enabled + //Sign with DKIM if enabled if ( !empty($this->DKIM_domain) && !empty($this->DKIM_selector) @@ -1600,7 +1626,7 @@ class PHPMailer public function postSend() { try { - // Choose the mailer and send through it + //Choose the mailer and send through it switch ($this->Mailer) { case 'sendmail': case 'qmail': @@ -1645,22 +1671,44 @@ class PHPMailer */ protected function sendmailSend($header, $body) { + if ($this->Mailer === 'qmail') { + $this->edebug('Sending with qmail'); + } else { + $this->edebug('Sending with sendmail'); + } $header = static::stripTrailingWSP($header) . static::$LE . static::$LE; - - // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. - if (!empty($this->Sender) && self::isShellSafe($this->Sender)) { - if ('qmail' === $this->Mailer) { + //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver + //A space after `-f` is optional, but there is a long history of its presence + //causing problems, so we don't use one + //Exim docs: http://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_exim_command_line.html + //Sendmail docs: http://www.sendmail.org/~ca/email/man/sendmail.html + //Qmail docs: http://www.qmail.org/man/man8/qmail-inject.html + //Example problem: https://www.drupal.org/node/1057954 + if (empty($this->Sender) && !empty(ini_get('sendmail_from'))) { + //PHP config has a sender address we can use + $this->Sender = ini_get('sendmail_from'); + } + //CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (!empty($this->Sender) && static::validateAddress($this->Sender) && self::isShellSafe($this->Sender)) { + if ($this->Mailer === 'qmail') { $sendmailFmt = '%s -f%s'; } else { $sendmailFmt = '%s -oi -f%s -t'; } - } elseif ('qmail' === $this->Mailer) { - $sendmailFmt = '%s'; } else { + //allow sendmail to choose a default envelope sender. It may + //seem preferable to force it to use the From header as with + //SMTP, but that introduces new problems (see + //), and + //it has historically worked this way. $sendmailFmt = '%s -oi -t'; } $sendmail = sprintf($sendmailFmt, escapeshellcmd($this->Sendmail), $this->Sender); + $this->edebug('Sendmail path: ' . $this->Sendmail); + $this->edebug('Sendmail command: ' . $sendmail); + $this->edebug('Envelope sender: ' . $this->Sender); + $this->edebug("Headers: {$header}"); if ($this->SingleTo) { foreach ($this->SingleToArray as $toAddr) { @@ -1668,13 +1716,15 @@ class PHPMailer if (!$mail) { throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); } + $this->edebug("To: {$toAddr}"); fwrite($mail, 'To: ' . $toAddr . "\n"); fwrite($mail, $header); fwrite($mail, $body); $result = pclose($mail); + $addrinfo = static::parseAddresses($toAddr); $this->doCallback( ($result === 0), - [$toAddr], + [[$addrinfo['address'], $addrinfo['name']]], $this->cc, $this->bcc, $this->Subject, @@ -1682,6 +1732,7 @@ class PHPMailer $this->From, [] ); + $this->edebug("Result: " . ($result === 0 ? 'true' : 'false')); if (0 !== $result) { throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); } @@ -1704,6 +1755,7 @@ class PHPMailer $this->From, [] ); + $this->edebug("Result: " . ($result === 0 ? 'true' : 'false')); if (0 !== $result) { throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); } @@ -1724,7 +1776,7 @@ class PHPMailer */ protected static function isShellSafe($string) { - // Future-proof + //Future-proof if ( escapeshellcmd($string) !== $string || !in_array(escapeshellarg($string), ["'$string'", "\"$string\""]) @@ -1737,9 +1789,9 @@ class PHPMailer for ($i = 0; $i < $length; ++$i) { $c = $string[$i]; - // All other characters have a special meaning in at least one common shell, including = and +. - // Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here. - // Note that this does permit non-Latin alphanumeric characters based on the current locale. + //All other characters have a special meaning in at least one common shell, including = and +. + //Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here. + //Note that this does permit non-Latin alphanumeric characters based on the current locale. if (!ctype_alnum($c) && strpos('@_-.', $c) === false) { return false; } @@ -1759,7 +1811,8 @@ class PHPMailer */ protected static function isPermittedPath($path) { - return !preg_match('#^[a-z]+://#i', $path); + //Matches scheme definition from https://tools.ietf.org/html/rfc3986#section-3.1 + return !preg_match('#^[a-z][a-z\d+.-]*://#i', $path); } /** @@ -1771,12 +1824,15 @@ class PHPMailer */ protected static function fileIsAccessible($path) { + if (!static::isPermittedPath($path)) { + return false; + } $readable = file_exists($path); //If not a UNC path (expected to start with \\), check read permission, see #2069 if (strpos($path, '\\\\') !== 0) { $readable = $readable && is_readable($path); } - return static::isPermittedPath($path) && $readable; + return $readable; } /** @@ -1809,11 +1865,15 @@ class PHPMailer //Sendmail docs: http://www.sendmail.org/~ca/email/man/sendmail.html //Qmail docs: http://www.qmail.org/man/man8/qmail-inject.html //Example problem: https://www.drupal.org/node/1057954 - // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. - if (!empty($this->Sender) && static::validateAddress($this->Sender) && self::isShellSafe($this->Sender)) { - $params = sprintf('-f%s', $this->Sender); + //CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (empty($this->Sender) && !empty(ini_get('sendmail_from'))) { + //PHP config has a sender address we can use + $this->Sender = ini_get('sendmail_from'); } if (!empty($this->Sender) && static::validateAddress($this->Sender)) { + if (self::isShellSafe($this->Sender)) { + $params = sprintf('-f%s', $this->Sender); + } $old_from = ini_get('sendmail_from'); ini_set('sendmail_from', $this->Sender); } @@ -1821,7 +1881,17 @@ class PHPMailer if ($this->SingleTo && count($toArr) > 1) { foreach ($toArr as $toAddr) { $result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params); - $this->doCallback($result, [$toAddr], $this->cc, $this->bcc, $this->Subject, $body, $this->From, []); + $addrinfo = static::parseAddresses($toAddr); + $this->doCallback( + $result, + [[$addrinfo['address'], $addrinfo['name']]], + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From, + [] + ); } } else { $result = $this->mailPassthru($to, $this->Subject, $body, $header, $params); @@ -1899,7 +1969,7 @@ class PHPMailer } $callbacks = []; - // Attempt to send to all recipients + //Attempt to send to all recipients foreach ([$this->to, $this->cc, $this->bcc] as $togroup) { foreach ($togroup as $to) { if (!$this->smtp->recipient($to[0], $this->dsn)) { @@ -1910,11 +1980,11 @@ class PHPMailer $isSent = true; } - $callbacks[] = ['issent' => $isSent, 'to' => $to[0]]; + $callbacks[] = ['issent' => $isSent, 'to' => $to[0], 'name' => $to[1]]; } } - // Only send the DATA command if we have viable recipients + //Only send the DATA command if we have viable recipients if ((count($this->all_recipients) > count($bad_rcpt)) && !$this->smtp->data($header . $body)) { throw new Exception($this->lang('data_not_accepted'), self::STOP_CRITICAL); } @@ -1931,7 +2001,7 @@ class PHPMailer foreach ($callbacks as $cb) { $this->doCallback( $cb['issent'], - [$cb['to']], + [[$cb['to'], $cb['name']]], [], [], $this->Subject, @@ -1976,7 +2046,7 @@ class PHPMailer $options = $this->SMTPOptions; } - // Already connected? + //Already connected? if ($this->smtp->connected()) { return true; } @@ -1998,14 +2068,14 @@ class PHPMailer ) ) { $this->edebug($this->lang('invalid_hostentry') . ' ' . trim($hostentry)); - // Not a valid host entry + //Not a valid host entry continue; } - // $hostinfo[1]: optional ssl or tls prefix - // $hostinfo[2]: the hostname - // $hostinfo[3]: optional port number - // The host string prefix can temporarily override the current setting for SMTPSecure - // If it's not specified, the default value is used + //$hostinfo[1]: optional ssl or tls prefix + //$hostinfo[2]: the hostname + //$hostinfo[3]: optional port number + //The host string prefix can temporarily override the current setting for SMTPSecure + //If it's not specified, the default value is used //Check the host name is a valid name or IP address before trying to use it if (!static::isValidHost($hostinfo[2])) { @@ -2017,11 +2087,11 @@ class PHPMailer $tls = (static::ENCRYPTION_STARTTLS === $this->SMTPSecure); if ('ssl' === $hostinfo[1] || ('' === $hostinfo[1] && static::ENCRYPTION_SMTPS === $this->SMTPSecure)) { $prefix = 'ssl://'; - $tls = false; // Can't have SSL and TLS at the same time + $tls = false; //Can't have SSL and TLS at the same time $secure = static::ENCRYPTION_SMTPS; } elseif ('tls' === $hostinfo[1]) { $tls = true; - // tls doesn't use a prefix + //TLS doesn't use a prefix $secure = static::ENCRYPTION_STARTTLS; } //Do we need the OpenSSL extension? @@ -2051,10 +2121,10 @@ class PHPMailer } $this->smtp->hello($hello); //Automatically enable TLS encryption if: - // * it's not disabled - // * we have openssl extension - // * we are not already using SSL - // * the server offers STARTTLS + //* it's not disabled + //* we have openssl extension + //* we are not already using SSL + //* the server offers STARTTLS if ($this->SMTPAutoTLS && $sslext && 'ssl' !== $secure && $this->smtp->getServerExt('STARTTLS')) { $tls = true; } @@ -2062,7 +2132,7 @@ class PHPMailer if (!$this->smtp->startTLS()) { throw new Exception($this->lang('connect_host')); } - // We must resend EHLO after TLS negotiation + //We must resend EHLO after TLS negotiation $this->smtp->hello($hello); } if ( @@ -2080,14 +2150,14 @@ class PHPMailer } catch (Exception $exc) { $lastexception = $exc; $this->edebug($exc->getMessage()); - // We must have connected, but then failed TLS or Auth, so close connection nicely + //We must have connected, but then failed TLS or Auth, so close connection nicely $this->smtp->quit(); } } } - // If we get here, all connection attempts have failed, so close connection hard + //If we get here, all connection attempts have failed, so close connection hard $this->smtp->close(); - // As we've caught all exceptions, just report whatever the last one was + //As we've caught all exceptions, just report whatever the last one was if ($this->exceptions && null !== $lastexception) { throw $lastexception; } @@ -2118,7 +2188,7 @@ class PHPMailer */ public function setLanguage($langcode = 'en', $lang_path = '') { - // Backwards compatibility for renamed language codes + //Backwards compatibility for renamed language codes $renamed_langcodes = [ 'br' => 'pt_br', 'cz' => 'cs', @@ -2134,7 +2204,7 @@ class PHPMailer $langcode = $renamed_langcodes[$langcode]; } - // Define full set of translatable strings in English + //Define full set of translatable strings in English $PHPMAILER_LANG = [ 'authenticate' => 'SMTP Error: Could not authenticate.', 'connect_host' => 'SMTP Error: Could not connect to SMTP host.', @@ -2159,7 +2229,7 @@ class PHPMailer 'extension_missing' => 'Extension missing: ', ]; if (empty($lang_path)) { - // Calculate an absolute path so it can work if CWD is not here + //Calculate an absolute path so it can work if CWD is not here $lang_path = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'language' . DIRECTORY_SEPARATOR; } //Validate $langcode @@ -2168,20 +2238,20 @@ class PHPMailer } $foundlang = true; $lang_file = $lang_path . 'phpmailer.lang-' . $langcode . '.php'; - // There is no English translation file + //There is no English translation file if ('en' !== $langcode) { - // Make sure language file path is readable + //Make sure language file path is readable if (!static::fileIsAccessible($lang_file)) { $foundlang = false; } else { - // Overwrite language-specific strings. - // This way we'll never have missing translation keys. + //Overwrite language-specific strings. + //This way we'll never have missing translation keys. $foundlang = include $lang_file; } } $this->language = $PHPMAILER_LANG; - return (bool) $foundlang; // Returns false if language not found + return (bool) $foundlang; //Returns false if language not found } /** @@ -2225,7 +2295,7 @@ class PHPMailer */ public function addrFormat($addr) { - if (empty($addr[1])) { // No name provided + if (empty($addr[1])) { //No name provided return $this->secureHeader($addr[0]); } @@ -2252,8 +2322,8 @@ class PHPMailer } else { $soft_break = static::$LE; } - // If utf-8 encoding is used, we will need to make sure we don't - // split multibyte characters when we wrap + //If utf-8 encoding is used, we will need to make sure we don't + //split multibyte characters when we wrap $is_utf8 = static::CHARSET_UTF8 === strtolower($this->CharSet); $lelen = strlen(static::$LE); $crlflen = strlen(static::$LE); @@ -2353,29 +2423,29 @@ class PHPMailer $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack); $encodedCharPos = strpos($lastChunk, '='); if (false !== $encodedCharPos) { - // Found start of encoded character byte within $lookBack block. - // Check the encoded byte value (the 2 chars after the '=') + //Found start of encoded character byte within $lookBack block. + //Check the encoded byte value (the 2 chars after the '=') $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2); $dec = hexdec($hex); if ($dec < 128) { - // Single byte character. - // If the encoded char was found at pos 0, it will fit - // otherwise reduce maxLength to start of the encoded char + //Single byte character. + //If the encoded char was found at pos 0, it will fit + //otherwise reduce maxLength to start of the encoded char if ($encodedCharPos > 0) { $maxLength -= $lookBack - $encodedCharPos; } $foundSplitPos = true; } elseif ($dec >= 192) { - // First byte of a multi byte character - // Reduce maxLength to split at start of character + //First byte of a multi byte character + //Reduce maxLength to split at start of character $maxLength -= $lookBack - $encodedCharPos; $foundSplitPos = true; } elseif ($dec < 192) { - // Middle byte of a multi byte character, look further back + //Middle byte of a multi byte character, look further back $lookBack += 3; } } else { - // No encoded character found + //No encoded character found $foundSplitPos = true; } } @@ -2419,7 +2489,7 @@ class PHPMailer $result .= $this->headerLine('Date', '' === $this->MessageDate ? self::rfcDate() : $this->MessageDate); - // The To header is created automatically by mail(), so needs to be omitted here + //The To header is created automatically by mail(), so needs to be omitted here if ('mail' !== $this->Mailer) { if ($this->SingleTo) { foreach ($this->to as $toaddr) { @@ -2433,12 +2503,12 @@ class PHPMailer } $result .= $this->addrAppend('From', [[trim($this->From), $this->FromName]]); - // sendmail and mail() extract Cc from the header before sending + //sendmail and mail() extract Cc from the header before sending if (count($this->cc) > 0) { $result .= $this->addrAppend('Cc', $this->cc); } - // sendmail and mail() extract Bcc from the header before sending + //sendmail and mail() extract Bcc from the header before sending if ( ( 'sendmail' === $this->Mailer || 'qmail' === $this->Mailer || 'mail' === $this->Mailer @@ -2452,13 +2522,13 @@ class PHPMailer $result .= $this->addrAppend('Reply-To', $this->ReplyTo); } - // mail() sets the subject itself + //mail() sets the subject itself if ('mail' !== $this->Mailer) { $result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject))); } - // Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4 - // https://tools.ietf.org/html/rfc5322#section-3.6.4 + //Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4 + //https://tools.ietf.org/html/rfc5322#section-3.6.4 if ('' !== $this->MessageID && preg_match('/^<.*@.*>$/', $this->MessageID)) { $this->lastMessageID = $this->MessageID; } else { @@ -2484,7 +2554,7 @@ class PHPMailer $result .= $this->headerLine('Disposition-Notification-To', '<' . $this->ConfirmReadingTo . '>'); } - // Add custom headers + //Add custom headers foreach ($this->CustomHeader as $header) { $result .= $this->headerLine( trim($header[0]), @@ -2526,28 +2596,24 @@ class PHPMailer $result .= $this->textLine(' boundary="' . $this->boundary[1] . '"'); break; default: - // Catches case 'plain': and case '': + //Catches case 'plain': and case '': $result .= $this->textLine('Content-Type: ' . $this->ContentType . '; charset=' . $this->CharSet); $ismultipart = false; break; } - // RFC1341 part 5 says 7bit is assumed if not specified + //RFC1341 part 5 says 7bit is assumed if not specified if (static::ENCODING_7BIT !== $this->Encoding) { - // RFC 2045 section 6.4 says multipart MIME parts may only use 7bit, 8bit or binary CTE + //RFC 2045 section 6.4 says multipart MIME parts may only use 7bit, 8bit or binary CTE if ($ismultipart) { if (static::ENCODING_8BIT === $this->Encoding) { $result .= $this->headerLine('Content-Transfer-Encoding', static::ENCODING_8BIT); } - // The only remaining alternatives are quoted-printable and base64, which are both 7bit compatible + //The only remaining alternatives are quoted-printable and base64, which are both 7bit compatible } else { $result .= $this->headerLine('Content-Transfer-Encoding', $this->Encoding); } } - if ('mail' !== $this->Mailer) { -// $result .= static::$LE; - } - return $result; } @@ -2816,7 +2882,7 @@ class PHPMailer $body .= $this->attachAll('attachment', $this->boundary[1]); break; default: - // Catch case 'plain' and case '', applies to simple `text/plain` and `text/html` body content types + //Catch case 'plain' and case '', applies to simple `text/plain` and `text/html` body content types //Reset the `Encoding` property in case we changed it for line length reasons $this->Encoding = $bodyEncoding; $body .= $this->encodeString($this->Body, $this->Encoding); @@ -2907,7 +2973,7 @@ class PHPMailer $result .= $this->textLine('--' . $boundary); $result .= sprintf('Content-Type: %s; charset=%s', $contentType, $charSet); $result .= static::$LE; - // RFC1341 part 5 says 7bit is assumed if not specified + //RFC1341 part 5 says 7bit is assumed if not specified if (static::ENCODING_7BIT !== $encoding) { $result .= $this->headerLine('Content-Transfer-Encoding', $encoding); } @@ -3005,7 +3071,7 @@ class PHPMailer throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE); } - // If a MIME type is not specified, try to work it out from the file name + //If a MIME type is not specified, try to work it out from the file name if ('' === $type) { $type = static::filenameToType($path); } @@ -3024,7 +3090,7 @@ class PHPMailer 2 => $name, 3 => $encoding, 4 => $type, - 5 => false, // isStringAttachment + 5 => false, //isStringAttachment 6 => $disposition, 7 => $name, ]; @@ -3064,16 +3130,16 @@ class PHPMailer */ protected function attachAll($disposition_type, $boundary) { - // Return text of body + //Return text of body $mime = []; $cidUniq = []; $incl = []; - // Add all attachments + //Add all attachments foreach ($this->attachment as $attachment) { - // Check if it is a valid disposition_filter + //Check if it is a valid disposition_filter if ($attachment[6] === $disposition_type) { - // Check for string attachment + //Check for string attachment $string = ''; $path = ''; $bString = $attachment[5]; @@ -3114,7 +3180,7 @@ class PHPMailer static::$LE ); } - // RFC1341 part 5 says 7bit is assumed if not specified + //RFC1341 part 5 says 7bit is assumed if not specified if (static::ENCODING_7BIT !== $encoding) { $mime[] = sprintf('Content-Transfer-Encoding: %s%s', $encoding, static::$LE); } @@ -3124,7 +3190,7 @@ class PHPMailer $mime[] = 'Content-ID: <' . $this->encodeHeader($this->secureHeader($cid)) . '>' . static::$LE; } - // Allow for bypassing the Content-Disposition header + //Allow for bypassing the Content-Disposition header if (!empty($disposition)) { $encoded_name = $this->encodeHeader($this->secureHeader($name)); if (!empty($encoded_name)) { @@ -3145,7 +3211,7 @@ class PHPMailer $mime[] = static::$LE; } - // Encode as string attachment + //Encode as string attachment if ($bString) { $mime[] = $this->encodeString($string, $encoding); } else { @@ -3221,7 +3287,7 @@ class PHPMailer case static::ENCODING_7BIT: case static::ENCODING_8BIT: $encoded = static::normalizeBreaks($str); - // Make sure it ends with a line break + //Make sure it ends with a line break if (substr($encoded, -(strlen(static::$LE))) !== static::$LE) { $encoded .= static::$LE; } @@ -3259,7 +3325,7 @@ class PHPMailer switch (strtolower($position)) { case 'phrase': if (!preg_match('/[\200-\377]/', $str)) { - // Can't use addslashes as we don't know the value of magic_quotes_sybase + //Can't use addslashes as we don't know the value of magic_quotes_sybase $encoded = addcslashes($str, "\0..\37\177\\\""); if (($str === $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) { return $encoded; @@ -3285,7 +3351,7 @@ class PHPMailer $charset = static::CHARSET_ASCII; } - // Q/B encoding adds 8 chars and the charset ("` =??[QB]??=`"). + //Q/B encoding adds 8 chars and the charset ("` =??[QB]??=`"). $overhead = 8 + strlen($charset); if ('mail' === $this->Mailer) { @@ -3294,26 +3360,26 @@ class PHPMailer $maxlen = static::MAX_LINE_LENGTH - $overhead; } - // Select the encoding that produces the shortest output and/or prevents corruption. + //Select the encoding that produces the shortest output and/or prevents corruption. if ($matchcount > strlen($str) / 3) { - // More than 1/3 of the content needs encoding, use B-encode. + //More than 1/3 of the content needs encoding, use B-encode. $encoding = 'B'; } elseif ($matchcount > 0) { - // Less than 1/3 of the content needs encoding, use Q-encode. + //Less than 1/3 of the content needs encoding, use Q-encode. $encoding = 'Q'; } elseif (strlen($str) > $maxlen) { - // No encoding needed, but value exceeds max line length, use Q-encode to prevent corruption. + //No encoding needed, but value exceeds max line length, use Q-encode to prevent corruption. $encoding = 'Q'; } else { - // No reformatting needed + //No reformatting needed $encoding = false; } switch ($encoding) { case 'B': if ($this->hasMultiBytes($str)) { - // Use a custom function which correctly encodes and wraps long - // multibyte strings without breaking lines within a character + //Use a custom function which correctly encodes and wraps long + //multibyte strings without breaking lines within a character $encoded = $this->base64EncodeWrapMB($str, "\n"); } else { $encoded = base64_encode($str); @@ -3348,7 +3414,7 @@ class PHPMailer return strlen($str) > mb_strlen($str, $this->CharSet); } - // Assume no multibytes (we can't handle without mbstring functions anyway) + //Assume no multibytes (we can't handle without mbstring functions anyway) return false; } @@ -3386,11 +3452,11 @@ class PHPMailer } $mb_length = mb_strlen($str, $this->CharSet); - // Each line must have length <= 75, including $start and $end + //Each line must have length <= 75, including $start and $end $length = 75 - strlen($start) - strlen($end); - // Average multi-byte ratio + //Average multi-byte ratio $ratio = $mb_length / strlen($str); - // Base64 has a 4:3 ratio + //Base64 has a 4:3 ratio $avgLength = floor($length * $ratio * .75); $offset = 0; @@ -3405,7 +3471,7 @@ class PHPMailer $encoded .= $chunk . $linebreak; } - // Chomp the last linefeed + //Chomp the last linefeed return substr($encoded, 0, -strlen($linebreak)); } @@ -3434,12 +3500,12 @@ class PHPMailer */ public function encodeQ($str, $position = 'text') { - // There should not be any EOL in the string + //There should not be any EOL in the string $pattern = ''; $encoded = str_replace(["\r", "\n"], '', $str); switch (strtolower($position)) { case 'phrase': - // RFC 2047 section 5.3 + //RFC 2047 section 5.3 $pattern = '^A-Za-z0-9!*+\/ -'; break; /* @@ -3452,15 +3518,15 @@ class PHPMailer /* Intentional fall through */ case 'text': default: - // RFC 2047 section 5.1 - // Replace every high ascii, control, =, ? and _ characters + //RFC 2047 section 5.1 + //Replace every high ascii, control, =, ? and _ characters $pattern = '\000-\011\013\014\016-\037\075\077\137\177-\377' . $pattern; break; } $matches = []; if (preg_match_all("/[{$pattern}]/", $encoded, $matches)) { - // If the string contains an '=', make sure it's the first thing we replace - // so as to avoid double-encoding + //If the string contains an '=', make sure it's the first thing we replace + //so as to avoid double-encoding $eqkey = array_search('=', $matches[0], true); if (false !== $eqkey) { unset($matches[0][$eqkey]); @@ -3470,8 +3536,8 @@ class PHPMailer $encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded); } } - // Replace spaces with _ (more readable than =20) - // RFC 2047 section 4.2(2) + //Replace spaces with _ (more readable than =20) + //RFC 2047 section 4.2(2) return str_replace(' ', '_', $encoded); } @@ -3498,7 +3564,7 @@ class PHPMailer $disposition = 'attachment' ) { try { - // If a MIME type is not specified, try to work it out from the file name + //If a MIME type is not specified, try to work it out from the file name if ('' === $type) { $type = static::filenameToType($filename); } @@ -3507,14 +3573,14 @@ class PHPMailer throw new Exception($this->lang('encoding') . $encoding); } - // Append to $attachment array + //Append to $attachment array $this->attachment[] = [ 0 => $string, 1 => $filename, 2 => static::mb_pathinfo($filename, PATHINFO_BASENAME), 3 => $encoding, 4 => $type, - 5 => true, // isStringAttachment + 5 => true, //isStringAttachment 6 => $disposition, 7 => 0, ]; @@ -3565,7 +3631,7 @@ class PHPMailer throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE); } - // If a MIME type is not specified, try to work it out from the file name + //If a MIME type is not specified, try to work it out from the file name if ('' === $type) { $type = static::filenameToType($path); } @@ -3579,14 +3645,14 @@ class PHPMailer $name = $filename; } - // Append to $attachment array + //Append to $attachment array $this->attachment[] = [ 0 => $path, 1 => $filename, 2 => $name, 3 => $encoding, 4 => $type, - 5 => false, // isStringAttachment + 5 => false, //isStringAttachment 6 => $disposition, 7 => $cid, ]; @@ -3631,7 +3697,7 @@ class PHPMailer $disposition = 'inline' ) { try { - // If a MIME type is not specified, try to work it out from the name + //If a MIME type is not specified, try to work it out from the name if ('' === $type && !empty($name)) { $type = static::filenameToType($name); } @@ -3640,14 +3706,14 @@ class PHPMailer throw new Exception($this->lang('encoding') . $encoding); } - // Append to $attachment array + //Append to $attachment array $this->attachment[] = [ 0 => $string, 1 => $name, 2 => $name, 3 => $encoding, 4 => $type, - 5 => true, // isStringAttachment + 5 => true, //isStringAttachment 6 => $disposition, 7 => $cid, ]; @@ -3867,8 +3933,8 @@ class PHPMailer */ public static function rfcDate() { - // Set the time zone to whatever the default is to avoid 500 errors - // Will default to UTC if it's not set properly in php.ini + //Set the time zone to whatever the default is to avoid 500 errors + //Will default to UTC if it's not set properly in php.ini date_default_timezone_set(@date_default_timezone_get()); return date('D, j M Y H:i:s O'); @@ -3946,13 +4012,13 @@ class PHPMailer protected function lang($key) { if (count($this->language) < 1) { - $this->setLanguage(); // set the default language + $this->setLanguage(); //Set the default language } if (array_key_exists($key, $this->language)) { if ('smtp_connect_failed' === $key) { - //Include a link to troubleshooting docs on SMTP connection failure - //this is by far the biggest cause of support questions + //Include a link to troubleshooting docs on SMTP connection failure. + //This is by far the biggest cause of support questions //but it's usually not PHPMailer's fault. return $this->language[$key] . ' https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting'; } @@ -3987,7 +4053,7 @@ class PHPMailer public function addCustomHeader($name, $value = null) { if (null === $value && strpos($name, ':') !== false) { - // Value passed in as name:value + //Value passed in as name:value list($name, $value) = explode(':', $name, 2); } $name = trim($name); @@ -4041,11 +4107,11 @@ class PHPMailer preg_match_all('/(? 1 && '/' !== substr($basedir, -1)) { - // Ensure $basedir has a trailing / + //Ensure $basedir has a trailing / $basedir .= '/'; } foreach ($images[2] as $imgindex => $url) { - // Convert data URIs into embedded images + //Convert data URIs into embedded images //e.g. "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" $match = []; if (preg_match('#^data:(image/(?:jpe?g|gif|png));?(base64)?,(.+)#', $url, $match)) { @@ -4059,7 +4125,7 @@ class PHPMailer } //Hash the decoded data, not the URL, so that the same data-URI image used in multiple places //will only be embedded once, even if it used a different encoding - $cid = substr(hash('sha256', $data), 0, 32) . '@phpmailer.0'; // RFC2392 S 2 + $cid = substr(hash('sha256', $data), 0, 32) . '@phpmailer.0'; //RFC2392 S 2 if (!$this->cidExists($cid)) { $this->addStringEmbeddedImage( @@ -4078,13 +4144,13 @@ class PHPMailer continue; } if ( - // Only process relative URLs if a basedir is provided (i.e. no absolute local paths) + //Only process relative URLs if a basedir is provided (i.e. no absolute local paths) !empty($basedir) - // Ignore URLs containing parent dir traversal (..) + //Ignore URLs containing parent dir traversal (..) && (strpos($url, '..') === false) - // Do not change urls that are already inline images + //Do not change urls that are already inline images && 0 !== strpos($url, 'cid:') - // Do not change absolute URLs, including anonymous protocol + //Do not change absolute URLs, including anonymous protocol && !preg_match('#^[a-z][a-z0-9+.-]*:?//#i', $url) ) { $filename = static::mb_pathinfo($url, PATHINFO_BASENAME); @@ -4092,7 +4158,7 @@ class PHPMailer if ('.' === $directory) { $directory = ''; } - // RFC2392 S 2 + //RFC2392 S 2 $cid = substr(hash('sha256', $url), 0, 32) . '@phpmailer.0'; if (strlen($basedir) > 1 && '/' !== substr($basedir, -1)) { $basedir .= '/'; @@ -4119,7 +4185,7 @@ class PHPMailer } } $this->isHTML(); - // Convert all message body line breaks to LE, makes quoted-printable encoding work much better + //Convert all message body line breaks to LE, makes quoted-printable encoding work much better $this->Body = static::normalizeBreaks($message); $this->AltBody = static::normalizeBreaks($this->html2text($message, $advanced)); if (!$this->alternativeExists()) { @@ -4138,9 +4204,9 @@ class PHPMailer * Example usage: * * ```php - * // Use default conversion + * //Use default conversion * $plain = $mail->html2text($html); - * // Use your own custom converter + * //Use your own custom converter * $plain = $mail->html2text($html, function($html) { * $converter = new MyHtml2text($html); * return $converter->get_text(); @@ -4307,7 +4373,7 @@ class PHPMailer */ public static function filenameToType($filename) { - // In case the path is a URL, strip any query string before getting extension + //In case the path is a URL, strip any query string before getting extension $qpos = strpos($filename, '?'); if (false !== $qpos) { $filename = substr($filename, 0, $qpos); @@ -4418,9 +4484,9 @@ class PHPMailer if (null === $breaktype) { $breaktype = static::$LE; } - // Normalise to \n + //Normalise to \n $text = str_replace([self::CRLF, "\r"], "\n", $text); - // Now convert LE as needed + //Now convert LE as needed if ("\n" !== $breaktype) { $text = str_replace("\n", $breaktype, $text); } @@ -4526,13 +4592,13 @@ class PHPMailer $privKey = openssl_pkey_get_private($privKeyStr); } if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) { - if (PHP_MAJOR_VERSION < 8) { + if (\PHP_MAJOR_VERSION < 8) { openssl_pkey_free($privKey); } return base64_encode($signature); } - if (PHP_MAJOR_VERSION < 8) { + if (\PHP_MAJOR_VERSION < 8) { openssl_pkey_free($privKey); } @@ -4599,7 +4665,7 @@ class PHPMailer if (empty($body)) { return self::CRLF; } - // Normalize line endings to CRLF + //Normalize line endings to CRLF $body = static::normalizeBreaks($body, self::CRLF); //Reduce multiple trailing line breaks to a single one @@ -4619,9 +4685,9 @@ class PHPMailer */ public function DKIM_Add($headers_line, $subject, $body) { - $DKIMsignatureType = 'rsa-sha256'; // Signature & hash algorithms - $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization methods of header & body - $DKIMquery = 'dns/txt'; // Query method + $DKIMsignatureType = 'rsa-sha256'; //Signature & hash algorithms + $DKIMcanonicalization = 'relaxed/simple'; //Canonicalization methods of header & body + $DKIMquery = 'dns/txt'; //Query method $DKIMtime = time(); //Always sign these headers without being asked //Recommended list from https://tools.ietf.org/html/rfc6376#section-5.4.1 @@ -4722,7 +4788,8 @@ class PHPMailer $headerKeys = ' h=' . implode(':', $headersToSignKeys) . ';' . static::$LE; $headerValues = implode(static::$LE, $headersToSign); $body = $this->DKIM_BodyC($body); - $DKIMb64 = base64_encode(pack('H*', hash('sha256', $body))); // Base64 of packed binary SHA-256 hash of body + //Base64 of packed binary SHA-256 hash of body + $DKIMb64 = base64_encode(pack('H*', hash('sha256', $body))); $ident = ''; if ('' !== $this->DKIM_identity) { $ident = ' i=' . $this->DKIM_identity . ';' . static::$LE; diff --git a/vendor/phpmailer/phpmailer/src/POP3.php b/vendor/phpmailer/phpmailer/src/POP3.php index 235e637..a39f480 100644 --- a/vendor/phpmailer/phpmailer/src/POP3.php +++ b/vendor/phpmailer/phpmailer/src/POP3.php @@ -46,7 +46,7 @@ class POP3 * * @var string */ - const VERSION = '6.2.0'; + const VERSION = '6.4.1'; /** * Default POP3 port number. @@ -199,13 +199,13 @@ class POP3 public function authorise($host, $port = false, $timeout = false, $username = '', $password = '', $debug_level = 0) { $this->host = $host; - // If no port value provided, use default + //If no port value provided, use default if (false === $port) { $this->port = static::DEFAULT_PORT; } else { $this->port = (int) $port; } - // If no timeout value provided, use default + //If no timeout value provided, use default if (false === $timeout) { $this->tval = static::DEFAULT_TIMEOUT; } else { @@ -214,9 +214,9 @@ class POP3 $this->do_debug = $debug_level; $this->username = $username; $this->password = $password; - // Reset the error log + //Reset the error log $this->errors = []; - // connect + //Connect $result = $this->connect($this->host, $this->port, $this->tval); if ($result) { $login_result = $this->login($this->username, $this->password); @@ -226,7 +226,7 @@ class POP3 return true; } } - // We need to disconnect regardless of whether the login succeeded + //We need to disconnect regardless of whether the login succeeded $this->disconnect(); return false; @@ -243,7 +243,7 @@ class POP3 */ public function connect($host, $port = false, $tval = 30) { - // Are we already connected? + //Are we already connected? if ($this->connected) { return true; } @@ -256,22 +256,22 @@ class POP3 $port = static::DEFAULT_PORT; } - // connect to the POP3 server + //Connect to the POP3 server $errno = 0; $errstr = ''; $this->pop_conn = fsockopen( - $host, // POP3 Host - $port, // Port # - $errno, // Error Number - $errstr, // Error Message + $host, //POP3 Host + $port, //Port # + $errno, //Error Number + $errstr, //Error Message $tval - ); // Timeout (seconds) - // Restore the error handler + ); //Timeout (seconds) + //Restore the error handler restore_error_handler(); - // Did we connect? + //Did we connect? if (false === $this->pop_conn) { - // It would appear not... + //It would appear not... $this->setError( "Failed to connect to server $host on port $port. errno: $errno; errstr: $errstr" ); @@ -279,14 +279,14 @@ class POP3 return false; } - // Increase the stream time-out + //Increase the stream time-out stream_set_timeout($this->pop_conn, $tval, 0); - // Get the POP3 server response + //Get the POP3 server response $pop3_response = $this->getResponse(); - // Check for the +OK + //Check for the +OK if ($this->checkResponse($pop3_response)) { - // The connection is established and the POP3 server is talking + //The connection is established and the POP3 server is talking $this->connected = true; return true; @@ -316,11 +316,11 @@ class POP3 $password = $this->password; } - // Send the Username + //Send the Username $this->sendString("USER $username" . static::LE); $pop3_response = $this->getResponse(); if ($this->checkResponse($pop3_response)) { - // Send the Password + //Send the Password $this->sendString("PASS $password" . static::LE); $pop3_response = $this->getResponse(); if ($this->checkResponse($pop3_response)) { diff --git a/vendor/phpmailer/phpmailer/src/SMTP.php b/vendor/phpmailer/phpmailer/src/SMTP.php index ab7f46e..0e7f53d 100644 --- a/vendor/phpmailer/phpmailer/src/SMTP.php +++ b/vendor/phpmailer/phpmailer/src/SMTP.php @@ -35,7 +35,7 @@ class SMTP * * @var string */ - const VERSION = '6.2.0'; + const VERSION = '6.4.1'; /** * SMTP line break constant. @@ -312,11 +312,11 @@ class SMTP */ public function connect($host, $port = null, $timeout = 30, $options = []) { - // Clear errors to avoid confusion + //Clear errors to avoid confusion $this->setError(''); - // Make sure we are __not__ connected + //Make sure we are __not__ connected if ($this->connected()) { - // Already connected, generate error + //Already connected, generate error $this->setError('Already connected to a server'); return false; @@ -324,7 +324,7 @@ class SMTP if (empty($port)) { $port = self::DEFAULT_PORT; } - // Connect to the SMTP server + //Connect to the SMTP server $this->edebug( "Connection: opening to $host:$port, timeout=$timeout, options=" . (count($options) > 0 ? var_export($options, true) : 'array()'), @@ -340,11 +340,23 @@ class SMTP $this->edebug('Connection: opened', self::DEBUG_CONNECTION); - // Get any announcement + //Get any announcement $this->last_reply = $this->get_lines(); $this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER); - - return true; + $responseCode = (int)substr($this->last_reply, 0, 3); + if ($responseCode === 220) { + return true; + } + //Anything other than a 220 response means something went wrong + //RFC 5321 says the server will wait for us to send a QUIT in response to a 554 error + //https://tools.ietf.org/html/rfc5321#section-3.1 + if ($responseCode === 554) { + $this->quit(); + } + //This will handle 421 responses which may not wait for a QUIT (e.g. if the server is being shut down) + $this->edebug('Connection: closing due to error', self::DEBUG_CONNECTION); + $this->close(); + return false; } /** @@ -397,7 +409,7 @@ class SMTP restore_error_handler(); } - // Verify we connected properly + //Verify we connected properly if (!is_resource($connection)) { $this->setError( 'Failed to connect to server', @@ -414,11 +426,11 @@ class SMTP return false; } - // SMTP server can take longer to respond, give longer timeout for first read - // Windows does not have support for this timeout function + //SMTP server can take longer to respond, give longer timeout for first read + //Windows does not have support for this timeout function if (strpos(PHP_OS, 'WIN') !== 0) { $max = (int)ini_get('max_execution_time'); - // Don't bother if unlimited, or if set_time_limit is disabled + //Don't bother if unlimited, or if set_time_limit is disabled if (0 !== $max && $timeout > $max && strpos(ini_get('disable_functions'), 'set_time_limit') === false) { @set_time_limit($timeout); } @@ -449,7 +461,7 @@ class SMTP $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; } - // Begin encrypted connection + //Begin encrypted connection set_error_handler([$this, 'errorHandler']); $crypto_ok = stream_socket_enable_crypto( $this->smtp_conn, @@ -487,11 +499,11 @@ class SMTP } if (array_key_exists('EHLO', $this->server_caps)) { - // SMTP extensions are available; try to find a proper authentication method + //SMTP extensions are available; try to find a proper authentication method if (!array_key_exists('AUTH', $this->server_caps)) { $this->setError('Authentication is not allowed at this stage'); - // 'at this stage' means that auth may be allowed after the stage changes - // e.g. after STARTTLS + //'at this stage' means that auth may be allowed after the stage changes + //e.g. after STARTTLS return false; } @@ -535,12 +547,14 @@ class SMTP } switch ($authtype) { case 'PLAIN': - // Start authentication + //Start authentication if (!$this->sendCommand('AUTH', 'AUTH PLAIN', 334)) { return false; } - // Send encoded username and password + //Send encoded username and password if ( + //Format from https://tools.ietf.org/html/rfc4616#section-2 + //We skip the first field (it's forgery), so the string starts with a null byte !$this->sendCommand( 'User & Password', base64_encode("\0" . $username . "\0" . $password), @@ -551,7 +565,7 @@ class SMTP } break; case 'LOGIN': - // Start authentication + //Start authentication if (!$this->sendCommand('AUTH', 'AUTH LOGIN', 334)) { return false; } @@ -563,17 +577,17 @@ class SMTP } break; case 'CRAM-MD5': - // Start authentication + //Start authentication if (!$this->sendCommand('AUTH CRAM-MD5', 'AUTH CRAM-MD5', 334)) { return false; } - // Get the challenge + //Get the challenge $challenge = base64_decode(substr($this->last_reply, 4)); - // Build the response + //Build the response $response = $username . ' ' . $this->hmac($challenge, $password); - // send encoded credentials + //send encoded credentials return $this->sendCommand('Username', base64_encode($response), 235); case 'XOAUTH2': //The OAuth instance must be set up prior to requesting auth. @@ -582,7 +596,7 @@ class SMTP } $oauth = $OAuth->getOauth64(); - // Start authentication + //Start authentication if (!$this->sendCommand('AUTH', 'AUTH XOAUTH2 ' . $oauth, 235)) { return false; } @@ -612,15 +626,15 @@ class SMTP return hash_hmac('md5', $data, $key); } - // The following borrowed from - // http://php.net/manual/en/function.mhash.php#27225 + //The following borrowed from + //http://php.net/manual/en/function.mhash.php#27225 - // RFC 2104 HMAC implementation for php. - // Creates an md5 HMAC. - // Eliminates the need to install mhash to compute a HMAC - // by Lance Rushing + //RFC 2104 HMAC implementation for php. + //Creates an md5 HMAC. + //Eliminates the need to install mhash to compute a HMAC + //by Lance Rushing - $bytelen = 64; // byte length for md5 + $bytelen = 64; //byte length for md5 if (strlen($key) > $bytelen) { $key = pack('H*', md5($key)); } @@ -643,7 +657,7 @@ class SMTP if (is_resource($this->smtp_conn)) { $sock_status = stream_get_meta_data($this->smtp_conn); if ($sock_status['eof']) { - // The socket is valid but we are not connected + //The socket is valid but we are not connected $this->edebug( 'SMTP NOTICE: EOF caught while checking if connected', self::DEBUG_CLIENT @@ -653,7 +667,7 @@ class SMTP return false; } - return true; // everything looks good + return true; //everything looks good } return false; @@ -671,7 +685,7 @@ class SMTP $this->server_caps = null; $this->helo_rply = null; if (is_resource($this->smtp_conn)) { - // close the connection and cleanup + //Close the connection and cleanup fclose($this->smtp_conn); $this->smtp_conn = null; //Makes for cleaner serialization $this->edebug('Connection: closed', self::DEBUG_CONNECTION); @@ -706,7 +720,7 @@ class SMTP * NOTE: this does not count towards line-length limit. */ - // Normalize line breaks before exploding + //Normalize line breaks before exploding $lines = explode("\n", str_replace(["\r\n", "\r"], "\n", $msg_data)); /* To distinguish between a complete RFC822 message and a plain message body, we check if the first field @@ -752,7 +766,8 @@ class SMTP //Send the lines to the server foreach ($lines_out as $line_out) { - //RFC2821 section 4.5.2 + //Dot-stuffing as per RFC5321 section 4.5.2 + //https://tools.ietf.org/html/rfc5321#section-4.5.2 if (!empty($line_out) && $line_out[0] === '.') { $line_out = '.' . $line_out; } @@ -786,7 +801,16 @@ class SMTP public function hello($host = '') { //Try extended hello first (RFC 2821) - return $this->sendHello('EHLO', $host) or $this->sendHello('HELO', $host); + if ($this->sendHello('EHLO', $host)) { + return true; + } + + //Some servers shut down the SMTP service here (RFC 5321) + if (substr($this->helo_rply, 0, 3) == '421') { + return false; + } + + return $this->sendHello('HELO', $host); } /** @@ -976,12 +1000,12 @@ class SMTP $this->client_send($commandstring . static::LE, $command); $this->last_reply = $this->get_lines(); - // Fetch SMTP code and possible error code explanation + //Fetch SMTP code and possible error code explanation $matches = []; if (preg_match('/^([\d]{3})[ -](?:([\d]\\.[\d]\\.[\d]{1,2}) )?/', $this->last_reply, $matches)) { $code = (int) $matches[1]; $code_ex = (count($matches) > 2 ? $matches[2] : null); - // Cut off error code from each response line + //Cut off error code from each response line $detail = preg_replace( "/{$code}[ -]" . ($code_ex ? str_replace('.', '\\.', $code_ex) . ' ' : '') . '/m', @@ -989,7 +1013,7 @@ class SMTP $this->last_reply ); } else { - // Fall back to simple parsing if regex fails + //Fall back to simple parsing if regex fails $code = (int) substr($this->last_reply, 0, 3); $code_ex = null; $detail = substr($this->last_reply, 4); @@ -1184,7 +1208,7 @@ class SMTP */ protected function get_lines() { - // If the connection is bad, give up straight away + //If the connection is bad, give up straight away if (!is_resource($this->smtp_conn)) { return ''; } @@ -1237,13 +1261,13 @@ class SMTP $str = @fgets($this->smtp_conn, self::MAX_REPLY_LENGTH); $this->edebug('SMTP INBOUND: "' . trim($str) . '"', self::DEBUG_LOWLEVEL); $data .= $str; - // If response is only 3 chars (not valid, but RFC5321 S4.2 says it must be handled), - // or 4th character is a space or a line break char, we are done reading, break the loop. - // String array access is a significant micro-optimisation over strlen + //If response is only 3 chars (not valid, but RFC5321 S4.2 says it must be handled), + //or 4th character is a space or a line break char, we are done reading, break the loop. + //String array access is a significant micro-optimisation over strlen if (!isset($str[3]) || $str[3] === ' ' || $str[3] === "\r" || $str[3] === "\n") { break; } - // Timed-out? Log and break + //Timed-out? Log and break $info = stream_get_meta_data($this->smtp_conn); if ($info['timed_out']) { $this->edebug( @@ -1252,7 +1276,7 @@ class SMTP ); break; } - // Now check if reads took too long + //Now check if reads took too long if ($endtime && time() > $endtime) { $this->edebug( 'SMTP -> get_lines(): timelimit reached (' . diff --git a/vendor/psr/container/README.md b/vendor/psr/container/README.md index 084f6df..1b9d9e5 100644 --- a/vendor/psr/container/README.md +++ b/vendor/psr/container/README.md @@ -1,5 +1,13 @@ -# PSR Container +Container interface +============== -This repository holds all interfaces/classes/traits related to [PSR-11](https://github.com/container-interop/fig-standards/blob/master/proposed/container.md). +This repository holds all interfaces related to [PSR-11 (Container Interface)][psr-url]. + +Note that this is not a Container implementation of its own. It is merely abstractions that describe the components of a Dependency Injection Container. + +The installable [package][package-url] and [implementations][implementation-url] are listed on Packagist. + +[psr-url]: https://www.php-fig.org/psr/psr-11/ +[package-url]: https://packagist.org/packages/psr/container +[implementation-url]: https://packagist.org/providers/psr/container-implementation -Note that this is not a container implementation of its own. See the specification for more details. diff --git a/vendor/psr/container/composer.json b/vendor/psr/container/composer.json index b8ee012..3797a25 100644 --- a/vendor/psr/container/composer.json +++ b/vendor/psr/container/composer.json @@ -8,20 +8,15 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "require": { - "php": ">=5.3.0" + "php": ">=7.2.0" }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" } - }, - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } } } diff --git a/vendor/psr/container/src/ContainerExceptionInterface.php b/vendor/psr/container/src/ContainerExceptionInterface.php index d35c6b4..cf10b8b 100644 --- a/vendor/psr/container/src/ContainerExceptionInterface.php +++ b/vendor/psr/container/src/ContainerExceptionInterface.php @@ -1,7 +1,4 @@ 'think\\captcha\\CaptchaService', diff --git a/vendor/symfony/polyfill-mbstring/bootstrap80.php b/vendor/symfony/polyfill-mbstring/bootstrap80.php index e86754e..f404f5f 100644 --- a/vendor/symfony/polyfill-mbstring/bootstrap80.php +++ b/vendor/symfony/polyfill-mbstring/bootstrap80.php @@ -12,120 +12,120 @@ use Symfony\Polyfill\Mbstring as p; if (!function_exists('mb_convert_encoding')) { - function mb_convert_encoding(array|string $string, string $to_encoding, array|string|null $from_encoding = null): array|string|false { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); } + function mb_convert_encoding(array|string|null $string, ?string $to_encoding, array|string|null $from_encoding = null): array|string|false { return p\Mbstring::mb_convert_encoding($string ?? '', (string) $to_encoding, $from_encoding); } } if (!function_exists('mb_decode_mimeheader')) { - function mb_decode_mimeheader(string $string): string { return p\Mbstring::mb_decode_mimeheader($string); } + function mb_decode_mimeheader(?string $string): string { return p\Mbstring::mb_decode_mimeheader((string) $string); } } if (!function_exists('mb_encode_mimeheader')) { - function mb_encode_mimeheader(string $string, string $charset = null, string $transfer_encoding = null, string $newline = "\r\n", int $indent = 0): string { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); } + function mb_encode_mimeheader(?string $string, ?string $charset = null, ?string $transfer_encoding = null, ?string $newline = "\r\n", ?int $indent = 0): string { return p\Mbstring::mb_encode_mimeheader((string) $string, $charset, $transfer_encoding, (string) $newline, (int) $indent); } } if (!function_exists('mb_decode_numericentity')) { - function mb_decode_numericentity(string $string, array $map, string $encoding = null): string { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); } + function mb_decode_numericentity(?string $string, array $map, ?string $encoding = null): string { return p\Mbstring::mb_decode_numericentity((string) $string, $map, $encoding); } } if (!function_exists('mb_encode_numericentity')) { - function mb_encode_numericentity(string $string, array $map, string $encoding = null, bool $hex = false): string { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); } + function mb_encode_numericentity(?string $string, array $map, ?string $encoding = null, ?bool $hex = false): string { return p\Mbstring::mb_encode_numericentity((string) $string, $map, $encoding, (bool) $hex); } } if (!function_exists('mb_convert_case')) { - function mb_convert_case(string $string, int $mode, string $encoding = null): string { return p\Mbstring::mb_convert_case($string, $mode, $encoding); } + function mb_convert_case(?string $string, ?int $mode, ?string $encoding = null): string { return p\Mbstring::mb_convert_case((string) $string, (int) $mode, $encoding); } } if (!function_exists('mb_internal_encoding')) { - function mb_internal_encoding(string $encoding = null): string|bool { return p\Mbstring::mb_internal_encoding($encoding); } + function mb_internal_encoding(?string $encoding = null): string|bool { return p\Mbstring::mb_internal_encoding($encoding); } } if (!function_exists('mb_language')) { - function mb_language(string $language = null): string|bool { return p\Mbstring::mb_language($language); } + function mb_language(?string $language = null): string|bool { return p\Mbstring::mb_language($language); } } if (!function_exists('mb_list_encodings')) { function mb_list_encodings(): array { return p\Mbstring::mb_list_encodings(); } } if (!function_exists('mb_encoding_aliases')) { - function mb_encoding_aliases(string $encoding): array { return p\Mbstring::mb_encoding_aliases($encoding); } + function mb_encoding_aliases(?string $encoding): array { return p\Mbstring::mb_encoding_aliases((string) $encoding); } } if (!function_exists('mb_check_encoding')) { - function mb_check_encoding(array|string|null $value = null, string $encoding = null): bool { return p\Mbstring::mb_check_encoding($value, $encoding); } + function mb_check_encoding(array|string|null $value = null, ?string $encoding = null): bool { return p\Mbstring::mb_check_encoding($value, $encoding); } } if (!function_exists('mb_detect_encoding')) { - function mb_detect_encoding(string $string, array|string|null $encodings = null, bool $strict = false): string|false { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); } + function mb_detect_encoding(?string $string, array|string|null $encodings = null, ?bool $strict = false): string|false { return p\Mbstring::mb_detect_encoding((string) $string, $encodings, (bool) $strict); } } if (!function_exists('mb_detect_order')) { - function mb_detect_order(array|string|null $encoding = null): array|bool { return p\Mbstring::mb_detect_order($encoding); } + function mb_detect_order(array|string|null $encoding = null): array|bool { return p\Mbstring::mb_detect_order((string) $encoding); } } if (!function_exists('mb_parse_str')) { - function mb_parse_str(string $string, &$result = array()): bool { parse_str($string, $result); } + function mb_parse_str(?string $string, &$result = []): bool { parse_str((string) $string, $result); } } if (!function_exists('mb_strlen')) { - function mb_strlen(string $string, string $encoding = null): int { return p\Mbstring::mb_strlen($string, $encoding); } + function mb_strlen(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strlen((string) $string, $encoding); } } if (!function_exists('mb_strpos')) { - function mb_strpos(string $haystack, string $needle, int $offset = 0, string $encoding = null): int|false { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); } + function mb_strpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strpos((string) $haystack, (string) $needle, (int) $offset, $encoding); } } if (!function_exists('mb_strtolower')) { - function mb_strtolower(string $string, string $encoding = null): string { return p\Mbstring::mb_strtolower($string, $encoding); } + function mb_strtolower(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtolower((string) $string, $encoding); } } if (!function_exists('mb_strtoupper')) { - function mb_strtoupper(string $string, string $encoding = null): string { return p\Mbstring::mb_strtoupper($string, $encoding); } + function mb_strtoupper(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtoupper((string) $string, $encoding); } } if (!function_exists('mb_substitute_character')) { function mb_substitute_character(string|int|null $substitute_character = null): string|int|bool { return p\Mbstring::mb_substitute_character($substitute_character); } } if (!function_exists('mb_substr')) { - function mb_substr(string $string, int $start, int $length = null, string $encoding = null): string { return p\Mbstring::mb_substr($string, $start, $length, $encoding); } + function mb_substr(?string $string, ?int $start, ?int $length = null, ?string $encoding = null): string { return p\Mbstring::mb_substr((string) $string, (int) $start, $length, $encoding); } } if (!function_exists('mb_stripos')) { - function mb_stripos(string $haystack, string $needle, int $offset = 0, string $encoding = null): int|false { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); } + function mb_stripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_stripos((string) $haystack, (string) $needle, (int) $offset, $encoding); } } if (!function_exists('mb_stristr')) { - function mb_stristr(string $haystack, string $needle, bool $before_needle = false, string $encoding = null): string|false { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); } + function mb_stristr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_stristr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } } if (!function_exists('mb_strrchr')) { - function mb_strrchr(string $haystack, string $needle, bool $before_needle = false, string $encoding = null): string|false { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); } + function mb_strrchr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrchr((string) $haystack, (string) $needle, $before_needle, (bool) $encoding); } } if (!function_exists('mb_strrichr')) { - function mb_strrichr(string $haystack, string $needle, bool $before_needle = false, string $encoding = null): string|false { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); } + function mb_strrichr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrichr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } } if (!function_exists('mb_strripos')) { - function mb_strripos(string $haystack, string $needle, int $offset = 0, string $encoding = null): int|false { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); } + function mb_strripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strripos((string) $haystack, (string) $needle, (int) $offset, $encoding); } } if (!function_exists('mb_strrpos')) { - function mb_strrpos(string $haystack, string $needle, int $offset = 0, string $encoding = null): int|false { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); } + function mb_strrpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strrpos((string) $haystack, (string) $needle, (int) $offset, $encoding); } } if (!function_exists('mb_strstr')) { - function mb_strstr(string $haystack, string $needle, bool $before_needle = false, string $encoding = null): string|false { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); } + function mb_strstr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strstr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } } if (!function_exists('mb_get_info')) { - function mb_get_info(string $type = 'all'): array|string|int|false { return p\Mbstring::mb_get_info($type); } + function mb_get_info(?string $type = 'all'): array|string|int|false { return p\Mbstring::mb_get_info((string) $type); } } if (!function_exists('mb_http_output')) { - function mb_http_output(string $encoding = null): string|bool { return p\Mbstring::mb_http_output($encoding); } + function mb_http_output(?string $encoding = null): string|bool { return p\Mbstring::mb_http_output($encoding); } } if (!function_exists('mb_strwidth')) { - function mb_strwidth(string $string, string $encoding = null): int { return p\Mbstring::mb_strwidth($string, $encoding); } + function mb_strwidth(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strwidth((string) $string, $encoding); } } if (!function_exists('mb_substr_count')) { - function mb_substr_count(string $haystack, string $needle, string $encoding = null): int { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); } + function mb_substr_count(?string $haystack, ?string $needle, ?string $encoding = null): int { return p\Mbstring::mb_substr_count((string) $haystack, (string) $needle, $encoding); } } if (!function_exists('mb_output_handler')) { - function mb_output_handler(string $string, int $status): string { return p\Mbstring::mb_output_handler($string, $status); } + function mb_output_handler(?string $string, ?int $status): string { return p\Mbstring::mb_output_handler((string) $string, (int) $status); } } if (!function_exists('mb_http_input')) { - function mb_http_input(string $type = null): array|string|false { return p\Mbstring::mb_http_input($type); } + function mb_http_input(?string $type = null): array|string|false { return p\Mbstring::mb_http_input($type); } } if (!function_exists('mb_convert_variables')) { - function mb_convert_variables(string $to_encoding, array|string $from_encoding, mixed &$var, mixed &...$vars): string|false { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, $var, ...$vars); } + function mb_convert_variables(?string $to_encoding, array|string|null $from_encoding, mixed &$var, mixed &...$vars): string|false { return p\Mbstring::mb_convert_variables((string) $to_encoding, $from_encoding ?? '', $var, ...$vars); } } if (!function_exists('mb_ord')) { - function mb_ord(string $string, string $encoding = null): int|false { return p\Mbstring::mb_ord($string, $encoding); } + function mb_ord(?string $string, ?string $encoding = null): int|false { return p\Mbstring::mb_ord((string) $string, $encoding); } } if (!function_exists('mb_chr')) { - function mb_chr(int $codepoint, string $encoding = null): string|false { return p\Mbstring::mb_chr($codepoint, $encoding); } + function mb_chr(?int $codepoint, ?string $encoding = null): string|false { return p\Mbstring::mb_chr((int) $codepoint, $encoding); } } if (!function_exists('mb_scrub')) { - function mb_scrub(string $string, string $encoding = null): string { $encoding ??= mb_internal_encoding(); return mb_convert_encoding($string, $encoding, $encoding); } + function mb_scrub(?string $string, ?string $encoding = null): string { $encoding ??= mb_internal_encoding(); return mb_convert_encoding((string) $string, $encoding, $encoding); } } if (!function_exists('mb_str_split')) { - function mb_str_split(string $string, int $length = 1, string $encoding = null): array { return p\Mbstring::mb_str_split($string, $length, $encoding); } + function mb_str_split(?string $string, ?int $length = 1, ?string $encoding = null): array { return p\Mbstring::mb_str_split((string) $string, (int) $length, $encoding); } } if (extension_loaded('mbstring')) { diff --git a/vendor/symfony/var-dumper/Caster/DateCaster.php b/vendor/symfony/var-dumper/Caster/DateCaster.php index 6b264c7..171fbde 100644 --- a/vendor/symfony/var-dumper/Caster/DateCaster.php +++ b/vendor/symfony/var-dumper/Caster/DateCaster.php @@ -92,7 +92,7 @@ class DateCaster if (\PHP_VERSION_ID >= 70107) { // see https://bugs.php.net/74639 foreach (clone $p as $i => $d) { if (self::PERIOD_LIMIT === $i) { - $now = new \DateTimeImmutable(); + $now = new \DateTimeImmutable('now', new \DateTimeZone('UTC')); $dates[] = sprintf('%s more', ($end = $p->getEndDate()) ? ceil(($end->format('U.u') - $d->format('U.u')) / ((int) $now->add($p->getDateInterval())->format('U.u') - (int) $now->format('U.u'))) : $p->recurrences - $i diff --git a/vendor/symfony/var-dumper/Caster/ReflectionCaster.php b/vendor/symfony/var-dumper/Caster/ReflectionCaster.php index 8d5f428..95c1dbf 100644 --- a/vendor/symfony/var-dumper/Caster/ReflectionCaster.php +++ b/vendor/symfony/var-dumper/Caster/ReflectionCaster.php @@ -96,11 +96,20 @@ class ReflectionCaster { $prefix = Caster::PREFIX_VIRTUAL; - $a += [ - $prefix.'name' => $c instanceof \ReflectionNamedType ? $c->getName() : (string) $c, - $prefix.'allowsNull' => $c->allowsNull(), - $prefix.'isBuiltin' => $c->isBuiltin(), - ]; + if ($c instanceof \ReflectionNamedType || \PHP_VERSION_ID < 80000) { + $a += [ + $prefix.'name' => $c instanceof \ReflectionNamedType ? $c->getName() : (string) $c, + $prefix.'allowsNull' => $c->allowsNull(), + $prefix.'isBuiltin' => $c->isBuiltin(), + ]; + } elseif ($c instanceof \ReflectionUnionType) { + $a[$prefix.'allowsNull'] = $c->allowsNull(); + self::addMap($a, $c, [ + 'types' => 'getTypes', + ]); + } else { + $a[$prefix.'allowsNull'] = $c->allowsNull(); + } return $a; } @@ -377,7 +386,7 @@ class ReflectionCaster } } - private static function addMap(array &$a, \Reflector $c, array $map, string $prefix = Caster::PREFIX_VIRTUAL) + private static function addMap(array &$a, $c, array $map, string $prefix = Caster::PREFIX_VIRTUAL) { foreach ($map as $k => $m) { if (\PHP_VERSION_ID >= 80000 && 'isDisabled' === $k) { diff --git a/vendor/symfony/var-dumper/Command/ServerDumpCommand.php b/vendor/symfony/var-dumper/Command/ServerDumpCommand.php index c8a61da..b66301b 100644 --- a/vendor/symfony/var-dumper/Command/ServerDumpCommand.php +++ b/vendor/symfony/var-dumper/Command/ServerDumpCommand.php @@ -58,7 +58,7 @@ class ServerDumpCommand extends Command $this ->addOption('format', null, InputOption::VALUE_REQUIRED, sprintf('The output format (%s)', $availableFormats), 'cli') - ->setDescription('Starts a dump server that collects and displays dumps in a single place') + ->setDescription('Start a dump server that collects and displays dumps in a single place') ->setHelp(<<<'EOF' %command.name% starts a dump server that collects and displays dumps in a single place for debugging you application: @@ -95,5 +95,7 @@ EOF $this->server->listen(function (Data $data, array $context, int $clientId) use ($descriptor, $io) { $descriptor->describe($io, $data, $context, $clientId); }); + + return 0; } } diff --git a/vendor/topthink/framework/src/think/App.php b/vendor/topthink/framework/src/think/App.php index 69e9b95..cdcfeb8 100644 --- a/vendor/topthink/framework/src/think/App.php +++ b/vendor/topthink/framework/src/think/App.php @@ -39,7 +39,7 @@ use think\initializer\RegisterService; */ class App extends Container { - const VERSION = '6.0.7'; + const VERSION = '6.0.8'; /** * 应用调试模式 @@ -47,6 +47,12 @@ class App extends Container */ protected $appDebug = false; + /** + * 环境变量标识 + * @var string + */ + protected $envName = ''; + /** * 应用开始时间 * @var float @@ -277,6 +283,18 @@ class App extends Container return $this->namespace; } + /** + * 设置环境变量标识 + * @access public + * @param string $name 环境标识 + * @return $this + */ + public function setEnvName(string $name) + { + $this->envName = $name; + return $this; + } + /** * 获取框架版本 * @access public @@ -395,6 +413,22 @@ class App extends Container return $this->beginMem; } + /** + * 加载环境变量定义 + * @access public + * @param string $envName 环境标识 + * @return void + */ + public function loadEnv(string $envName = ''): void + { + // 加载环境变量 + $envFile = $envName ? $this->rootPath . '.env.' . $envName : $this->rootPath . '.env'; + + if (is_file($envFile)) { + $this->env->load($envFile); + } + } + /** * 初始化应用 * @access public @@ -407,10 +441,7 @@ class App extends Container $this->beginTime = microtime(true); $this->beginMem = memory_get_usage(); - // 加载环境变量 - if (is_file($this->rootPath . '.env')) { - $this->env->load($this->rootPath . '.env'); - } + $this->loadEnv($this->envName); $this->configExt = $this->env->get('config_ext', '.php'); @@ -590,7 +621,7 @@ class App extends Container * 是否运行在命令行下 * @return bool */ - public function runningInConsole() + public function runningInConsole(): bool { return php_sapi_name() === 'cli' || php_sapi_name() === 'phpdbg'; } diff --git a/vendor/topthink/framework/src/think/Request.php b/vendor/topthink/framework/src/think/Request.php index 2787b99..a21976d 100644 --- a/vendor/topthink/framework/src/think/Request.php +++ b/vendor/topthink/framework/src/think/Request.php @@ -869,6 +869,24 @@ class Request implements ArrayAccess return $this->input($this->param, $name, $default, $filter); } + /** + * 获取包含文件在内的请求参数 + * @access public + * @param string|array $name 变量名 + * @param string|array $filter 过滤方法 + * @return mixed + */ + public function all($name = '', $filter = '') + { + $data = array_merge($this->param(), $this->file()); + + if (is_array($name)) { + $data = $this->only($name, $data, $filter); + } + + return $data; + } + /** * 设置路由变量 * @access public diff --git a/vendor/topthink/framework/src/think/Response.php b/vendor/topthink/framework/src/think/Response.php index 2c07f53..a8a61ff 100644 --- a/vendor/topthink/framework/src/think/Response.php +++ b/vendor/topthink/framework/src/think/Response.php @@ -214,7 +214,7 @@ abstract class Response /** * 是否允许请求缓存 * @access public - * @return $this + * @return bool */ public function isAllowCache() { diff --git a/vendor/topthink/framework/src/think/Validate.php b/vendor/topthink/framework/src/think/Validate.php index b7033cc..0788406 100644 --- a/vendor/topthink/framework/src/think/Validate.php +++ b/vendor/topthink/framework/src/think/Validate.php @@ -1591,7 +1591,7 @@ class Validate * @param string $msg 错误信息 * @param mixed $rule 验证规则数据 * @param string $title 字段描述名 - * @return string + * @return string|array */ protected function parseErrorMsg(string $msg, $rule, string $title) { diff --git a/vendor/topthink/framework/src/think/console/input/Argument.php b/vendor/topthink/framework/src/think/console/input/Argument.php index 4fa3e3c..86cca36 100644 --- a/vendor/topthink/framework/src/think/console/input/Argument.php +++ b/vendor/topthink/framework/src/think/console/input/Argument.php @@ -13,14 +13,37 @@ namespace think\console\input; class Argument { - + // 必传参数 const REQUIRED = 1; + + // 可选参数 const OPTIONAL = 2; + + // 数组参数 const IS_ARRAY = 4; + /** + * 参数名 + * @var string + */ private $name; + + /** + * 参数类型 + * @var int + */ private $mode; + + /** + * 参数默认值 + * @var mixed + */ private $default; + + /** + * 参数描述 + * @var string + */ private $description; /** diff --git a/vendor/topthink/framework/src/think/event/LogRecord.php b/vendor/topthink/framework/src/think/event/LogRecord.php new file mode 100644 index 0000000..237468d --- /dev/null +++ b/vendor/topthink/framework/src/think/event/LogRecord.php @@ -0,0 +1,29 @@ + +// +---------------------------------------------------------------------- +namespace think\event; + +/** + * LogRecord事件类 + */ +class LogRecord +{ + /** @var string */ + public $type; + + /** @var string */ + public $message; + + public function __construct($type, $message) + { + $this->type = $type; + $this->message = $message; + } +} diff --git a/vendor/topthink/framework/src/think/log/Channel.php b/vendor/topthink/framework/src/think/log/Channel.php index 505d838..1de96f1 100644 --- a/vendor/topthink/framework/src/think/log/Channel.php +++ b/vendor/topthink/framework/src/think/log/Channel.php @@ -15,6 +15,7 @@ namespace think\log; use Psr\Log\LoggerInterface; use think\contract\LogHandlerInterface; use think\Event; +use think\event\LogRecord; use think\event\LogWrite; class Channel implements LoggerInterface @@ -94,6 +95,9 @@ class Channel implements LoggerInterface if (!empty($msg) || 0 === $msg) { $this->log[$type][] = $msg; + if ($this->event) { + $this->event->trigger(new LogRecord($type, $msg)); + } } if (!$this->lazy || !$lazy) { diff --git a/vendor/topthink/framework/src/think/route/RuleGroup.php b/vendor/topthink/framework/src/think/route/RuleGroup.php index 7b9deea..cd9ddbd 100644 --- a/vendor/topthink/framework/src/think/route/RuleGroup.php +++ b/vendor/topthink/framework/src/think/route/RuleGroup.php @@ -171,7 +171,9 @@ class RuleGroup extends Rule } } - if ($this->miss && in_array($this->miss->getMethod(), ['*', $method])) { + if (!empty($option['dispatcher'])) { + $result = $this->parseRule($request, '', $option['dispatcher'], $url, $option); + } elseif ($this->miss && in_array($this->miss->getMethod(), ['*', $method])) { // 未匹配所有路由的路由规则处理 $result = $this->parseRule($request, '', $this->miss->getRoute(), $url, $this->miss->getOption()); } else { @@ -244,6 +246,11 @@ class RuleGroup extends Rule */ public function parseGroupRule($rule): void { + if (is_string($rule) && is_subclass_of($rule, Dispatch::class)) { + $this->dispatcher($rule); + return; + } + $origin = $this->router->getGroup(); $this->router->setGroup($this); @@ -466,6 +473,17 @@ class RuleGroup extends Rule return $this->setOption('merge_rule_regex', $merge); } + /** + * 设置分组的Dispatch调度 + * @access public + * @param string $dispatch 调度类 + * @return $this + */ + public function dispatcher(string $dispatch) + { + return $this->setOption('dispatcher', $dispatch); + } + /** * 获取完整分组Name * @access public diff --git a/vendor/topthink/framework/src/think/session/driver/File.php b/vendor/topthink/framework/src/think/session/driver/File.php index 1a0734e..788f323 100644 --- a/vendor/topthink/framework/src/think/session/driver/File.php +++ b/vendor/topthink/framework/src/think/session/driver/File.php @@ -98,7 +98,7 @@ class File implements SessionHandlerInterface /** @var SplFileInfo $item */ foreach ($items as $item) { if ($item->isDir() && !$item->isLink()) { - yield from$this->findFiles($item->getPathname(), $filter); + yield from $this->findFiles($item->getPathname(), $filter); } else { if ($filter($item)) { yield $item; diff --git a/vendor/topthink/think-orm/.gitattributes b/vendor/topthink/think-orm/.gitattributes new file mode 100644 index 0000000..36c9cd1 --- /dev/null +++ b/vendor/topthink/think-orm/.gitattributes @@ -0,0 +1,3 @@ +/.github export-ignore +/tests export-ignore +/phpunit.xml export-ignore \ No newline at end of file diff --git a/vendor/topthink/think-orm/composer.json b/vendor/topthink/think-orm/composer.json index 1a5b9e4..5e86ac8 100644 --- a/vendor/topthink/think-orm/composer.json +++ b/vendor/topthink/think-orm/composer.json @@ -15,14 +15,28 @@ "require": { "php": ">=7.1.0", "ext-json": "*", + "ext-pdo": "*", "psr/simple-cache": "^1.0", "psr/log": "~1.0", "topthink/think-helper":"^3.1" }, + "require-dev": { + "phpunit/phpunit": "^7|^8|^9.5" + }, "autoload": { "psr-4": { "think\\": "src" }, - "files": [] + "files": [ + "stubs/load_stubs.php" + ] + }, + "autoload-dev": { + "psr-4": { + "tests\\": "tests" + } + }, + "config": { + "sort-packages": true } } diff --git a/vendor/topthink/think-orm/src/DbManager.php b/vendor/topthink/think-orm/src/DbManager.php index 414706a..147d9f6 100644 --- a/vendor/topthink/think-orm/src/DbManager.php +++ b/vendor/topthink/think-orm/src/DbManager.php @@ -92,8 +92,6 @@ class DbManager */ protected function modelMaker() { - $this->triggerSql(); - Model::setDb($this); if (is_object($this->event)) { @@ -122,26 +120,8 @@ class DbManager * @access protected * @return void */ - protected function triggerSql(): void - { - // 监听SQL - $this->listen(function ($sql, $time, $master) { - if (0 === strpos($sql, 'CONNECT:')) { - $this->log($sql); - return; - } - - // 记录SQL - if (is_bool($master)) { - // 分布式记录当前操作的主从 - $master = $master ? 'master|' : 'slave|'; - } else { - $master = ''; - } - - $this->log($sql . ' [ ' . $master . 'RunTime:' . $time . 's ]'); - }); - } + public function triggerSql(): void + {} /** * 初始化配置参数 diff --git a/vendor/topthink/think-orm/src/Model.php b/vendor/topthink/think-orm/src/Model.php index 15f5c1e..041ec81 100644 --- a/vendor/topthink/think-orm/src/Model.php +++ b/vendor/topthink/think-orm/src/Model.php @@ -266,8 +266,6 @@ abstract class Model implements JsonSerializable, ArrayAccess, Arrayable, Jsonab */ public function newInstance(array $data = [], $where = null): Model { - $this->readDataType($data); - $model = new static($data); if ($this->connection) { @@ -457,6 +455,7 @@ abstract class Model implements JsonSerializable, ArrayAccess, Arrayable, Jsonab if ($this->exists) { $this->data = $this->db()->find($this->getKey())->getData(); $this->origin = $this->data; + $this->get = []; if ($relation) { $this->relation = []; @@ -544,7 +543,7 @@ abstract class Model implements JsonSerializable, ArrayAccess, Arrayable, Jsonab // 重新记录原始数据 $this->origin = $this->data; - $this->set = []; + $this->get = []; $this->lazySave = false; return true; @@ -611,12 +610,10 @@ abstract class Model implements JsonSerializable, ArrayAccess, Arrayable, Jsonab return true; } - $data = $this->writeDataType($data); - if ($this->autoWriteTimestamp && $this->updateTime) { // 自动写入更新时间 $data[$this->updateTime] = $this->autoWriteTimestamp(); - $this->data[$this->updateTime] = $data[$this->updateTime]; + $this->data[$this->updateTime] = $this->getTimestampValue($data[$this->updateTime]); } // 检查允许字段 @@ -670,23 +667,25 @@ abstract class Model implements JsonSerializable, ArrayAccess, Arrayable, Jsonab */ protected function insertData(string $sequence = null): bool { - // 时间戳自动写入 - if ($this->autoWriteTimestamp) { - if ($this->createTime && !isset($this->data[$this->createTime])) { - $this->data[$this->createTime] = $this->autoWriteTimestamp(); - } - - if ($this->updateTime && !isset($this->data[$this->updateTime])) { - $this->data[$this->updateTime] = $this->autoWriteTimestamp(); - } - } - if (false === $this->trigger('BeforeInsert')) { return false; } $this->checkData(); - $data = $this->writeDataType($this->data); + $data = $this->data; + + // 时间戳自动写入 + if ($this->autoWriteTimestamp) { + if ($this->createTime && !isset($data[$this->createTime])) { + $data[$this->createTime] = $this->autoWriteTimestamp(); + $this->data[$this->createTime] = $this->getTimestampValue($data[$this->createTime]); + } + + if ($this->updateTime && !isset($data[$this->updateTime])) { + $data[$this->updateTime] = $this->autoWriteTimestamp(); + $this->data[$this->updateTime] = $this->getTimestampValue($data[$this->updateTime]); + } + } // 检查允许字段 $allowFields = $this->checkAllowFields(); @@ -705,6 +704,7 @@ abstract class Model implements JsonSerializable, ArrayAccess, Arrayable, Jsonab $pk = $this->getPk(); if (is_string($pk) && (!isset($this->data[$pk]) || '' == $this->data[$pk])) { + unset($this->get[$pk]); $this->data[$pk] = $result; } } @@ -717,6 +717,7 @@ abstract class Model implements JsonSerializable, ArrayAccess, Arrayable, Jsonab // 标记数据已经存在 $this->exists = true; + $this->origin = $this->data; // 新增回调 $this->trigger('AfterInsert'); @@ -963,7 +964,9 @@ abstract class Model implements JsonSerializable, ArrayAccess, Arrayable, Jsonab */ public function __unset(string $name): void { - unset($this->data[$name], $this->relation[$name]); + unset($this->data[$name], + $this->get[$name], + $this->relation[$name]); } // ArrayAccess diff --git a/vendor/topthink/think-orm/src/db/BaseQuery.php b/vendor/topthink/think-orm/src/db/BaseQuery.php index 65b2d2d..ef2d3fd 100644 --- a/vendor/topthink/think-orm/src/db/BaseQuery.php +++ b/vendor/topthink/think-orm/src/db/BaseQuery.php @@ -266,11 +266,11 @@ abstract class BaseQuery /** * 得到某个列的数组 * @access public - * @param string $field 字段名 多个字段用逗号分隔 + * @param string|array $field 字段名 多个字段用逗号分隔 * @param string $key 索引 * @return array */ - public function column(string $field, string $key = ''): array + public function column($field, string $key = ''): array { return $this->connection->column($this, $field, $key); } @@ -1163,10 +1163,6 @@ abstract class BaseQuery $this->parseView($options); } - if (!isset($options['field'])) { - $options['field'] = '*'; - } - foreach (['data', 'order', 'join', 'union'] as $name) { if (!isset($options[$name])) { $options[$name] = []; diff --git a/vendor/topthink/think-orm/src/db/Builder.php b/vendor/topthink/think-orm/src/db/Builder.php index c807f82..73244f4 100644 --- a/vendor/topthink/think-orm/src/db/Builder.php +++ b/vendor/topthink/think-orm/src/db/Builder.php @@ -136,7 +136,7 @@ abstract class Builder } if (empty($fields)) { - if ('*' == $options['field']) { + if (empty($options['field']) || '*' == $options['field']) { $fields = array_keys($bind); } else { $fields = $options['field']; @@ -490,7 +490,7 @@ abstract class Builder // 字段分析 $key = $field ? $this->parseKey($query, $field, true) : ''; - list($exp, $value) = $val; + [$exp, $value] = $val; // 检测操作符 if (!is_string($exp)) { @@ -756,6 +756,9 @@ abstract class Builder $value = $this->parseRaw($query, $value); } else { $value = array_unique(is_array($value) ? $value : explode(',', $value)); + if (count($value) === 0) { + return 'IN' == $exp ? '0 = 1' : '1 = 1'; + } $array = []; foreach ($value as $v) { @@ -766,8 +769,7 @@ abstract class Builder if (count($array) == 1) { return $key . ('IN' == $exp ? ' = ' : ' <> ') . $array[0]; } else { - $zone = implode(',', $array); - $value = empty($zone) ? "''" : $zone; + $value = implode(',', $array); } } @@ -898,7 +900,7 @@ abstract class Builder $array[] = $this->parseRand($query); } elseif (is_string($val)) { if (is_numeric($key)) { - list($key, $sort) = explode(' ', strpos($val, ' ') ? $val : $val . ' '); + [$key, $sort] = explode(' ', strpos($val, ' ') ? $val : $val . ' '); } else { $sort = $val; } @@ -1123,7 +1125,7 @@ abstract class Builder $this->parseTable($query, $options['table']), $this->parseDistinct($query, $options['distinct']), $this->parseExtra($query, $options['extra']), - $this->parseField($query, $options['field']), + $this->parseField($query, $options['field'] ?? '*'), $this->parseJoin($query, $options['join']), $this->parseWhere($query, $options['where']), $this->parseGroup($query, $options['group']), @@ -1185,7 +1187,7 @@ abstract class Builder $bind = $query->getFieldsBindType(); // 获取合法的字段 - if ('*' == $options['field']) { + if (empty($options['field']) || '*' == $options['field']) { $allowFields = array_keys($bind); } else { $allowFields = $options['field']; diff --git a/vendor/topthink/think-orm/src/db/Connection.php b/vendor/topthink/think-orm/src/db/Connection.php index cb6a912..aa86ba8 100644 --- a/vendor/topthink/think-orm/src/db/Connection.php +++ b/vendor/topthink/think-orm/src/db/Connection.php @@ -138,7 +138,6 @@ abstract class Connection implements ConnectionInterface return $this->builder; } - /** * 创建查询对象 */ @@ -234,19 +233,35 @@ abstract class Connection implements ConnectionInterface protected function trigger(string $sql = '', bool $master = false): void { $listen = $this->db->getListen(); - - if (!empty($listen)) { - $runtime = number_format((microtime(true) - $this->queryStartTime), 6); - $sql = $sql ?: $this->getLastsql(); - - if (empty($this->config['deploy'])) { - $master = null; - } - - foreach ($listen as $callback) { - if (is_callable($callback)) { - $callback($sql, $runtime, $master); + if (empty($listen)) { + $listen[] = function ($sql, $time, $master) { + if (0 === strpos($sql, 'CONNECT:')) { + $this->db->log($sql); + return; } + + // 记录SQL + if (is_bool($master)) { + // 分布式记录当前操作的主从 + $master = $master ? 'master|' : 'slave|'; + } else { + $master = ''; + } + + $this->db->log($sql . ' [ ' . $master . 'RunTime:' . $time . 's ]'); + }; + } + + $runtime = number_format((microtime(true) - $this->queryStartTime), 6); + $sql = $sql ?: $this->getLastsql(); + + if (empty($this->config['deploy'])) { + $master = null; + } + + foreach ($listen as $callback) { + if (is_callable($callback)) { + $callback($sql, $runtime, $master); } } } @@ -275,7 +290,7 @@ abstract class Connection implements ConnectionInterface protected function getCacheKey(BaseQuery $query, string $method = ''): string { if (!empty($query->getOptions('key')) && empty($method)) { - $key = 'think:' . $this->getConfig('database') . '.' . $query->getTable() . '|' . $query->getOptions('key'); + $key = 'think_' . $this->getConfig('database') . '.' . $query->getTable() . '|' . $query->getOptions('key'); } else { $key = $query->getQueryGuid(); } diff --git a/vendor/topthink/think-orm/src/db/ConnectionInterface.php b/vendor/topthink/think-orm/src/db/ConnectionInterface.php index 207a424..18fe131 100644 --- a/vendor/topthink/think-orm/src/db/ConnectionInterface.php +++ b/vendor/topthink/think-orm/src/db/ConnectionInterface.php @@ -145,11 +145,11 @@ interface ConnectionInterface * 得到某个列的数组 * @access public * @param BaseQuery $query 查询对象 - * @param string $column 字段名 多个字段用逗号分隔 + * @param string|array $column 字段名 多个字段用逗号分隔 * @param string $key 索引 * @return array */ - public function column(BaseQuery $query, string $column, string $key = ''): array; + public function column(BaseQuery $query, $column, string $key = ''): array; /** * 执行数据库事务 diff --git a/vendor/topthink/think-orm/src/db/PDOConnection.php b/vendor/topthink/think-orm/src/db/PDOConnection.php index eabd423..0a51c0c 100644 --- a/vendor/topthink/think-orm/src/db/PDOConnection.php +++ b/vendor/topthink/think-orm/src/db/PDOConnection.php @@ -18,9 +18,14 @@ use PDOStatement; use think\db\exception\BindParamException; use think\db\exception\DbException; use think\db\exception\PDOException; +use think\Model; /** * 数据库连接基础类 + * @property PDO[] $links + * @property PDO $linkID + * @property PDO $linkRead + * @property PDO $linkWrite */ abstract class PDOConnection extends Connection { @@ -169,6 +174,26 @@ abstract class PDOConnection extends Connection 'Error writing data to the connection', 'Resource deadlock avoided', 'failed with errno', + 'child connection forced to terminate due to client_idle_limit', + 'query_wait_timeout', + 'reset by peer', + 'Physical connection is not usable', + 'TCP Provider: Error code 0x68', + 'ORA-03114', + 'Packets out of order. Expected', + 'Adaptive Server connection failed', + 'Communication link failure', + 'connection is no longer usable', + 'Login timeout expired', + 'SQLSTATE[HY000] [2002] Connection refused', + 'running with the --read-only option so it cannot execute this statement', + 'The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection.', + 'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Try again', + 'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known', + 'SQLSTATE[HY000]: General error: 7 SSL SYSCALL error: EOF detected', + 'SQLSTATE[HY000] [2002] Connection timed out', + 'SSL: Connection timed out', + 'SQLSTATE[HY000]: General error: 1105 The last transaction was aborted due to Seamless Scaling. Please retry.', ]; /** @@ -580,7 +605,7 @@ abstract class PDOConnection extends Connection /** * 获取PDO对象 * @access public - * @return \PDO|false + * @return PDO|false */ public function getPdo() { @@ -594,12 +619,13 @@ abstract class PDOConnection extends Connection /** * 执行查询 使用生成器返回数据 * @access public - * @param BaseQuery $query 查询对象 - * @param string $sql sql指令 - * @param array $bind 参数绑定 - * @param \think\Model $model 模型对象实例 - * @param array $condition 查询条件 + * @param BaseQuery $query 查询对象 + * @param string $sql sql指令 + * @param array $bind 参数绑定 + * @param Model|null $model 模型对象实例 + * @param null $condition 查询条件 * @return \Generator + * @throws DbException */ public function getCursor(BaseQuery $query, string $sql, array $bind = [], $model = null, $condition = null) { @@ -618,12 +644,11 @@ abstract class PDOConnection extends Connection /** * 执行查询 返回数据集 * @access public - * @param string $sql sql指令 - * @param array $bind 参数绑定 + * @param string $sql sql指令 + * @param array $bind 参数绑定 * @param bool $master 主库读取 * @return array - * @throws BindParamException - * @throws \PDOException + * @throws DbException */ public function query(string $sql, array $bind = [], bool $master = false): array { @@ -636,8 +661,7 @@ abstract class PDOConnection extends Connection * @param string $sql sql指令 * @param array $bind 参数绑定 * @return int - * @throws BindParamException - * @throws \PDOException + * @throws DbException */ public function execute(string $sql, array $bind = []): int { @@ -647,15 +671,12 @@ abstract class PDOConnection extends Connection /** * 执行查询 返回数据集 * @access protected - * @param BaseQuery $query 查询对象 - * @param mixed $sql sql指令 - * @param array $bind 参数绑定 + * @param BaseQuery $query 查询对象 + * @param mixed $sql sql指令 + * @param array $bind 参数绑定 * @param bool $master 主库读取 * @return array - * @throws BindParamException - * @throws \PDOException - * @throws \Exception - * @throws \Throwable + * @throws DbException */ protected function pdoQuery(BaseQuery $query, $sql, array $bind = [], bool $master = null): array { @@ -703,6 +724,7 @@ abstract class PDOConnection extends Connection * @access public * @param BaseQuery $query 查询对象 * @return \PDOStatement + * @throws DbException */ public function pdo(BaseQuery $query): PDOStatement { @@ -721,10 +743,7 @@ abstract class PDOConnection extends Connection * @param bool $master 是否在主服务器读操作 * @param bool $procedure 是否为存储过程调用 * @return PDOStatement - * @throws BindParamException - * @throws \PDOException - * @throws \Exception - * @throws \Throwable + * @throws DbException */ public function getPDOStatement(string $sql, array $bind = [], bool $master = false, bool $procedure = false): PDOStatement { @@ -759,9 +778,17 @@ abstract class PDOConnection extends Connection return $this->PDOStatement; } catch (\Throwable | \Exception $e) { - if ($this->reConnectTimes < 4 && $this->isBreak($e)) { - ++$this->reConnectTimes; - return $this->close()->getPDOStatement($sql, $bind, $master, $procedure); + if ($this->transTimes > 0) { + // 事务活动中时不应该进行重试,应直接中断执行,防止造成污染。 + if ($this->isBreak($e)) { + // 尝试对事务计数进行重置 + $this->transTimes = 0; + } + } else { + if ($this->reConnectTimes < 4 && $this->isBreak($e)) { + ++$this->reConnectTimes; + return $this->close()->getPDOStatement($sql, $bind, $master, $procedure); + } } if ($e instanceof \PDOException) { @@ -780,10 +807,7 @@ abstract class PDOConnection extends Connection * @param array $bind 参数绑定 * @param bool $origin 是否原生查询 * @return int - * @throws BindParamException - * @throws \PDOException - * @throws \Exception - * @throws \Throwable + * @throws DbException */ protected function pdoExecute(BaseQuery $query, string $sql, array $bind = [], bool $origin = false): int { @@ -815,6 +839,13 @@ abstract class PDOConnection extends Connection return $this->numRows; } + /** + * @param BaseQuery $query + * @param string $sql + * @param array $bind + * @return PDOStatement + * @throws DbException + */ protected function queryPDOStatement(BaseQuery $query, string $sql, array $bind = []): PDOStatement { $options = $query->getOptions(); @@ -1135,12 +1166,12 @@ abstract class PDOConnection extends Connection /** * 得到某个列的数组 * @access public - * @param BaseQuery $query 查询对象 - * @param string $column 字段名 多个字段用逗号分隔 - * @param string $key 索引 + * @param BaseQuery $query 查询对象 + * @param string|array $column 字段名 多个字段用逗号分隔 + * @param string $key 索引 * @return array */ - public function column(BaseQuery $query, string $column, string $key = ''): array + public function column(BaseQuery $query, $column, string $key = ''): array { $options = $query->parseOptions(); @@ -1148,13 +1179,27 @@ abstract class PDOConnection extends Connection $query->removeOption('field'); } - if ($key && '*' != $column) { - $field = $key . ',' . $column; - } else { - $field = $column; + if (empty($key) || trim($key) === '') { + $key = null; } - $field = array_map('trim', explode(',', $field)); + if (\is_string($column)) { + $column = \trim($column); + if ('*' !== $column) { + $column = \array_map('\trim', \explode(',', $column)); + } + } elseif (\is_array($column)) { + if (\in_array('*', $column)) { + $column = '*'; + } + } else { + throw new DbException('not support type'); + } + + $field = $column; + if ('*' !== $column && $key && !\in_array($key, $column)) { + $field[] = $key; + } $query->setOption('field', $field); @@ -1178,32 +1223,30 @@ abstract class PDOConnection extends Connection } // 执行查询操作 - $pdo = $this->getPDOStatement($sql, $query->getBind(), $options['master']); - + $pdo = $this->getPDOStatement($sql, $query->getBind(), $options['master']); $resultSet = $pdo->fetchAll(PDO::FETCH_ASSOC); + if (is_string($key) && strpos($key, '.')) { + [$alias, $key] = explode('.', $key); + } + if (empty($resultSet)) { $result = []; - } elseif (('*' == $column || strpos($column, ',')) && $key) { - $result = array_column($resultSet, null, $key); + } elseif ('*' !== $column && \count($column) === 1) { + $column = \array_shift($column); + if (\strpos($column, ' ')) { + $column = \substr(\strrchr(\trim($column), ' '), 1); + } + + if (\strpos($column, '.')) { + [$alias, $column] = \explode('.', $column); + } + + $result = \array_column($resultSet, $column, $key); + } elseif ($key) { + $result = \array_column($resultSet, null, $key); } else { - if (empty($key)) { - $key = null; - } - - if ('*' == $column || strpos($column, ',')) { - $column = null; - } elseif (strpos($column, ' ')) { - $column = substr(strrchr(trim($column), ' '), 1); - } elseif (strpos($column, '.')) { - [$alias, $column] = explode('.', $column); - } - - if (is_string($key) && strpos($key, '.')) { - [$alias, $key] = explode('.', $key); - } - - $result = array_column($resultSet, $column, $key); + $result = $resultSet; } if (isset($cacheItem)) { @@ -1225,19 +1268,19 @@ abstract class PDOConnection extends Connection public function getRealSql(string $sql, array $bind = []): string { foreach ($bind as $key => $val) { - $value = is_array($val) ? $val[0] : $val; + $value = strval(is_array($val) ? $val[0] : $val); $type = is_array($val) ? $val[1] : PDO::PARAM_STR; - if ((self::PARAM_FLOAT == $type || PDO::PARAM_STR == $type) && is_string($value)) { + if (self::PARAM_FLOAT == $type || PDO::PARAM_STR == $type) { $value = '\'' . addslashes($value) . '\''; } elseif (PDO::PARAM_INT == $type && '' === $value) { - $value = 0; + $value = '0'; } // 判断占位符 $sql = is_numeric($key) ? - substr_replace($sql, (string) $value, strpos($sql, '?'), 1) : - substr_replace($sql, (string) $value, strpos($sql, ':' . $key), strlen(':' . $key)); + substr_replace($sql, $value, strpos($sql, '?'), 1) : + substr_replace($sql, $value, strpos($sql, ':' . $key), strlen(':' . $key)); } return rtrim($sql); @@ -1404,12 +1447,16 @@ abstract class PDOConnection extends Connection ); } $this->reConnectTimes = 0; - } catch (\Exception $e) { - if ($this->reConnectTimes < 4 && $this->isBreak($e)) { + } catch (\Throwable | \Exception $e) { + if ($this->transTimes === 1 && $this->reConnectTimes < 4 && $this->isBreak($e)) { --$this->transTimes; ++$this->reConnectTimes; $this->close()->startTrans(); } else { + if ($this->isBreak($e)) { + // 尝试对事务计数进行重置 + $this->transTimes = 0; + } throw $e; } } @@ -1419,7 +1466,7 @@ abstract class PDOConnection extends Connection * 用于非自动提交状态下面的查询提交 * @access public * @return void - * @throws PDOException + * @throws \PDOException */ public function commit(): void { @@ -1436,7 +1483,7 @@ abstract class PDOConnection extends Connection * 事务回滚 * @access public * @return void - * @throws PDOException + * @throws \PDOException */ public function rollback(): void { @@ -1523,6 +1570,7 @@ abstract class PDOConnection extends Connection $this->linkWrite = null; $this->linkRead = null; $this->links = []; + $this->transTimes = 0; $this->free(); diff --git a/vendor/topthink/think-orm/src/db/builder/Mysql.php b/vendor/topthink/think-orm/src/db/builder/Mysql.php index 10c8d1d..136b0de 100644 --- a/vendor/topthink/think-orm/src/db/builder/Mysql.php +++ b/vendor/topthink/think-orm/src/db/builder/Mysql.php @@ -89,7 +89,7 @@ class Mysql extends Builder $this->parsePartition($query, $options['partition']), $this->parseDistinct($query, $options['distinct']), $this->parseExtra($query, $options['extra']), - $this->parseField($query, $options['field']), + $this->parseField($query, $options['field'] ?? '*'), $this->parseJoin($query, $options['join']), $this->parseWhere($query, $options['where']), $this->parseGroup($query, $options['group']), @@ -155,7 +155,7 @@ class Mysql extends Builder $bind = $query->getFieldsBindType(); // 获取合法的字段 - if ('*' == $options['field']) { + if (empty($options['field']) || '*' == $options['field']) { $allowFields = array_keys($bind); } else { $allowFields = $options['field']; diff --git a/vendor/topthink/think-orm/src/db/connector/Mongo.php b/vendor/topthink/think-orm/src/db/connector/Mongo.php index ec39939..4b05b79 100644 --- a/vendor/topthink/think-orm/src/db/connector/Mongo.php +++ b/vendor/topthink/think-orm/src/db/connector/Mongo.php @@ -29,9 +29,14 @@ use think\db\builder\Mongo as Builder; use think\db\Connection; use think\db\exception\DbException as Exception; use think\db\Mongo as Query; +use function implode; +use function is_array; /** * Mongo数据库驱动 + * @property Manager[] $links + * @property Manager $linkRead + * @property Manager $linkWrite */ class Mongo extends Connection { @@ -969,11 +974,12 @@ class Mongo extends Connection /** * 得到某个列的数组 * @access public - * @param string $field 字段名 多个字段用逗号分隔 - * @param string $key 索引 + * @param BaseQuery $query + * @param string|array $field 字段名 多个字段用逗号分隔 + * @param string $key 索引 * @return array */ - public function column(BaseQuery $query, string $field, string $key = ''): array + public function column(BaseQuery $query, $field, string $key = ''): array { $options = $query->parseOptions(); @@ -981,6 +987,9 @@ class Mongo extends Connection $query->removeOption('projection'); } + if (is_array($field)) { + $field = implode(',', $field); + } if ($key && '*' != $field) { $projection = $key . ',' . $field; } else { diff --git a/vendor/topthink/think-orm/src/db/exception/DbException.php b/vendor/topthink/think-orm/src/db/exception/DbException.php index 7d1deaa..f68b21c 100644 --- a/vendor/topthink/think-orm/src/db/exception/DbException.php +++ b/vendor/topthink/think-orm/src/db/exception/DbException.php @@ -12,99 +12,33 @@ declare (strict_types = 1); namespace think\db\exception; -use Exception; +use think\Exception; /** * Database相关异常处理类 */ -if (class_exists('think\Exception')) { - class DbException extends \think\Exception +class DbException extends Exception +{ + /** + * DbException constructor. + * @access public + * @param string $message + * @param array $config + * @param string $sql + * @param int $code + */ + public function __construct(string $message, array $config = [], string $sql = '', int $code = 10500) { - /** - * DbException constructor. - * @access public - * @param string $message - * @param array $config - * @param string $sql - * @param int $code - */ - public function __construct(string $message, array $config = [], string $sql = '', int $code = 10500) - { - $this->message = $message; - $this->code = $code; + $this->message = $message; + $this->code = $code; - $this->setData('Database Status', [ - 'Error Code' => $code, - 'Error Message' => $message, - 'Error SQL' => $sql, - ]); + $this->setData('Database Status', [ + 'Error Code' => $code, + 'Error Message' => $message, + 'Error SQL' => $sql, + ]); - unset($config['username'], $config['password']); - $this->setData('Database Config', $config); - } - } -} else { - - class DbException extends Exception - { - /** - * DbException constructor. - * @access public - * @param string $message - * @param array $config - * @param string $sql - * @param int $code - */ - public function __construct(string $message, array $config = [], string $sql = '', int $code = 10500) - { - $this->message = $message; - $this->code = $code; - - $this->setData('Database Status', [ - 'Error Code' => $code, - 'Error Message' => $message, - 'Error SQL' => $sql, - ]); - - unset($config['username'], $config['password']); - $this->setData('Database Config', $config); - } - - /** - * 保存异常页面显示的额外Debug数据 - * @var array - */ - protected $data = []; - - /** - * 设置异常额外的Debug数据 - * 数据将会显示为下面的格式 - * - * Exception Data - * -------------------------------------------------- - * Label 1 - * key1 value1 - * key2 value2 - * Label 2 - * key1 value1 - * key2 value2 - * - * @param string $label 数据分类,用于异常页面显示 - * @param array $data 需要显示的数据,必须为关联数组 - */ - final protected function setData($label, array $data) - { - $this->data[$label] = $data; - } - - /** - * 获取异常额外Debug数据 - * 主要用于输出到异常页面便于调试 - * @return array 由setData设置的Debug数据 - */ - final public function getData() - { - return $this->data; - } + unset($config['username'], $config['password']); + $this->setData('Database Config', $config); } } diff --git a/vendor/topthink/think-orm/src/facade/Db.php b/vendor/topthink/think-orm/src/facade/Db.php index 174a4f0..b0296c6 100644 --- a/vendor/topthink/think-orm/src/facade/Db.php +++ b/vendor/topthink/think-orm/src/facade/Db.php @@ -11,62 +11,7 @@ namespace think\facade; -if (class_exists('think\Facade')) { - class Facade extends \think\Facade - {} -} else { - class Facade - { - /** - * 始终创建新的对象实例 - * @var bool - */ - protected static $alwaysNewInstance; - - protected static $instance; - - /** - * 获取当前Facade对应类名 - * @access protected - * @return string - */ - protected static function getFacadeClass() - {} - - /** - * 创建Facade实例 - * @static - * @access protected - * @param bool $newInstance 是否每次创建新的实例 - * @return object - */ - protected static function createFacade(bool $newInstance = false) - { - $class = static::getFacadeClass() ?: 'think\DbManager'; - - if (static::$alwaysNewInstance) { - $newInstance = true; - } - - if ($newInstance) { - return new $class(); - } - - if (!self::$instance) { - self::$instance = new $class(); - } - - return self::$instance; - - } - - // 调用实际类的方法 - public static function __callStatic($method, $params) - { - return call_user_func_array([static::createFacade(), $method], $params); - } - } -} +use think\Facade; /** * @see \think\DbManager diff --git a/vendor/topthink/think-orm/src/model/Collection.php b/vendor/topthink/think-orm/src/model/Collection.php index fd54272..f017e32 100644 --- a/vendor/topthink/think-orm/src/model/Collection.php +++ b/vendor/topthink/think-orm/src/model/Collection.php @@ -117,6 +117,21 @@ class Collection extends BaseCollection return $this; } + /** + * 设置模型输出场景 + * @access public + * @param string $scene 场景名称 + * @return $this + */ + public function scene(string $scene) + { + $this->each(function (Model $model) use ($scene) { + $model->scene($scene); + }); + + return $this; + } + /** * 设置父模型 * @access public diff --git a/vendor/topthink/think-orm/src/model/concern/Attribute.php b/vendor/topthink/think-orm/src/model/concern/Attribute.php index abf79a8..8f6f918 100644 --- a/vendor/topthink/think-orm/src/model/concern/Attribute.php +++ b/vendor/topthink/think-orm/src/model/concern/Attribute.php @@ -95,10 +95,10 @@ trait Attribute protected $strict = true; /** - * 修改器执行记录 + * 获取器数据 * @var array */ - private $set = []; + private $get = []; /** * 动态获取器 @@ -262,11 +262,13 @@ trait Attribute return $this->origin; } - return array_key_exists($name, $this->origin) ? $this->origin[$name] : null; + $fieldName = $this->getRealFieldName($name); + + return array_key_exists($fieldName, $this->origin) ? $this->origin[$fieldName] : null; } /** - * 获取对象原始数据 如果不存在指定字段返回false + * 获取当前对象数据 如果不存在指定字段返回false * @access public * @param string $name 字段名 留空获取全部 * @return mixed @@ -326,6 +328,7 @@ trait Attribute $name = $this->getRealFieldName($name); $this->data[$name] = $value; + unset($this->get[$name]); } /** @@ -354,10 +357,6 @@ trait Attribute { $name = $this->getRealFieldName($name); - if (isset($this->set[$name])) { - return; - } - // 检测修改器 $method = 'set' . Str::studly($name) . 'Attr'; @@ -366,14 +365,17 @@ trait Attribute $value = $this->$method($value, array_merge($this->data, $data)); - $this->set[$name] = true; if (is_null($value) && $array !== $this->data) { return; } + } elseif (isset($this->type[$name])) { + // 类型转换 + $value = $this->writeTransform($value, $this->type[$name]); } // 设置数据对象属性 $this->data[$name] = $value; + unset($this->get[$name]); } /** @@ -479,8 +481,12 @@ trait Attribute { // 检测属性获取器 $fieldName = $this->getRealFieldName($name); - $method = 'get' . Str::studly($name) . 'Attr'; + if (array_key_exists($fieldName, $this->get)) { + return $this->get[$fieldName]; + } + + $method = 'get' . Str::studly($name) . 'Attr'; if (isset($this->withAttr[$fieldName])) { if ($relation) { $value = $this->getRelationValue($relation); @@ -498,54 +504,22 @@ trait Attribute } $value = $this->$method($value, $this->data); + } elseif (isset($this->type[$fieldName])) { + // 类型转换 + $value = $this->readTransform($value, $this->type[$fieldName]); + } elseif ($this->autoWriteTimestamp && in_array($fieldName, [$this->createTime, $this->updateTime])) { + $value = $this->getTimestampValue($value); } elseif ($relation) { $value = $this->getRelationValue($relation); // 保存关联对象值 $this->relation[$name] = $value; } + $this->get[$fieldName] = $value; + return $value; } - /** - * 读取数据类型处理 - * @access protected - * @param array $data 数据 - * @return void - */ - protected function readDataType(array &$data): void - { - foreach ($data as $name => &$value) { - if (isset($this->type[$name])) { - // 类型转换 - $value = $this->readTransform($value, $this->type[$name]); - } elseif ($this->autoWriteTimestamp && in_array($name, [$this->createTime, $this->updateTime])) { - $value = $this->getTimestampValue($value); - } - } - } - - /** - * 写入数据类型处理 - * @access protected - * @param array $data 数据 - * @return array - */ - protected function writeDataType(array $data): array - { - foreach ($data as $name => &$value) { - if (isset($this->type[$name])) { - // 类型转换 - $value = $this->writeTransform($value, $this->type[$name]); - } elseif (is_null($value) && $this->autoWriteTimestamp && in_array($name, [$this->createTime, $this->updateTime])) { - // 自动写入的时间戳字段 - $value = $this->autoWriteTimestamp(); - } - } - - return $data; - } - /** * 获取JSON字段属性值 * @access protected diff --git a/vendor/topthink/think-orm/src/model/concern/Conversion.php b/vendor/topthink/think-orm/src/model/concern/Conversion.php index bc1bec2..35d96d0 100644 --- a/vendor/topthink/think-orm/src/model/concern/Conversion.php +++ b/vendor/topthink/think-orm/src/model/concern/Conversion.php @@ -42,6 +42,12 @@ trait Conversion */ protected $append = []; + /** + * 场景 + * @var array + */ + protected $scene = []; + /** * 数据输出字段映射 * @var array @@ -85,6 +91,26 @@ trait Conversion return $this; } + /** + * 设置输出层场景 + * @access public + * @param string $scene 场景名称 + * @return $this + */ + public function scene(string $scene) + { + if (isset($this->scene[$scene])) { + $data = $this->scene[$scene]; + foreach (['append', 'hidden', 'visible'] as $name) { + if (isset($data[$name])) { + $this->$name($data[$name]); + } + } + } + + return $this; + } + /** * 设置附加关联对象的属性 * @access public @@ -255,11 +281,11 @@ trait Conversion $value = $this->getAttr($name); $item[$name] = $value; - $this->getBindAttr($name, $value, $item); + $this->getBindAttrValue($name, $value, $item); } } - protected function getBindAttr(string $name, $value, array &$item = []) + protected function getBindAttrValue(string $name, $value, array &$item = []) { $relation = $this->isRelationAttr($name); if (!$relation) { diff --git a/vendor/topthink/think-orm/src/model/concern/RelationShip.php b/vendor/topthink/think-orm/src/model/concern/RelationShip.php index f3da1c4..33c1b89 100644 --- a/vendor/topthink/think-orm/src/model/concern/RelationShip.php +++ b/vendor/topthink/think-orm/src/model/concern/RelationShip.php @@ -136,7 +136,7 @@ trait RelationShip public function relationQuery(array $relations, array $withRelationAttr = []): void { foreach ($relations as $key => $relation) { - $subRelation = ''; + $subRelation = []; $closure = null; if ($relation instanceof Closure) { @@ -161,7 +161,7 @@ trait RelationShip $relationResult->withAttr($withRelationAttr[$relationName]); } - $this->relation[$relation] = $relationResult->getRelation($subRelation, $closure); + $this->relation[$relation] = $relationResult->getRelation((array) $subRelation, $closure); } } @@ -810,19 +810,20 @@ trait RelationShip /** * 自动关联数据删除(支持一对一及一对多关联) * @access protected + * @param bool $force 强制删除 * @return void */ - protected function autoRelationDelete(): void + protected function autoRelationDelete($force = false): void { foreach ($this->relationWrite as $key => $name) { $name = is_numeric($key) ? $name : $key; $result = $this->getRelation($name, true); if ($result instanceof Model) { - $result->delete(); + $result->force($force)->delete(); } elseif ($result instanceof Collection) { foreach ($result as $model) { - $model->delete(); + $model->force($force)->delete(); } } } diff --git a/vendor/topthink/think-orm/src/model/concern/SoftDelete.php b/vendor/topthink/think-orm/src/model/concern/SoftDelete.php index ce5d392..5a9a56d 100644 --- a/vendor/topthink/think-orm/src/model/concern/SoftDelete.php +++ b/vendor/topthink/think-orm/src/model/concern/SoftDelete.php @@ -107,9 +107,10 @@ trait SoftDelete return false; } - $name = $this->getDeleteTimeField(); + $name = $this->getDeleteTimeField(); + $force = $this->isForce(); - if ($name && !$this->isForce()) { + if ($name && !$force) { // 软删除 $this->set($name, $this->autoWriteTimestamp($name)); @@ -131,7 +132,7 @@ trait SoftDelete // 关联删除 if (!empty($this->relationWrite)) { - $this->autoRelationDelete(); + $this->autoRelationDelete($force); } $this->trigger('AfterDelete'); diff --git a/vendor/topthink/think-orm/src/model/relation/MorphOne.php b/vendor/topthink/think-orm/src/model/relation/MorphOne.php index 6789c76..bc89c0b 100644 --- a/vendor/topthink/think-orm/src/model/relation/MorphOne.php +++ b/vendor/topthink/think-orm/src/model/relation/MorphOne.php @@ -41,6 +41,12 @@ class MorphOne extends Relation */ protected $type; + /** + * 绑定的关联属性 + * @var array + */ + protected $bindAttr = []; + /** * 构造函数 * @access public @@ -78,6 +84,11 @@ class MorphOne extends Relation $relationModel = $this->query->relation($subRelation)->find(); if ($relationModel) { + if (!empty($this->bindAttr)) { + // 绑定关联属性 + $this->bindAttr($this->parent, $relationModel); + } + $relationModel->setParent(clone $this->parent); } @@ -154,7 +165,13 @@ class MorphOne extends Relation $relationModel->exists(true); } - $result->setRelation($relation, $relationModel); + if (!empty($this->bindAttr)) { + // 绑定关联属性 + $this->bindAttr($result, $relationModel); + } else { + // 设置关联属性 + $result->setRelation($relation, $relationModel); + } } } } @@ -188,7 +205,13 @@ class MorphOne extends Relation $relationModel = null; } - $result->setRelation($relation, $relationModel); + if (!empty($this->bindAttr)) { + // 绑定关联属性 + $this->bindAttr($result, $relationModel); + } else { + // 设置关联属性 + $result->setRelation($relation, $relationModel); + } } } @@ -277,4 +300,48 @@ class MorphOne extends Relation } } + /** + * 绑定关联表的属性到父模型属性 + * @access public + * @param array $attr 要绑定的属性列表 + * @return $this + */ + public function bind(array $attr) + { + $this->bindAttr = $attr; + + return $this; + } + + /** + * 获取绑定属性 + * @access public + * @return array + */ + public function getBindAttr(): array + { + return $this->bindAttr; + } + + /** + * 绑定关联属性到父模型 + * @access protected + * @param Model $result 父模型对象 + * @param Model $model 关联模型对象 + * @return void + * @throws Exception + */ + protected function bindAttr(Model $result, Model $model = null): void + { + foreach ($this->bindAttr as $key => $attr) { + $key = is_numeric($key) ? $attr : $key; + $value = $result->getOrigin($key); + + if (!is_null($value)) { + throw new Exception('bind attr has exists:' . $key); + } + + $result->setAttr($key, $model ? $model->$attr : null); + } + } } diff --git a/vendor/topthink/think-orm/stubs/Exception.php b/vendor/topthink/think-orm/stubs/Exception.php new file mode 100644 index 0000000..0fdba9c --- /dev/null +++ b/vendor/topthink/think-orm/stubs/Exception.php @@ -0,0 +1,59 @@ + +// +---------------------------------------------------------------------- +declare (strict_types=1); + +namespace think; + +/** + * 异常基础类 + * @package think + */ +class Exception extends \Exception +{ + /** + * 保存异常页面显示的额外Debug数据 + * @var array + */ + protected $data = []; + + /** + * 设置异常额外的Debug数据 + * 数据将会显示为下面的格式 + * + * Exception Data + * -------------------------------------------------- + * Label 1 + * key1 value1 + * key2 value2 + * Label 2 + * key1 value1 + * key2 value2 + * + * @access protected + * @param string $label 数据分类,用于异常页面显示 + * @param array $data 需要显示的数据,必须为关联数组 + */ + final protected function setData(string $label, array $data) + { + $this->data[$label] = $data; + } + + /** + * 获取异常额外Debug数据 + * 主要用于输出到异常页面便于调试 + * @access public + * @return array 由setData设置的Debug数据 + */ + final public function getData() + { + return $this->data; + } +} diff --git a/vendor/topthink/think-orm/stubs/Facade.php b/vendor/topthink/think-orm/stubs/Facade.php new file mode 100644 index 0000000..d801d8b --- /dev/null +++ b/vendor/topthink/think-orm/stubs/Facade.php @@ -0,0 +1,65 @@ + +// +---------------------------------------------------------------------- +declare(strict_types=1); + +namespace think; + +class Facade +{ + /** + * 始终创建新的对象实例 + * @var bool + */ + protected static $alwaysNewInstance; + + protected static $instance; + + /** + * 获取当前Facade对应类名 + * @access protected + * @return string + */ + protected static function getFacadeClass() + {} + + /** + * 创建Facade实例 + * @static + * @access protected + * @param bool $newInstance 是否每次创建新的实例 + * @return object + */ + protected static function createFacade(bool $newInstance = false) + { + $class = static::getFacadeClass() ?: 'think\DbManager'; + + if (static::$alwaysNewInstance) { + $newInstance = true; + } + + if ($newInstance) { + return new $class(); + } + + if (!self::$instance) { + self::$instance = new $class(); + } + + return self::$instance; + + } + + // 调用实际类的方法 + public static function __callStatic($method, $params) + { + return call_user_func_array([static::createFacade(), $method], $params); + } +} diff --git a/vendor/topthink/think-orm/stubs/load_stubs.php b/vendor/topthink/think-orm/stubs/load_stubs.php new file mode 100644 index 0000000..5854cda --- /dev/null +++ b/vendor/topthink/think-orm/stubs/load_stubs.php @@ -0,0 +1,9 @@ + './Data/',//数据库备份路径 + 'part' => 20971520,//数据库备份卷大小 + 'compress' => 0,//数据库备份文件是否启用压缩 0不压缩 1 压缩 + 'level' => 9 //数据库备份文件压缩级别 1普通 4 一般 9最高 +); +~~~ + +### 实例化 +~~~ + $db= new Backup($config); +~~~ + +### 数据类表列表 +~~~ +return $this->fetch('index',['list'=>$db->dataList()]); +~~~ +### 备份文件列表 +~~~ + return $this->fetch('importlist',['list'=>$db->fileList()]); +~~~ + +### 备份表 +~~~ + $start= $db->setFile($file)->backup($tables[$id], $start); +~~~ + +### 导入表 +~~~ + $start= $db->setFile($file)->import($start); +~~~ + +### 删除备份文件 +~~~ + $db->delFile($time); +~~~ + +### 修复表 +~~~ + $db->repair($tables) +~~~ + +### 优化表 +~~~ + $db->optimize($tables) +~~~ diff --git a/vendor/wamkj/thinkphp6.0-databackup/composer.json b/vendor/wamkj/thinkphp6.0-databackup/composer.json new file mode 100644 index 0000000..a5b4f94 --- /dev/null +++ b/vendor/wamkj/thinkphp6.0-databackup/composer.json @@ -0,0 +1,21 @@ +{ + "name": "wamkj/thinkphp6.0-databackup", + "description": "thinkphp6.0的数据库自动备份扩展", + "keywords": ["think-databackup", "thinkphp"], + "license": "Apache-2.0", + "authors": [ + { + "name": "wamkj", + "email": "1149183529@qq.com" + } + ], + "require": { + "php": ">=7.1.0", + "topthink/framework": "^6.0" + }, + "autoload": { + "psr-4": { + "wamkj\\thinkphp\\": "src/" + } + } +} diff --git a/vendor/wamkj/thinkphp6.0-databackup/src/Backup.php b/vendor/wamkj/thinkphp6.0-databackup/src/Backup.php new file mode 100644 index 0000000..03f629b --- /dev/null +++ b/vendor/wamkj/thinkphp6.0-databackup/src/Backup.php @@ -0,0 +1,430 @@ + './Data/',//数据库备份路径 + 'part' => 20971520,//数据库备份卷大小 + 'compress' => 0,//数据库备份文件是否启用压缩 0不压缩 1 压缩 + 'level' => 9 //数据库备份文件压缩级别 1普通 4 一般 9最高 + ); + /** + * 数据库备份构造方法 + * @param array $file 备份或还原的文件信息 + * @param array $config 备份配置信息 + */ + public function __construct($config=[]){ + $this->config = array_merge($this->config, $config); + //初始化文件名 + $this->setFile(); + //初始化数据库连接参数 + $this->setDbConn(); + //检查文件是否可写 + if(!$this->checkPath($this->config['path'])){ + throw new \Exception("The current directory is not writable"); + } + } + + /** + * 设置数据库连接必备参数 + * @param array $dbconfig 数据库连接配置信息 + * @return object + */ + public function setDbConn($dbconfig=[]) + { + if (empty($dbconfig)) { + $this->dbconfig = Config::get('database'); + }else{ + $this->dbconfig=$dbconfig; + } + return $this; + } + /** + * 设置备份文件名 + * @param String $file 文件名字 + * @return object + */ + public function setFile($file=null) + { + if(is_null($file)){ + $this->file=['name'=>date('Ymd-His'),'part'=>1]; + }else{ + if(!array_key_exists("name",$file) && !array_key_exists("part",$file)){ + $this->file=$file['1']; + }else{ + $this->file=$file; + } + + } + return $this; + } + //数据类连接 + public static function connect() + { + return Db::connect(); + } + + //数据库备份文件列表 + public function fileList() + { + if(!is_dir($this->config['path'])){ + mkdir($this->config['path'], 0755, true); + } + $path = realpath($this->config['path']); + $flag = \FilesystemIterator::KEY_AS_FILENAME; + $glob = new \FilesystemIterator($path, $flag); + $list = array(); + foreach ($glob as $name => $file) { + if(preg_match('/^\d{8,8}-\d{6,6}-\d+\.sql(?:\.gz)?$/', $name)){ + $name = sscanf($name, '%4s%2s%2s-%2s%2s%2s-%d'); + + $date = "{$name[0]}-{$name[1]}-{$name[2]}"; + $time = "{$name[3]}:{$name[4]}:{$name[5]}"; + $part = $name[6]; + + if(isset($list["{$date} {$time}"])){ + $info = $list["{$date} {$time}"]; + $info['part'] = max($info['part'], $part); + $info['size'] = $info['size'] + $file->getSize(); + } else { + $info['part'] = $part; + $info['size'] = $file->getSize(); + } + $extension = strtoupper(pathinfo($file->getFilename(), PATHINFO_EXTENSION)); + $info['compress'] = ($extension === 'SQL') ? '-' : $extension; + $info['time'] = strtotime("{$date} {$time}"); + + $list["{$date} {$time}"] = $info; + } + } + + return $list; + } + public function getFile($type='',$time=0) + { // + if(!is_numeric($time) ){ + throw new \Exception("{$time} Illegal data type"); + } + switch ($type) + { + case 'time': + $name = date('Ymd-His', $time) . '-*.sql*'; + $path = realpath($this->config['path']) . DIRECTORY_SEPARATOR . $name; + return glob($path); + break; + case 'timeverif': + $name = date('Ymd-His', $time) . '-*.sql*'; + $path = realpath($this->config['path']) . DIRECTORY_SEPARATOR . $name; + $files = glob($path); + $list = array(); + foreach($files as $name){ + $basename = basename($name); + $match = sscanf($basename, '%4s%2s%2s-%2s%2s%2s-%d'); + $gz = preg_match('/^\d{8,8}-\d{6,6}-\d+\.sql.gz$/', $basename); + $list[$match[6]] = array($match[6], $name, $gz); + } + $last = end($list); + if(count($list) === $last[0]){ + return $list; + } else { + throw new \Exception("File {$files['0']} may be damaged, please check again"); + } + + break; + case 'pathname': + return "{$this->config['path']}{$this->file['name']}-{$this->file['part']}.sql"; + break; + case 'filename': + return "{$this->file['name']}-{$this->file['part']}.sql"; + break; + case 'filepath': + return $this->config['path']; + break; + default: + $arr=array( + 'pathname'=>"{$this->config['path']}{$this->file['name']}-{$this->file['part']}.sql", + 'filename'=>"{$this->file['name']}-{$this->file['part']}.sql", + 'filepath'=>$this->config['path'], + 'file'=>$this->file + ); + return $arr; + } + } + + //删除备份文件 + public function delFile($time) + { + if($time){ + $file=$this->getFile('time',$time); + array_map("unlink", $this->getFile('time',$time)); + if(count( $this->getFile('time',$time) )){ + throw new \Exception("File {$path} deleted failed"); + } else { + return $time; + } + } else { + throw new \Exception("{$time} Time parameter is incorrect"); + } + } + public function import($start){ + //还原数据 + $db = self::connect(); + + if($this->config['compress']){ + $gz = gzopen($this->file[1], 'r'); + $size = 0; + } else { + $size = filesize($this->file[1]); + $gz = fopen($this->file[1], 'r'); + } + + $sql = ''; + if($start){ + $this->config['compress'] ? gzseek($gz, $start) : fseek($gz, $start); + } + for($i = 0; $i < 1000; $i++){ + $sql .= $this->config['compress'] ? gzgets($gz) : fgets($gz); + if(preg_match('/.*;$/', trim($sql))){ + if(false !== $db->execute($sql)){ + $start += strlen($sql); + } else { + return false; + } + $sql = ''; + } elseif ($this->config['compress'] ? gzeof($gz) : feof($gz)) { + return 0; + } + } + + return array($start, $size); + } + + + //数据库表列表 + public function dataList($table=null) + { + $db = self::connect(); + + if(is_null($table)){ + $list = $db->query("SHOW TABLE STATUS"); + }else{ + $list = $db->query("show columns from {$table}"); + } + return array_map('array_change_key_case', $list);//$list; + } + /** + * 写入初始数据 + * @return boolean true - 写入成功,false - 写入失败 + */ + public function Backup_Init(){ + $sql = "-- -----------------------------\n"; + $sql .= "-- Think MySQL Data Transfer \n"; + $sql .= "-- \n"; + $sql .= "-- Host : " .$this->dbconfig['hostname']. "\n"; + $sql .= "-- Port : " .$this->dbconfig['hostport']. "\n"; + $sql .= "-- Database : " .$this->dbconfig['database']. "\n"; + $sql .= "-- \n"; + $sql .= "-- Part : #{$this->file['part']}\n"; + $sql .= "-- Date : " . date("Y-m-d H:i:s") . "\n"; + $sql .= "-- -----------------------------\n\n"; + $sql .= "SET FOREIGN_KEY_CHECKS = 0;\n\n"; + return $this->write($sql); + } + + /** + * 备份表结构 + * @param string $table 表名 + * @param integer $start 起始行数 + * @return boolean false - 备份失败 + */ + public function backup($table, $start){ + + $db = self::connect(); + // 备份表结构 + if(0 == $start){ + $result = $db->query("SHOW CREATE TABLE `{$table}`"); + $sql = "\n"; + $sql .= "-- -----------------------------\n"; + $sql .= "-- Table structure for `{$table}`\n"; + $sql .= "-- -----------------------------\n"; + $sql .= "DROP TABLE IF EXISTS `{$table}`;\n"; + + $sql .= trim($result[0]['Create Table']) . ";\n\n"; + + if(false === $this->write($sql)){ + return false; + } + } + + //数据总数 + $result = $db->query("SELECT COUNT(*) AS count FROM `{$table}`"); + + $count = $result['0']['count']; + + //备份表数据 + if($count){ + //写入数据注释 + if(0 == $start){ + $sql = "-- -----------------------------\n"; + $sql .= "-- Records of `{$table}`\n"; + $sql .= "-- -----------------------------\n"; + $this->write($sql); + } + + //备份数据记录 + $result = $db->query("SELECT * FROM `{$table}` LIMIT {$start}, 1000"); + foreach ($result as $row) { + $row = array_map('addslashes', $row); + $sql = "INSERT INTO `{$table}` VALUES ('" . str_replace(array("\r","\n"),array('\r','\n'),implode("', '", $row)) . "');\n"; + if(false === $this->write($sql)){ + return false; + } + } + + //还有更多数据 + if($count > $start + 1000){ + return array($start + 1000, $count); + } + } + //备份下一表 + return 0; + } + /** + * 优化表 + * @param String $tables 表名 + * @return String $tables + */ + public function optimize($tables = null){ + if($tables) { + $db = self::connect(); + if(is_array($tables)){ + $tables = implode('`,`', $tables); + $list = $db->query("OPTIMIZE TABLE `{$tables}`"); + } else { + $list = $db->query("OPTIMIZE TABLE `{$tables}`"); + } + if($list){ + return $tables; + } else { + throw new \Exception("data sheet'{$tables}'Repair mistakes please try again!"); + } + } else { + throw new \Exception("Please specify the table to be repaired!"); + } + } + /** + * 修复表 + * @param String $tables 表名 + * @return String $tables + */ + public function repair($tables = null){ + if($tables) { + $db = self::connect(); + if(is_array($tables)){ + $tables = implode('`,`', $tables); + $list = $db->query("REPAIR TABLE `{$tables}`"); + } else { + $list = $db->query("REPAIR TABLE `{$tables}`"); + } + if($list){ + return $list; + } else { + throw new \Exception("data sheet'{$tables}'Repair mistakes please try again!"); + } + } else { + throw new \Exception("Please specify the table to be repaired!"); + } + } + + /** + * 写入SQL语句 + * @param string $sql 要写入的SQL语句 + * @return boolean true - 写入成功,false - 写入失败! + */ + private function write($sql){ + $size = strlen($sql); + //由于压缩原因,无法计算出压缩后的长度,这里假设压缩率为50%, + //一般情况压缩率都会高于50%; + $size = $this->config['compress'] ? $size / 2 : $size; + $this->open($size); + return $this->config['compress'] ? @gzwrite($this->fp, $sql) : @fwrite($this->fp, $sql); + } + /** + * 打开一个卷,用于写入数据 + * @param integer $size 写入数据的大小 + */ + private function open($size){ + if($this->fp){ + $this->size += $size; + if($this->size > $this->config['part']){ + $this->config['compress'] ? @gzclose($this->fp) : @fclose($this->fp); + $this->fp = null; + $this->file['part']++; + session('backup_file', $this->file); + $this->create(); + } + } else { + $backuppath = $this->config['path']; + $filename = "{$backuppath}{$this->file['name']}-{$this->file['part']}.sql"; + if($this->config['compress']){ + $filename = "{$filename}.gz"; + $this->fp = @gzopen($filename, "a{$this->config['level']}"); + } else { + $this->fp = @fopen($filename, 'a'); + } + $this->size = filesize($filename) + $size; + } + } + /** + * 检查目录是否可写 + * @param string $path 目录 + * @return boolean + */ + protected function checkPath($path) + { + if (is_dir($path)) { + return true; + } + if (mkdir($path, 0755, true)) { + return true; + } else { + return false; + } + } + /** + * 析构方法,用于关闭文件资源 + */ + public function __destruct(){ + $this->config['compress'] ? @gzclose($this->fp) : @fclose($this->fp); + } + +}