From b0008444cd4930470b1d852ee3f30c8d5a81e21c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Tue, 22 Nov 2022 01:07:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=B9=E6=80=A7=EF=BC=9A=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=BA=BF=E4=B8=8A=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- README.md | 79 +- app/Console/Commands/Panel.php | 45 +- app/Http/Controllers/Api/InfosController.php | 4 + .../Controllers/Api/PluginsController.php | 53 +- app/Models/Setting.php | 3 + app/Models/User.php | 1 + app/Providers/PluginServiceProvider.php | 2 +- composer.json | 1 - composer.lock | 263 +- config/app.php | 2 +- config/panel.php | 4 +- .../2014_10_12_000000_create_users_table.php | 2 +- ...2022_10_14_232217_create_plugins_table.php | 1 - .../Controllers/OpenrestyController.php | 362 +-- plugins/Openresty/plugin.json | 8 +- plugins/Openresty/plugin.php | 64 +- plugins/Openresty/vendor/autoload.php | 12 - .../Openresty/vendor/composer/ClassLoader.php | 572 ---- plugins/Openresty/vendor/composer/LICENSE | 21 - .../vendor/composer/autoload_classmap.php | 11 - .../vendor/composer/autoload_namespaces.php | 9 - .../vendor/composer/autoload_psr4.php | 10 - .../vendor/composer/autoload_real.php | 36 - .../vendor/composer/autoload_static.php | 37 - plugins/Openresty/views/index.blade.php | 560 ++-- public/panel/config.js | 316 +-- public/panel/index.js | 78 +- public/panel/modules/common.js | 70 +- public/panel/modules/console.js | 646 ++--- public/panel/modules/contlist.js | 318 +-- public/panel/modules/forum.js | 238 +- .../panel/modules/layim/res/html/chatlog.html | 192 +- public/panel/modules/layim/res/html/find.html | 88 +- .../panel/modules/layim/res/html/getmsg.json | 142 +- .../panel/modules/layim/res/html/msgbox.html | 440 ++-- public/panel/modules/sample.js | 584 ++--- public/panel/modules/senior.js | 2292 ++++++++--------- public/panel/modules/set.js | 302 +-- public/panel/modules/user.js | 92 +- public/panel/modules/useradmin.js | 356 +-- public/panel/modules/workorder.js | 128 +- public/panel/style/template.css | 356 +-- public/panel/ui/src/css/admin.css | 1042 ++++---- public/panel/ui/src/css/login.css | 100 +- public/panel/ui/src/modules/admin.js | 1732 ++++++------- public/panel/ui/src/modules/index.js | 396 +-- public/panel/ui/src/modules/view.js | 692 ++--- resources/views/plugin.blade.php | 20 +- resources/views/setting.blade.php | 246 +- resources/views/ui/404.blade.php | 28 +- resources/views/ui/error.blade.php | 24 +- routes/api.php | 1 + 53 files changed, 6067 insertions(+), 7016 deletions(-) delete mode 100644 plugins/Openresty/vendor/autoload.php delete mode 100644 plugins/Openresty/vendor/composer/ClassLoader.php delete mode 100644 plugins/Openresty/vendor/composer/LICENSE delete mode 100644 plugins/Openresty/vendor/composer/autoload_classmap.php delete mode 100644 plugins/Openresty/vendor/composer/autoload_namespaces.php delete mode 100644 plugins/Openresty/vendor/composer/autoload_psr4.php delete mode 100644 plugins/Openresty/vendor/composer/autoload_real.php delete mode 100644 plugins/Openresty/vendor/composer/autoload_static.php diff --git a/.gitignore b/.gitignore index 976a5880..bb91596a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ .idea .DS_Store -.vendor +vendor/ diff --git a/README.md b/README.md index bf0ddd92..f1e1f780 100644 --- a/README.md +++ b/README.md @@ -1,66 +1,29 @@ -

Laravel Logo

+耗子Linux面板 +=============== -

-Build Status -Total Downloads -Latest Stable Version -License -

+#### 这是耗子Linux面板的开源仓库,基于AGPLv3协议进行开源,目前处于积极开发状态。 -## About Laravel +## 运行环境 -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: +| 系统 | 版本 | +|---------------|-----| +| CentOS Stream | 9 | +| CentOS Stream | 8 | +| RockyLinux | 9 | +| RockyLinux | 8 | +| AlmaLinux | 9 | +| AlmaLinux | 8 | -- [Simple, fast routing engine](https://laravel.com/docs/routing). -- [Powerful dependency injection container](https://laravel.com/docs/container). -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). -- [Robust background job processing](https://laravel.com/docs/queues). -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). +广告: [`WeAvatar` —统一头像服务](https://weavatar.com) -Laravel is accessible, powerful, and provides tools required for large, robust applications. +## 安装说明 -## Learning Laravel +```shell +wget -O install_panel.sh https://dl.panel.haozi.xyz/shell/install_panel.sh && bash install_panel.sh +``` -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. +## 更新说明 -You may also try the [Laravel Bootcamp](https://bootcamp.laravel.com), where you will be guided through building a modern Laravel application from scratch. - -If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. - -## Laravel Sponsors - -We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). - -### Premium Partners - -- **[Vehikl](https://vehikl.com/)** -- **[Tighten Co.](https://tighten.co)** -- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** -- **[64 Robots](https://64robots.com)** -- **[Cubet Techno Labs](https://cubettech.com)** -- **[Cyber-Duck](https://cyber-duck.co.uk)** -- **[Many](https://www.many.co.uk)** -- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** -- **[DevSquad](https://devsquad.com)** -- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** -- **[OP.GG](https://op.gg)** -- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** -- **[Lendio](https://lendio.com)** - -## Contributing - -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). - -## Code of Conduct - -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). - -## Security Vulnerabilities - -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. - -## License - -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). +```shell +panel update +``` diff --git a/app/Console/Commands/Panel.php b/app/Console/Commands/Panel.php index 1df6dcce..84d2b43e 100644 --- a/app/Console/Commands/Panel.php +++ b/app/Console/Commands/Panel.php @@ -49,6 +49,9 @@ class Panel extends Command case 'writePluginUnInstall': $this->writePluginUnInstall(); break; + case 'writeMysqlPassword': + $this->writeMysqlPassword(); + break; default: $this->error('错误的操作'); break; @@ -67,6 +70,12 @@ class Panel extends Command Setting::query()->updateOrCreate(['name' => 'monitor_days'], ['value' => '30']); Setting::query()->updateOrCreate(['name' => 'mysql_root_password'], ['value' => '']); Setting::query()->updateOrCreate(['name' => 'postgresql_root_password'], ['value' => '']); + User::query()->create([ + 'id' => 1, + 'username' => 'admin', + 'email' => 'panel@haozi.net', + 'password' => Hash::make(Str::random()), + ]); } /** @@ -113,20 +122,11 @@ class Panel extends Command // 生成唯一信息 $username = Str::random(6); $password = Str::random(12); - // 判空 - if (empty($user)) { - User::query()->create([ - 'id' => 1, - 'username' => $username, - 'password' => Hash::make($password), - ]); - } else { - // 入库 - $user->update([ - 'username' => $username, - 'password' => Hash::make($password), - ]); - } + // 入库 + $user->update([ + 'username' => $username, + 'password' => Hash::make($password), + ]); $this->info('面板用户名:'.$username); $this->info('面板密码:'.$password); @@ -175,4 +175,21 @@ class Panel extends Command Plugin::query()->where('slug', $pluginSlug)->delete(); $this->info('成功'); } + + /** + * 写入MySQL密码 + */ + private function writeMysqlPassword(): void + { + $password = $this->argument('a1'); + + // 判空 + if (empty($password)) { + $this->error('参数错误'); + return; + } + // 入库 + Setting::query()->where('name', 'mysql_root_password')->update(['value' => $password]); + $this->info('成功'); + } } diff --git a/app/Http/Controllers/Api/InfosController.php b/app/Http/Controllers/Api/InfosController.php index 8e045a45..63a4f190 100644 --- a/app/Http/Controllers/Api/InfosController.php +++ b/app/Http/Controllers/Api/InfosController.php @@ -249,6 +249,10 @@ class InfosController extends Controller $res['data'] = []; } else { $plugins = $plugins->toArray(); + $plugins = array_map(function ($item) { + $item['name'] = PLUGINS[$item['slug']]['name']; + return $item; + }, $plugins); $res['code'] = 0; $res['msg'] = 'success'; $res['data'] = $plugins; diff --git a/app/Http/Controllers/Api/PluginsController.php b/app/Http/Controllers/Api/PluginsController.php index 8095db3d..5db15a6d 100644 --- a/app/Http/Controllers/Api/PluginsController.php +++ b/app/Http/Controllers/Api/PluginsController.php @@ -47,7 +47,8 @@ class PluginsController extends Controller $data['data'][$k]['control']['installed'] = true; $data['data'][$k]['control']['allow_uninstall'] = true; // 判断是否有更新 - $data['data'][$k]['control']['update'] = version_compare($v['version'], $data['data'][$k]['install_version'], '>'); + $data['data'][$k]['control']['update'] = version_compare($v['version'], + $data['data'][$k]['install_version'], '>'); if ($v['slug'] == 'openresty') { $data['data'][$k]['control']['allow_uninstall'] = false; } @@ -92,7 +93,7 @@ class PluginsController extends Controller } // 判断有无任务记录 - $task_check = Task::query()->where('name', '安装' . $plugin_data['name'])->first(); + $task_check = Task::query()->where('name', '安装'.$plugin_data['name'])->first(); if ($task_check) { $data['code'] = 1; $data['msg'] = '此插件已存在安装记录,请先删除!'; @@ -108,10 +109,10 @@ class PluginsController extends Controller // 入库等待安装 $task = new Task(); - $task->name = '安装' . $plugin_data['name']; + $task->name = '安装'.$plugin_data['name']; $task->shell = $plugin_data['install']; $task->status = 'waiting'; - $task->log = '/tmp/' . $plugin_data['slug'] . '.log'; + $task->log = '/tmp/'.$plugin_data['slug'].'.log'; $task->save(); // 塞入队列 ProcessShell::dispatch($task->id)->delay(1); @@ -156,19 +157,12 @@ class PluginsController extends Controller } // 判断有无任务记录 - $task_check = Task::query()->where('name', '卸载' . $plugin_data['name'])->first(); + $task_check = Task::query()->where('name', '卸载'.$plugin_data['name'])->first(); if ($task_check) { $data['code'] = 1; $data['msg'] = '此插件已存在卸载记录,请先删除!'; return response()->json($data); } - // 判断插件是否未安装 - /*$installed = Task::query()->where('slug', $slug)->first(); - if (!$installed) { - $data['code'] = 1; - $data['msg'] = '插件未安装,无需卸载!'; - return response()->json($data); - }*/ // 判断是否是操作openresty if ($slug == 'openresty') { @@ -179,10 +173,10 @@ class PluginsController extends Controller // 入库等待卸载 $task = new Task(); - $task->name = '卸载' . $plugin_data['name']; + $task->name = '卸载'.$plugin_data['name']; $task->shell = $plugin_data['uninstall']; $task->status = 'waiting'; - $task->log = '/tmp/' . $plugin_data['slug'] . '.log'; + $task->log = '/tmp/'.$plugin_data['slug'].'.log'; $task->save(); // 塞入队列 ProcessShell::dispatch($task->id)->delay(1); @@ -196,12 +190,13 @@ class PluginsController extends Controller /** * 读取插件列表 */ - public function pluginList($cache = true) { + public function pluginList($cache = true) + { // 判断刷新缓存 if (!$cache) { Cache::forget('pluginList'); } - if ( ! Cache::has('pluginList')) { + if (!Cache::has('pluginList')) { return Cache::remember('pluginList', 3600, function () { $response = Http::get('https://api.panel.haozi.xyz/api/plugin/list'); // 判断请求是否成功,如果不成功则抛出异常 @@ -209,7 +204,7 @@ class PluginsController extends Controller throw new Exception('获取插件列表失败,请求错误'); } // 判断返回的JSON数据中code是否为0,如果不为0则抛出异常 - if ( ! $response->json('code') == 0) { + if (!$response->json('code') == 0) { throw new Exception('获取插件列表失败,服务器未返回正确的状态码'); } @@ -220,4 +215,28 @@ class PluginsController extends Controller return Cache::get('pluginList'); } } + + /** + * 设置插件首页显示 + */ + public function setShowHome(Request $request): JsonResponse + { + // 消毒 + try { + $credentials = $this->validate($request, [ + 'slug' => 'required|max:255', + 'show' => 'required|boolean', + ]); + $slug = $credentials['slug']; + $show = $credentials['show']; + } catch (Exception $e) { + return response()->json(['code' => 1, 'msg' => $e->getMessage()]); + } + + Plugin::query()->where('slug', $slug)->update(['show' => $show]); + $res['code'] = 0; + $res['msg'] = 'success'; + $res['data'] = '设置成功'; + return response()->json($res); + } } diff --git a/app/Models/Setting.php b/app/Models/Setting.php index 0fe60afd..0e104773 100644 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -8,4 +8,7 @@ use Illuminate\Database\Eloquent\Model; class Setting extends Model { use HasFactory; + + // 白名单 + protected $fillable = ['name', 'value', 'created_at', 'updated_at']; } diff --git a/app/Models/User.php b/app/Models/User.php index 33fc0c96..cdab044b 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -20,6 +20,7 @@ class User extends Authenticatable protected $fillable = [ 'username', 'password', + 'email' ]; /** diff --git a/app/Providers/PluginServiceProvider.php b/app/Providers/PluginServiceProvider.php index dd7b6502..843cc9a7 100644 --- a/app/Providers/PluginServiceProvider.php +++ b/app/Providers/PluginServiceProvider.php @@ -63,7 +63,7 @@ class PluginServiceProvider extends ServiceProvider { $this->app->singleton('plugins', Plugin::class); // 设置面板名称 - $name = DB::table('settings')->where('name', 'name')->value('value'); + $name = @DB::table('settings')->where('name', 'name')->value('value'); $this->app['config']['panel.name'] = !empty($name) ? $name : config('panel.name'); } } \ No newline at end of file diff --git a/composer.json b/composer.json index 9d94a788..00024ac0 100644 --- a/composer.json +++ b/composer.json @@ -8,7 +8,6 @@ "php": "^8.1.9", "guzzlehttp/guzzle": "^7.2", "laravel/framework": "^9.19", - "laravel/octane": "^1.3", "laravel/sanctum": "^3.0", "laravel/tinker": "^2.7", "overtrue/laravel-lang": "^6.0" diff --git a/composer.lock b/composer.lock index 5680703f..cdaf39d0 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e04515c415a76e849e40b5659911865a", + "content-hash": "efb63260d6e5ee652c84bfee6f458ada", "packages": [ { "name": "brick/math", @@ -897,103 +897,6 @@ ], "time": "2022-10-26T14:07:24+00:00" }, - { - "name": "laminas/laminas-diactoros", - "version": "2.20.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "10696c809866bebd9d71dca14de6c0d6c1cac2f8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/10696c809866bebd9d71dca14de6c0d6c1cac2f8", - "reference": "10696c809866bebd9d71dca14de6c0d6c1cac2f8", - "shasum": "" - }, - "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" - }, - "conflict": { - "zendframework/zend-diactoros": "*" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-curl": "*", - "ext-dom": "*", - "ext-gd": "*", - "ext-libxml": "*", - "http-interop/http-factory-tests": "^0.9.0", - "laminas/laminas-coding-standard": "^2.4.0", - "php-http/psr7-integration-tests": "^1.1.1", - "phpunit/phpunit": "^9.5.25", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.28" - }, - "type": "library", - "extra": { - "laminas": { - "config-provider": "Laminas\\Diactoros\\ConfigProvider", - "module": "Laminas\\Diactoros" - } - }, - "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php", - "src/functions/create_uploaded_file.legacy.php", - "src/functions/marshal_headers_from_sapi.legacy.php", - "src/functions/marshal_method_from_sapi.legacy.php", - "src/functions/marshal_protocol_version_from_sapi.legacy.php", - "src/functions/marshal_uri_from_sapi.legacy.php", - "src/functions/normalize_server.legacy.php", - "src/functions/normalize_uploaded_files.legacy.php", - "src/functions/parse_cookie_header.legacy.php" - ], - "psr-4": { - "Laminas\\Diactoros\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "PSR HTTP Message implementations", - "homepage": "https://laminas.dev", - "keywords": [ - "http", - "laminas", - "psr", - "psr-17", - "psr-7" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-diactoros/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-diactoros/issues", - "rss": "https://github.com/laminas/laminas-diactoros/releases.atom", - "source": "https://github.com/laminas/laminas-diactoros" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2022-10-25T13:35:54+00:00" - }, { "name": "laravel-lang/lang", "version": "10.9.5", @@ -1258,82 +1161,6 @@ }, "time": "2022-11-01T14:05:55+00:00" }, - { - "name": "laravel/octane", - "version": "v1.3.6", - "source": { - "type": "git", - "url": "https://github.com/laravel/octane.git", - "reference": "1e9b86366068a40d59343d400228a5cc6db9e906" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/octane/zipball/1e9b86366068a40d59343d400228a5cc6db9e906", - "reference": "1e9b86366068a40d59343d400228a5cc6db9e906", - "shasum": "" - }, - "require": { - "laminas/laminas-diactoros": "^2.5", - "laravel/framework": "^8.83.26|^9.38.0", - "laravel/serializable-closure": "^1.0", - "nesbot/carbon": "^2.60", - "php": "^8.0", - "symfony/psr-http-message-bridge": "^2.0" - }, - "require-dev": { - "guzzlehttp/guzzle": "^7.2", - "mockery/mockery": "^1.4", - "nunomaduro/collision": "^5.10|^6.0", - "orchestra/testbench": "^6.16|^7.0", - "phpunit/phpunit": "^9.3", - "spiral/roadrunner": "^2.8.2" - }, - "bin": [ - "bin/roadrunner-worker", - "bin/swoole-server" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Octane\\OctaneServiceProvider" - ], - "aliases": { - "Octane": "Laravel\\Octane\\Facades\\Octane" - } - } - }, - "autoload": { - "psr-4": { - "Laravel\\Octane\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Supercharge your Laravel application's performance.", - "keywords": [ - "laravel", - "octane", - "roadrunner", - "swoole" - ], - "support": { - "issues": "https://github.com/laravel/octane/issues", - "source": "https://github.com/laravel/octane" - }, - "time": "2022-11-01T14:55:59+00:00" - }, { "name": "laravel/sanctum", "version": "v3.0.1", @@ -4816,94 +4643,6 @@ ], "time": "2022-06-27T17:24:16+00:00" }, - { - "name": "symfony/psr-http-message-bridge", - "version": "v2.1.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "d444f85dddf65c7e57c58d8e5b3a4dbb593b1840" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/d444f85dddf65c7e57c58d8e5b3a4dbb593b1840", - "reference": "d444f85dddf65c7e57c58d8e5b3a4dbb593b1840", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "psr/http-message": "^1.0", - "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0" - }, - "require-dev": { - "nyholm/psr7": "^1.1", - "psr/log": "^1.1 || ^2 || ^3", - "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0", - "symfony/config": "^4.4 || ^5.0 || ^6.0", - "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0", - "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0", - "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.4@dev || ^6.0" - }, - "suggest": { - "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" - }, - "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-main": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bridge\\PsrHttpMessage\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "PSR HTTP message bridge", - "homepage": "http://symfony.com", - "keywords": [ - "http", - "http-message", - "psr-17", - "psr-7" - ], - "support": { - "issues": "https://github.com/symfony/psr-http-message-bridge/issues", - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-09-05T10:34:54+00:00" - }, { "name": "symfony/routing", "version": "v6.1.7", diff --git a/config/app.php b/config/app.php index 3c3772aa..8722d61d 100644 --- a/config/app.php +++ b/config/app.php @@ -28,7 +28,7 @@ return [ | */ - 'env' => 'production', + 'env' => 'local', /* |-------------------------------------------------------------------------- diff --git a/config/panel.php b/config/panel.php index 16169321..8014f5ae 100644 --- a/config/panel.php +++ b/config/panel.php @@ -1,8 +1,6 @@ '耗子Linux面板', - 'version' => '20221120', + 'version' => '20221121', 'plugin_dir' => '/www/panel/plugins', ]; \ No newline at end of file diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index cf6b7766..0154c490 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -15,7 +15,7 @@ return new class extends Migration { Schema::create('users', function (Blueprint $table) { $table->id(); - $table->string('name'); + $table->string('username'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); diff --git a/database/migrations/2022_10_14_232217_create_plugins_table.php b/database/migrations/2022_10_14_232217_create_plugins_table.php index 9a412e70..0dbb4b7d 100644 --- a/database/migrations/2022_10_14_232217_create_plugins_table.php +++ b/database/migrations/2022_10_14_232217_create_plugins_table.php @@ -16,7 +16,6 @@ return new class extends Migration Schema::create('plugins', function (Blueprint $table) { $table->id(); $table->string('slug')->unique()->comment('插件标识'); - $table->string('name')->comment('插件名称'); $table->boolean('show')->comment('是否首页显示')->nullable(); $table->timestamps(); }); diff --git a/plugins/Openresty/Controllers/OpenrestyController.php b/plugins/Openresty/Controllers/OpenrestyController.php index 052f4665..5f64dc67 100755 --- a/plugins/Openresty/Controllers/OpenrestyController.php +++ b/plugins/Openresty/Controllers/OpenrestyController.php @@ -1,181 +1,181 @@ -json($res); - } - - public function restart() - { - $command = 'nginx -t 2>&1'; - $result = shell_exec($command); - - $res['code'] = 0; - $res['msg'] = 'success'; - if (str_contains($result, 'test failed')) { - // 测试失败,则不允许重启 - $res['msg'] = 'error'; - $res['data'] = 'OpenResty配置有误,请修正后再重启:'.$result; - return response()->json($res); - } - - $command2 = 'systemctl restart nginx'; - $result2 = shell_exec($command2); - if (str_contains($result2, 'done')) { - $res['data'] = 'OpenResty已重启'; - return response()->json($res); - } - return response()->json($res); - } - - public function reload() - { - $command = 'nginx -t 2>&1'; - $result = shell_exec($command); - $res['code'] = 0; - $res['msg'] = 'success'; - if (str_contains($result, 'test failed')) { - // 测试失败,则不允许重载 - $res['msg'] = 'error'; - $res['data'] = 'OpenResty配置有误,请修正后再重载:'.$result; - return response()->json($res); - } - - $command2 = 'systemctl reload nginx'; - $result2 = shell_exec($command2); - if (str_contains($result2, 'done')) { - $res['data'] = 'OpenResty已重载'; - } else { - $res['msg'] = 'error'; - $res['data'] = 'OpenResty重载失败'; - } - return response()->json($res); - } - - public function getConfig() - { - $res['code'] = 0; - $res['msg'] = 'success'; - $res['data'] = file_get_contents('/www/server/nginx/conf/nginx.conf'); - return response()->json($res); - } - - public function saveConfig() - { - $res['code'] = 0; - $res['msg'] = 'success'; - // 获取配置内容 - $config = Request::post('config'); - // 备份一份旧配置 - $old_config = file_get_contents('/www/server/nginx/conf/nginx.conf'); - // 写入配置 - $result = file_put_contents('/www/server/nginx/conf/nginx.conf', $config); - // 测试配置是否正确 - $test = shell_exec('nginx -t 2>&1'); - // 判断结果 - if (!str_contains($test, 'test is successful')) { - // 测试失败,则不允许保存 - $res['msg'] = 'error'; - $res['data'] = 'OpenResty配置有误,请修正后再保存:'.$test; - // 恢复旧配置 - file_put_contents('/www/server/nginx/conf/nginx.conf', $old_config); - return response()->json($res); - } else { - // 测试成功,则重载OpenResty - shell_exec('systemctl reload nginx'); - $res['data'] = 'OpenResty主配置已保存'; - return response()->json($res); - } - } - - public function load() - { - $raw_status = HTTP::get('http://127.0.0.1/nginx_status')->body(); - - $res['code'] = 0; - $res['msg'] = 'success'; - $res['data'][0]['name'] = '工作进程'; - $res['data'][0]['value'] = (int) shell_exec("ps aux|grep nginx|grep 'worker process'|wc -l"); - $res['data'][1]['name'] = '内存占用'; - $res['data'][1]['value'] = round(shell_exec("ps aux|grep nginx|grep 'worker process'|awk '{memsum+=$6};END {print memsum}'") / 1024, - 2).'MB'; - - // 使用正则匹配Active connections: 的值 - preg_match('/Active connections:\s+(\d+)/', $raw_status, $matches); - $res['data'][2]['name'] = '活跃连接数'; - $res['data'][2]['value'] = $matches[1] ?? 0; - // 使用正则分别匹配server accepts handled requests的三个值 - preg_match('/server accepts handled requests\s+(\d+)\s+(\d+)\s+(\d+)/', $raw_status, $matches2); - $res['data'][3]['name'] = '总连接次数'; - $res['data'][3]['value'] = $matches2[1] ?? 0; - $res['data'][4]['name'] = '总握手次数'; - $res['data'][4]['value'] = $matches2[2] ?? 0; - $res['data'][5]['name'] = '总请求次数'; - $res['data'][5]['value'] = $matches2[3] ?? 0; - // 使用正则匹配Reading: 的值 - preg_match('/Reading:\s+(\d+)/', $raw_status, $matches3); - $res['data'][6]['name'] = '请求数'; - $res['data'][6]['value'] = $matches3[1] ?? 0; - // 使用正则匹配Writing: 的值 - preg_match('/Writing:\s+(\d+)/', $raw_status, $matches4); - $res['data'][7]['name'] = '响应数'; - $res['data'][7]['value'] = $matches4[1] ?? 0; - // 使用正则匹配Waiting: 的值 - preg_match('/Waiting:\s+(\d+)/', $raw_status, $matches5); - $res['data'][8]['name'] = '驻留进程'; - $res['data'][8]['value'] = $matches5[1] ?? 0; - - return response()->json($res); - } - - public function errorLog() - { - $res['code'] = 0; - $res['msg'] = 'success'; - $res['data'] = file_get_contents('/www/wwwlogs/nginx_error.log'); - //如果data为换行符,则令返回空 - if ($res['data'] == "\n") { - $res['data'] = ''; - } - return response()->json($res); - } - - public function cleanErrorLog() - { - $res['code'] = 0; - $res['msg'] = 'success'; - shell_exec('echo "" > /www/wwwlogs/nginx_error.log'); - return response()->json($res); - } - -} +json($res); + } + + public function restart() + { + $command = 'nginx -t 2>&1'; + $result = shell_exec($command); + + $res['code'] = 0; + $res['msg'] = 'success'; + if (str_contains($result, 'test failed')) { + // 测试失败,则不允许重启 + $res['msg'] = 'error'; + $res['data'] = 'OpenResty配置有误,请修正后再重启:'.$result; + return response()->json($res); + } + + $command2 = 'systemctl restart nginx'; + $result2 = shell_exec($command2); + if (str_contains($result2, 'done')) { + $res['data'] = 'OpenResty已重启'; + return response()->json($res); + } + return response()->json($res); + } + + public function reload() + { + $command = 'nginx -t 2>&1'; + $result = shell_exec($command); + $res['code'] = 0; + $res['msg'] = 'success'; + if (str_contains($result, 'test failed')) { + // 测试失败,则不允许重载 + $res['msg'] = 'error'; + $res['data'] = 'OpenResty配置有误,请修正后再重载:'.$result; + return response()->json($res); + } + + $command2 = 'systemctl reload nginx'; + $result2 = shell_exec($command2); + if (str_contains($result2, 'done')) { + $res['data'] = 'OpenResty已重载'; + } else { + $res['msg'] = 'error'; + $res['data'] = 'OpenResty重载失败'; + } + return response()->json($res); + } + + public function getConfig() + { + $res['code'] = 0; + $res['msg'] = 'success'; + $res['data'] = file_get_contents('/www/server/nginx/conf/nginx.conf'); + return response()->json($res); + } + + public function saveConfig() + { + $res['code'] = 0; + $res['msg'] = 'success'; + // 获取配置内容 + $config = Request::post('config'); + // 备份一份旧配置 + $old_config = file_get_contents('/www/server/nginx/conf/nginx.conf'); + // 写入配置 + $result = file_put_contents('/www/server/nginx/conf/nginx.conf', $config); + // 测试配置是否正确 + $test = shell_exec('nginx -t 2>&1'); + // 判断结果 + if (!str_contains($test, 'test is successful')) { + // 测试失败,则不允许保存 + $res['msg'] = 'error'; + $res['data'] = 'OpenResty配置有误,请修正后再保存:'.$test; + // 恢复旧配置 + file_put_contents('/www/server/nginx/conf/nginx.conf', $old_config); + return response()->json($res); + } else { + // 测试成功,则重载OpenResty + shell_exec('systemctl reload nginx'); + $res['data'] = 'OpenResty主配置已保存'; + return response()->json($res); + } + } + + public function load() + { + $raw_status = HTTP::get('http://127.0.0.1/nginx_status')->body(); + + $res['code'] = 0; + $res['msg'] = 'success'; + $res['data'][0]['name'] = '工作进程'; + $res['data'][0]['value'] = (int) shell_exec("ps aux|grep nginx|grep 'worker process'|wc -l"); + $res['data'][1]['name'] = '内存占用'; + $res['data'][1]['value'] = round(shell_exec("ps aux|grep nginx|grep 'worker process'|awk '{memsum+=$6};END {print memsum}'") / 1024, + 2).'MB'; + + // 使用正则匹配Active connections: 的值 + preg_match('/Active connections:\s+(\d+)/', $raw_status, $matches); + $res['data'][2]['name'] = '活跃连接数'; + $res['data'][2]['value'] = $matches[1] ?? 0; + // 使用正则分别匹配server accepts handled requests的三个值 + preg_match('/server accepts handled requests\s+(\d+)\s+(\d+)\s+(\d+)/', $raw_status, $matches2); + $res['data'][3]['name'] = '总连接次数'; + $res['data'][3]['value'] = $matches2[1] ?? 0; + $res['data'][4]['name'] = '总握手次数'; + $res['data'][4]['value'] = $matches2[2] ?? 0; + $res['data'][5]['name'] = '总请求次数'; + $res['data'][5]['value'] = $matches2[3] ?? 0; + // 使用正则匹配Reading: 的值 + preg_match('/Reading:\s+(\d+)/', $raw_status, $matches3); + $res['data'][6]['name'] = '请求数'; + $res['data'][6]['value'] = $matches3[1] ?? 0; + // 使用正则匹配Writing: 的值 + preg_match('/Writing:\s+(\d+)/', $raw_status, $matches4); + $res['data'][7]['name'] = '响应数'; + $res['data'][7]['value'] = $matches4[1] ?? 0; + // 使用正则匹配Waiting: 的值 + preg_match('/Waiting:\s+(\d+)/', $raw_status, $matches5); + $res['data'][8]['name'] = '驻留进程'; + $res['data'][8]['value'] = $matches5[1] ?? 0; + + return response()->json($res); + } + + public function errorLog() + { + $res['code'] = 0; + $res['msg'] = 'success'; + $res['data'] = file_get_contents('/www/wwwlogs/nginx_error.log'); + //如果data为换行符,则令返回空 + if ($res['data'] == "\n") { + $res['data'] = ''; + } + return response()->json($res); + } + + public function cleanErrorLog() + { + $res['code'] = 0; + $res['msg'] = 'success'; + shell_exec('echo "" > /www/wwwlogs/nginx_error.log'); + return response()->json($res); + } + +} diff --git a/plugins/Openresty/plugin.json b/plugins/Openresty/plugin.json index a7931235..ba46b391 100755 --- a/plugins/Openresty/plugin.json +++ b/plugins/Openresty/plugin.json @@ -1,5 +1,5 @@ -{ - "name": "OpenResty-1.21.4", - "slug": "openresty", - "version": "1.21.4.1" +{ + "name": "OpenResty-1.21.4", + "slug": "openresty", + "version": "1.21.4.1" } \ No newline at end of file diff --git a/plugins/Openresty/plugin.php b/plugins/Openresty/plugin.php index faeba08b..044e7d0d 100755 --- a/plugins/Openresty/plugin.php +++ b/plugins/Openresty/plugin.php @@ -1,32 +1,32 @@ -group([ - 'prefix' => 'panel/views/plugin/openresty', - //'middleware' => ['auth:sanctum'], -], function () { - Route::view('/', 'openresty::index'); -}); -// 控制器 -app('router')->group([ - 'prefix' => 'api/plugin/openresty', - 'middleware' => ['auth:sanctum'], -], function () { - Route::get('status', [OpenrestyController::class, 'status']); - Route::get('load', [OpenrestyController::class, 'load']); - Route::get('errorLog', [OpenrestyController::class, 'errorLog']); - Route::get('config', [OpenrestyController::class, 'getConfig']); - Route::post('config', [OpenrestyController::class, 'saveConfig']); - Route::get('cleanErrorLog', [OpenrestyController::class, 'cleanErrorLog']); - Route::get('restart', [OpenrestyController::class, 'restart']); - Route::get('reload', [OpenrestyController::class, 'reload']); -}); - +group([ + 'prefix' => 'panel/views/plugin/openresty', + //'middleware' => ['auth:sanctum'], +], function () { + Route::view('/', 'openresty::index'); +}); +// 控制器 +app('router')->group([ + 'prefix' => 'api/plugin/openresty', + 'middleware' => ['auth:sanctum'], +], function () { + Route::get('status', [OpenrestyController::class, 'status']); + Route::get('load', [OpenrestyController::class, 'load']); + Route::get('errorLog', [OpenrestyController::class, 'errorLog']); + Route::get('config', [OpenrestyController::class, 'getConfig']); + Route::post('config', [OpenrestyController::class, 'saveConfig']); + Route::get('cleanErrorLog', [OpenrestyController::class, 'cleanErrorLog']); + Route::get('restart', [OpenrestyController::class, 'restart']); + Route::get('reload', [OpenrestyController::class, 'reload']); +}); + diff --git a/plugins/Openresty/vendor/autoload.php b/plugins/Openresty/vendor/autoload.php deleted file mode 100644 index eb2d0e62..00000000 --- a/plugins/Openresty/vendor/autoload.php +++ /dev/null @@ -1,12 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var ?string */ - private $vendorDir; - - // PSR-4 - /** - * @var array[] - * @psalm-var array> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array[] - * @psalm-var array> - */ - private $prefixDirsPsr4 = array(); - /** - * @var array[] - * @psalm-var array - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * @var array[] - * @psalm-var array> - */ - private $prefixesPsr0 = array(); - /** - * @var array[] - * @psalm-var array - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var string[] - * @psalm-var array - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var bool[] - * @psalm-var array - */ - private $missingClasses = array(); - - /** @var ?string */ - private $apcuPrefix; - - /** - * @var self[] - */ - private static $registeredLoaders = array(); - - /** - * @param ?string $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - } - - /** - * @return string[] - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array[] - * @psalm-return array> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return array[] - * @psalm-return array - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return array[] - * @psalm-return array - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return string[] Array of classname => path - * @psalm-return array - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param string[] $classMap Class to filename map - * @psalm-param array $classMap - * - * @return void - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param string[]|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - public function add($prefix, $paths, $prepend = false) - { - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - (array) $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - (array) $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = (array) $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - (array) $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param string[]|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - (array) $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - (array) $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - (array) $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param string[]|string $paths The PSR-0 base directories - * - * @return void - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param string[]|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - * - * @return void - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - * - * @return void - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - * - * @return void - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - - if (null === $this->vendorDir) { - return; - } - - if ($prepend) { - self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; - } else { - unset(self::$registeredLoaders[$this->vendorDir]); - self::$registeredLoaders[$this->vendorDir] = $this; - } - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - - if (null !== $this->vendorDir) { - unset(self::$registeredLoaders[$this->vendorDir]); - } - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - includeFile($file); - - return true; - } - - return null; - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - /** - * Returns the currently registered loaders indexed by their corresponding vendor directories. - * - * @return self[] - */ - public static function getRegisteredLoaders() - { - return self::$registeredLoaders; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } -} - -/** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - * @private - */ -function includeFile($file) -{ - include $file; -} diff --git a/plugins/Openresty/vendor/composer/LICENSE b/plugins/Openresty/vendor/composer/LICENSE deleted file mode 100644 index f27399a0..00000000 --- a/plugins/Openresty/vendor/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/plugins/Openresty/vendor/composer/autoload_classmap.php b/plugins/Openresty/vendor/composer/autoload_classmap.php deleted file mode 100644 index eea1c748..00000000 --- a/plugins/Openresty/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,11 +0,0 @@ - $vendorDir . '/composer/InstalledVersions.php', - 'Plugins\\Openresty\\Controllers\\OpenrestyController' => $baseDir . '/Controllers/OpenrestyController.php', -); diff --git a/plugins/Openresty/vendor/composer/autoload_namespaces.php b/plugins/Openresty/vendor/composer/autoload_namespaces.php deleted file mode 100644 index 15a2ff3a..00000000 --- a/plugins/Openresty/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,9 +0,0 @@ - array($baseDir . '/'), -); diff --git a/plugins/Openresty/vendor/composer/autoload_real.php b/plugins/Openresty/vendor/composer/autoload_real.php deleted file mode 100644 index 9d878e82..00000000 --- a/plugins/Openresty/vendor/composer/autoload_real.php +++ /dev/null @@ -1,36 +0,0 @@ -register(true); - - return $loader; - } -} diff --git a/plugins/Openresty/vendor/composer/autoload_static.php b/plugins/Openresty/vendor/composer/autoload_static.php deleted file mode 100644 index 5b340f80..00000000 --- a/plugins/Openresty/vendor/composer/autoload_static.php +++ /dev/null @@ -1,37 +0,0 @@ - - array ( - 'Plugins\\Openresty\\' => 18, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'Plugins\\Openresty\\' => - array ( - 0 => __DIR__ . '/../..' . '/', - ), - ); - - public static $classMap = array ( - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - 'Plugins\\Openresty\\Controllers\\OpenrestyController' => __DIR__ . '/../..' . '/Controllers/OpenrestyController.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit196548e96c3717104301399a84972899::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit196548e96c3717104301399a84972899::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit196548e96c3717104301399a84972899::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/plugins/Openresty/views/index.blade.php b/plugins/Openresty/views/index.blade.php index 0b508b87..7328cb96 100755 --- a/plugins/Openresty/views/index.blade.php +++ b/plugins/Openresty/views/index.blade.php @@ -1,281 +1,281 @@ - -OpenResty -
-
-
-
-
OpenResty管理
-
-
-
    -
  • 运行状态
  • -
  • 配置修改
  • -
  • 负载状态
  • -
  • 错误日志
  • -
-
-
-
当前状态:获取中
-
- - - - -
-
-
-
此处修改的是OpenResty主配置文件,如果你不了解各参数的含义,请不要随意修改!
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
-
-
-
-
-
- - \ No newline at end of file diff --git a/public/panel/config.js b/public/panel/config.js index 416cc5f2..60efe66c 100644 --- a/public/panel/config.js +++ b/public/panel/config.js @@ -1,158 +1,158 @@ -/** - * setter - */ - -// 初始化配置 -layui.define(['all'], function(exports){ - exports('setter', { - paths: { // v1.9.0 及以上版本的写法 - core: layui.cache.base + 'ui/src/', // 核心库所在目录 - views: layui.cache.base + 'views/', // 业务视图所在目录 - modules: layui.cache.base + 'modules/', // 业务模块所在目录 - base: layui.cache.base // 记录静态资源所在基础目录 - }, - /* v1.9.0 之前的写法 - views: layui.cache.base + 'views/', // 业务视图所在目录 - base: layui.cache.base, // 记录静态资源所在基础目录 - */ - - container: 'HaoZi_panel', // 容器ID - entry: 'index', // 默认视图文件名 - engine: '', // 视图文件后缀名 - pageTabs: true, // 是否开启页面选项卡功能。单页版不推荐开启 - - name: '加载中...', - tableName: 'haozi_panel', // 本地存储表名 - MOD_NAME: 'admin', // 模块事件名 - - debug: true, // 是否开启调试模式。如开启,接口异常时会抛出异常 URL 等信息 - interceptor: true, // 是否开启未登入拦截 - - // 自定义请求字段 - request: { - tokenName: 'access_token' // 自动携带 token 的字段名。可设置 false 不携带。 - }, - - // 自定义响应字段 - response: { - statusName: 'code', // 数据状态的字段名称 - statusCode: { - ok: 0, // 数据状态一切正常的状态码 - logout: 1001 // 登录状态失效的状态码 - }, - msgName: 'msg', // 状态信息的字段名称 - dataName: 'data' // 数据详情的字段名称 - }, - - // 独立页面路由,可随意添加(无需写参数) - indPage: [ - '/login' //登入页 - ,'/logout' //登出页 - ], - - // 配置业务模块目录中的特殊模块 - extend: { - layim: 'layim/layim' // layim - }, - - // 主题配置 - theme: { - // 内置主题配色方案 - color: [{ - main: '#20222A', // 主题色 - selected: '#009688', // 选中色 - alias: 'default' // 默认别名 - },{ - main: '#03152A', - selected: '#3B91FF', - alias: 'dark-blue' // 藏蓝 - },{ - main: '#2E241B', - selected: '#A48566', - alias: 'coffee' // 咖啡 - },{ - main: '#50314F', - selected: '#7A4D7B', - alias: 'purple-red' // 紫红 - },{ - main: '#344058', - logo: '#1E9FFF', - selected: '#1E9FFF', - alias: 'ocean' // 海洋 - },{ - main: '#3A3D49', - logo: '#2F9688', - selected: '#5FB878', - alias: 'green' // 墨绿 - },{ - main: '#20222A', - logo: '#F78400', - selected: '#F78400', - alias: 'red' // 橙色 - },{ - main: '#28333E', - logo: '#AA3130', - selected: '#AA3130', - alias: 'fashion-red' // 时尚红 - },{ - main: '#24262F', - logo: '#3A3D49', - selected: '#009688', - alias: 'classic-black' // 经典黑 - },{ - logo: '#226A62', - header: '#2F9688', - alias: 'green-header' // 墨绿头 - },{ - main: '#344058', - logo: '#0085E8', - selected: '#1E9FFF', - header: '#1E9FFF', - alias: 'ocean-header' // 海洋头 - },{ - header: '#393D49', - alias: 'classic-black-header' // 经典黑 - },{ - main: '#50314F', - logo: '#50314F', - selected: '#7A4D7B', - header: '#50314F', - alias: 'purple-red-header' // 紫红头 - },{ - main: '#28333E', - logo: '#28333E', - selected: '#AA3130', - header: '#AA3130', - alias: 'fashion-red-header' // 时尚红头 - },{ - main: '#28333E', - logo: '#009688', - selected: '#009688', - header: '#009688', - alias: 'green-header' // 墨绿头 - },{ - main: '#393D49', - logo: '#393D49', - selected: '#009688', - header: '#23262E', - alias: 'Classic-style1' // 经典风格1 - },{ - main: '#001529', - logo: '#001529', - selected: '#1890FF', - header: '#1890FF', - alias: 'Classic-style2' // 经典风格2 - },{ - main: '#25282A', - logo: '#25282A', - selected: '#35BDB2', - header: '#35BDB2', - alias: 'Classic-style3' // 经典风格3 - }], - - // 初始的颜色索引,对应上面的配色方案数组索引 - // 如果本地已经有主题色记录,则以本地记录为优先,除非请求本地数据(localStorage) - initColorIndex: 0 - } - }); -}); +/** + * setter + */ + +// 初始化配置 +layui.define(['all'], function(exports){ + exports('setter', { + paths: { // v1.9.0 及以上版本的写法 + core: layui.cache.base + 'ui/src/', // 核心库所在目录 + views: layui.cache.base + 'views/', // 业务视图所在目录 + modules: layui.cache.base + 'modules/', // 业务模块所在目录 + base: layui.cache.base // 记录静态资源所在基础目录 + }, + /* v1.9.0 之前的写法 + views: layui.cache.base + 'views/', // 业务视图所在目录 + base: layui.cache.base, // 记录静态资源所在基础目录 + */ + + container: 'HaoZi_panel', // 容器ID + entry: 'index', // 默认视图文件名 + engine: '', // 视图文件后缀名 + pageTabs: true, // 是否开启页面选项卡功能。单页版不推荐开启 + + name: '加载中...', + tableName: 'haozi_panel', // 本地存储表名 + MOD_NAME: 'admin', // 模块事件名 + + debug: true, // 是否开启调试模式。如开启,接口异常时会抛出异常 URL 等信息 + interceptor: true, // 是否开启未登入拦截 + + // 自定义请求字段 + request: { + tokenName: 'access_token' // 自动携带 token 的字段名。可设置 false 不携带。 + }, + + // 自定义响应字段 + response: { + statusName: 'code', // 数据状态的字段名称 + statusCode: { + ok: 0, // 数据状态一切正常的状态码 + logout: 1001 // 登录状态失效的状态码 + }, + msgName: 'msg', // 状态信息的字段名称 + dataName: 'data' // 数据详情的字段名称 + }, + + // 独立页面路由,可随意添加(无需写参数) + indPage: [ + '/login' //登入页 + ,'/logout' //登出页 + ], + + // 配置业务模块目录中的特殊模块 + extend: { + layim: 'layim/layim' // layim + }, + + // 主题配置 + theme: { + // 内置主题配色方案 + color: [{ + main: '#20222A', // 主题色 + selected: '#009688', // 选中色 + alias: 'default' // 默认别名 + },{ + main: '#03152A', + selected: '#3B91FF', + alias: 'dark-blue' // 藏蓝 + },{ + main: '#2E241B', + selected: '#A48566', + alias: 'coffee' // 咖啡 + },{ + main: '#50314F', + selected: '#7A4D7B', + alias: 'purple-red' // 紫红 + },{ + main: '#344058', + logo: '#1E9FFF', + selected: '#1E9FFF', + alias: 'ocean' // 海洋 + },{ + main: '#3A3D49', + logo: '#2F9688', + selected: '#5FB878', + alias: 'green' // 墨绿 + },{ + main: '#20222A', + logo: '#F78400', + selected: '#F78400', + alias: 'red' // 橙色 + },{ + main: '#28333E', + logo: '#AA3130', + selected: '#AA3130', + alias: 'fashion-red' // 时尚红 + },{ + main: '#24262F', + logo: '#3A3D49', + selected: '#009688', + alias: 'classic-black' // 经典黑 + },{ + logo: '#226A62', + header: '#2F9688', + alias: 'green-header' // 墨绿头 + },{ + main: '#344058', + logo: '#0085E8', + selected: '#1E9FFF', + header: '#1E9FFF', + alias: 'ocean-header' // 海洋头 + },{ + header: '#393D49', + alias: 'classic-black-header' // 经典黑 + },{ + main: '#50314F', + logo: '#50314F', + selected: '#7A4D7B', + header: '#50314F', + alias: 'purple-red-header' // 紫红头 + },{ + main: '#28333E', + logo: '#28333E', + selected: '#AA3130', + header: '#AA3130', + alias: 'fashion-red-header' // 时尚红头 + },{ + main: '#28333E', + logo: '#009688', + selected: '#009688', + header: '#009688', + alias: 'green-header' // 墨绿头 + },{ + main: '#393D49', + logo: '#393D49', + selected: '#009688', + header: '#23262E', + alias: 'Classic-style1' // 经典风格1 + },{ + main: '#001529', + logo: '#001529', + selected: '#1890FF', + header: '#1890FF', + alias: 'Classic-style2' // 经典风格2 + },{ + main: '#25282A', + logo: '#25282A', + selected: '#35BDB2', + header: '#35BDB2', + alias: 'Classic-style3' // 经典风格3 + }], + + // 初始的颜色索引,对应上面的配色方案数组索引 + // 如果本地已经有主题色记录,则以本地记录为优先,除非请求本地数据(localStorage) + initColorIndex: 0 + } + }); +}); diff --git a/public/panel/index.js b/public/panel/index.js index be84840b..33527182 100644 --- a/public/panel/index.js +++ b/public/panel/index.js @@ -1,40 +1,40 @@ -/** - * 初始化主题入口模块 - */ - -layui.extend({ - setter: 'config' // 将 config.js 扩展到 layui 模块 -}).define(['setter'], function(exports){ - var setter = layui.setter; - - // 将核心库扩展到 layui 模块 - layui.each({ - admin: 'admin', - view: 'view', - adminIndex: 'index' - }, function(modName, fileName){ - var libs = {}; - libs[modName] = '{/}'+ setter.paths.core +'/modules/'+ fileName; - layui.extend(libs); - }); - - // 指定业务模块基础目录 - layui.config({ - base: setter.paths.modules - }); - - // 将业务模块中的特殊模块扩展到 layui 模块 - layui.each(setter.extend, function(key, value){ - var mods = {}; - mods[key] = '{/}' + layui.cache.base + value; - layui.extend(mods); - }); - - // 加载主题核心库入口模块 - layui.use('adminIndex', function(){ - layui.use('common'); // 加载公共业务模块,如不需要可剔除 - - // 输出模块 / 模块加载完毕标志 - exports('index', layui.admin); - }); +/** + * 初始化主题入口模块 + */ + +layui.extend({ + setter: 'config' // 将 config.js 扩展到 layui 模块 +}).define(['setter'], function(exports){ + var setter = layui.setter; + + // 将核心库扩展到 layui 模块 + layui.each({ + admin: 'admin', + view: 'view', + adminIndex: 'index' + }, function(modName, fileName){ + var libs = {}; + libs[modName] = '{/}'+ setter.paths.core +'/modules/'+ fileName; + layui.extend(libs); + }); + + // 指定业务模块基础目录 + layui.config({ + base: setter.paths.modules + }); + + // 将业务模块中的特殊模块扩展到 layui 模块 + layui.each(setter.extend, function(key, value){ + var mods = {}; + mods[key] = '{/}' + layui.cache.base + value; + layui.extend(mods); + }); + + // 加载主题核心库入口模块 + layui.use('adminIndex', function(){ + layui.use('common'); // 加载公共业务模块,如不需要可剔除 + + // 输出模块 / 模块加载完毕标志 + exports('index', layui.admin); + }); }); \ No newline at end of file diff --git a/public/panel/modules/common.js b/public/panel/modules/common.js index ed0354db..40dfea26 100644 --- a/public/panel/modules/common.js +++ b/public/panel/modules/common.js @@ -1,36 +1,36 @@ -/** - * common - */ - -layui.define(function(exports){ - var $ = layui.$ - ,layer = layui.layer - ,laytpl = layui.laytpl - ,setter = layui.setter - ,view = layui.view - ,admin = layui.admin - - //公共业务的逻辑处理可以写在此处,切换任何页面都会执行 - //…… - - - - //退出 - admin.events.logout = function(){ - //执行退出接口 - admin.req({ - url: './res/json/user/logout.js' - ,type: 'get' - ,data: {} - ,done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行 - - //清空本地记录的 token,并跳转到登入页 - admin.exit(); - } - }); - }; - - - //对外暴露的接口 - exports('common', {}); +/** + * common + */ + +layui.define(function(exports){ + var $ = layui.$ + ,layer = layui.layer + ,laytpl = layui.laytpl + ,setter = layui.setter + ,view = layui.view + ,admin = layui.admin + + //公共业务的逻辑处理可以写在此处,切换任何页面都会执行 + //…… + + + + //退出 + admin.events.logout = function(){ + //执行退出接口 + admin.req({ + url: './res/json/user/logout.js' + ,type: 'get' + ,data: {} + ,done: function(res){ //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行 + + //清空本地记录的 token,并跳转到登入页 + admin.exit(); + } + }); + }; + + + //对外暴露的接口 + exports('common', {}); }); \ No newline at end of file diff --git a/public/panel/modules/console.js b/public/panel/modules/console.js index b82426cd..4c0faa98 100644 --- a/public/panel/modules/console.js +++ b/public/panel/modules/console.js @@ -1,324 +1,324 @@ -/** - * console - */ - -layui.define(function(exports){ - - /* - 下面通过 layui.use 分段加载不同的模块,实现不同区域的同时渲染,从而保证视图的快速呈现 - */ - - - //区块轮播切换 - layui.use(['admin', 'carousel'], function(){ - var $ = layui.$ - ,admin = layui.admin - ,carousel = layui.carousel - ,element = layui.element - ,device = layui.device(); - - //轮播切换 - $('.layadmin-carousel').each(function(){ - var othis = $(this); - carousel.render({ - elem: this - ,width: '100%' - ,arrow: 'none' - ,interval: othis.data('interval') - ,autoplay: othis.data('autoplay') === true - ,trigger: (device.ios || device.android) ? 'click' : 'hover' - ,anim: othis.data('anim') - }); - }); - - element.render('progress'); - - }); - - //数据概览 - layui.use(['admin', 'carousel', 'echarts'], function(){ - var $ = layui.$ - ,admin = layui.admin - ,carousel = layui.carousel - ,echarts = layui.echarts; - - var echartsApp = [], options = [ - //今日流量趋势 - { - title: { - text: '今日流量趋势', - x: 'center', - textStyle: { - fontSize: 14 - } - }, - tooltip : { - trigger: 'axis' - }, - legend: { - data:['',''] - }, - xAxis : [{ - type : 'category', - boundaryGap : false, - data: ['06:00','06:30','07:00','07:30','08:00','08:30','09:00','09:30','10:00','11:30','12:00','12:30','13:00','13:30','14:00','14:30','15:00','15:30','16:00','16:30','17:00','17:30','18:00','18:30','19:00','19:30','20:00','20:30','21:00','21:30','22:00','22:30','23:00','23:30'] - }], - yAxis : [{ - type : 'value' - }], - series : [{ - name:'PV', - type:'line', - smooth:true, - itemStyle: {normal: {areaStyle: {type: 'default'}}}, - data: [111,222,333,444,555,777,3333,33333,55555,88888,33333,3333,7777,11888,28888,38888,58888,42222,39999,28888,17777,9777,6555,5555,3333,2222,3111,6999,5888,2777,1777,999,888,777] - },{ - name:'UV', - type:'line', - smooth:true, - itemStyle: {normal: {areaStyle: {type: 'default'}}}, - data: [11,22,33,44,55,66,333,3333,5555,12312,3333,333,777,1188,2777,3888,7777,4222,3999,2888,1777,966,655,555,333,222,311,699,588,277,166,99,88,77] - }] - }, - - /* - //访客浏览器分布 - { - title : { - text: '访客浏览器分布', - x: 'center', - textStyle: { - fontSize: 14 - } - }, - tooltip : { - trigger: 'item', - formatter: "{a}
{b} : {c} ({d}%)" - }, - legend: { - orient : 'vertical', - x : 'left', - data:['Chrome','Firefox','IE 8.0','Safari','其它浏览器'] - }, - series : [{ - name:'访问来源', - type:'pie', - radius : '55%', - center: ['50%', '50%'], - data:[ - {value:9052, name:'Chrome'}, - {value:1610, name:'Firefox'}, - {value:3200, name:'IE 8.0'}, - {value:535, name:'Safari'}, - {value:1700, name:'其它浏览器'} - ] - }] - }, - */ - - //新增的用户量 - { - title: { - text: '最近一周新增的用户量', - x: 'center', - textStyle: { - fontSize: 14 - } - }, - tooltip : { //提示框 - trigger: 'axis', - formatter: "{b}
新增用户:{c}" - }, - xAxis : [{ //X轴 - type : 'category', - data : ['11-07', '11-08', '11-09', '11-10', '11-11', '11-12', '11-13'] - }], - yAxis : [{ //Y轴 - type : 'value' - }], - series : [{ //内容 - type: 'line', - data:[200, 300, 400, 610, 150, 270, 380], - }] - } - ] - ,elemDataView = $('#LAY-index-dataview').children('div') - ,renderDataView = function(index){ - echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme); - echartsApp[index].setOption(options[index]); - //window.onresize = echartsApp[index].resize; - admin.resize(function(){ - echartsApp[index].resize(); - }); - }; - - - //没找到DOM,终止执行 - if(!elemDataView[0]) return; - - - - renderDataView(0); - - //触发数据概览轮播 - var carouselIndex = 0; - carousel.on('change(LAY-index-dataview)', function(obj){ - renderDataView(carouselIndex = obj.index); - }); - - //触发侧边伸缩 - layui.admin.on('side', function(){ - setTimeout(function(){ - renderDataView(carouselIndex); - }, 300); - }); - - //触发路由 - layui.admin.on('hash(tab)', function(){ - layui.router().path.join('') || renderDataView(carouselIndex); - }); - }); - - //地图 - layui.use(['carousel', 'echarts'], function(){ - var $ = layui.$ - ,carousel = layui.carousel - ,echarts = layui.echarts; - - var echartsApp = [], options = [ - { - title : { - text: '访客地区分布', - subtext: '不完全统计' - }, - tooltip : { - trigger: 'item' - }, - dataRange: { - orient: 'horizontal', - min: 0, - max: 60000, - text:['高','低'], - splitNumber:0 - }, - series : [ - { - name: '访客地区分布', - type: 'map', - mapType: 'china', - selectedMode : 'multiple', - itemStyle:{ - normal:{label:{show:true}}, - emphasis:{label:{show:true}} - }, - data:[ - {name:'西藏', value:60}, - {name:'青海', value:167}, - {name:'宁夏', value:210}, - {name:'海南', value:252}, - {name:'甘肃', value:502}, - {name:'贵州', value:570}, - {name:'新疆', value:661}, - {name:'云南', value:8890}, - {name:'重庆', value:10010}, - {name:'吉林', value:5056}, - {name:'山西', value:2123}, - {name:'天津', value:9130}, - {name:'江西', value:10170}, - {name:'广西', value:6172}, - {name:'陕西', value:9251}, - {name:'黑龙江', value:5125}, - {name:'内蒙古', value:1435}, - {name:'安徽', value:9530}, - {name:'北京', value:51919}, - {name:'福建', value:3756}, - {name:'上海', value:59190}, - {name:'湖北', value:37109}, - {name:'湖南', value:8966}, - {name:'四川', value:31020}, - {name:'辽宁', value:7222}, - {name:'河北', value:3451}, - {name:'河南', value:9693}, - {name:'浙江', value:62310}, - {name:'山东', value:39231}, - {name:'江苏', value:35911}, - {name:'广东', value:55891} - ] - } - ] - } - ] - ,elemDataView = $('#LAY-index-pagethree-home').children('div') - ,renderDataView = function(index){ - echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme); - echartsApp[index].setOption(options[index]); - window.onresize = echartsApp[index].resize; - }; - //没找到DOM,终止执行 - if(!elemDataView[0]) return; - - renderDataView(0); - }); - - - //table - layui.use('table', function(){ - var $ = layui.$ - ,table = layui.table; - - //今日热搜 - table.render({ - elem: '#LAY-index-topSearch' - ,url: './res/json/console/top-search.js' //模拟接口 - ,page: true - ,cols: [[ - {type: 'numbers', fixed: 'left'} - ,{field: 'keywords', title: '关键词', minWidth: 300, templet: ''} - ,{field: 'frequency', title: '搜索次数', minWidth: 120, sort: true} - ,{field: 'userNums', title: '用户数', sort: true} - ]] - ,skin: 'line' - }); - - //今日热贴 - table.render({ - elem: '#LAY-index-topCard' - ,url: './res/json/console/top-card.js' //模拟接口 - ,page: true - ,cellMinWidth: 120 - ,cols: [[ - {type: 'numbers', fixed: 'left'} - ,{field: 'title', title: '标题', minWidth: 300, templet: ''} - ,{field: 'username', title: '发帖者'} - ,{field: 'channel', title: '类别'} - ,{field: 'crt', title: '点击率', sort: true} - ]] - ,skin: 'line' - }); - - //项目进展 - table.render({ - elem: '#LAY-home-homepage-console' - ,url: './res/json/console/prograss.js' //模拟接口 - ,cols: [[ - {type: 'checkbox', fixed: 'left'} - ,{field: 'prograss', title: '任务'} - ,{field: 'time', title: '所需时间'} - ,{field: 'complete', title: '完成情况' - ,templet: function(d){ - if(d.complete == '已完成'){ - return ''+ d.complete +'' - }else if(d.complete == '进行中'){ - return ''+ d.complete +'' - }else{ - return ''+ d.complete +'' - } - } - } - ]] - ,skin: 'line' - }); - }); - - exports('console', {}) +/** + * console + */ + +layui.define(function(exports){ + + /* + 下面通过 layui.use 分段加载不同的模块,实现不同区域的同时渲染,从而保证视图的快速呈现 + */ + + + //区块轮播切换 + layui.use(['admin', 'carousel'], function(){ + var $ = layui.$ + ,admin = layui.admin + ,carousel = layui.carousel + ,element = layui.element + ,device = layui.device(); + + //轮播切换 + $('.layadmin-carousel').each(function(){ + var othis = $(this); + carousel.render({ + elem: this + ,width: '100%' + ,arrow: 'none' + ,interval: othis.data('interval') + ,autoplay: othis.data('autoplay') === true + ,trigger: (device.ios || device.android) ? 'click' : 'hover' + ,anim: othis.data('anim') + }); + }); + + element.render('progress'); + + }); + + //数据概览 + layui.use(['admin', 'carousel', 'echarts'], function(){ + var $ = layui.$ + ,admin = layui.admin + ,carousel = layui.carousel + ,echarts = layui.echarts; + + var echartsApp = [], options = [ + //今日流量趋势 + { + title: { + text: '今日流量趋势', + x: 'center', + textStyle: { + fontSize: 14 + } + }, + tooltip : { + trigger: 'axis' + }, + legend: { + data:['',''] + }, + xAxis : [{ + type : 'category', + boundaryGap : false, + data: ['06:00','06:30','07:00','07:30','08:00','08:30','09:00','09:30','10:00','11:30','12:00','12:30','13:00','13:30','14:00','14:30','15:00','15:30','16:00','16:30','17:00','17:30','18:00','18:30','19:00','19:30','20:00','20:30','21:00','21:30','22:00','22:30','23:00','23:30'] + }], + yAxis : [{ + type : 'value' + }], + series : [{ + name:'PV', + type:'line', + smooth:true, + itemStyle: {normal: {areaStyle: {type: 'default'}}}, + data: [111,222,333,444,555,777,3333,33333,55555,88888,33333,3333,7777,11888,28888,38888,58888,42222,39999,28888,17777,9777,6555,5555,3333,2222,3111,6999,5888,2777,1777,999,888,777] + },{ + name:'UV', + type:'line', + smooth:true, + itemStyle: {normal: {areaStyle: {type: 'default'}}}, + data: [11,22,33,44,55,66,333,3333,5555,12312,3333,333,777,1188,2777,3888,7777,4222,3999,2888,1777,966,655,555,333,222,311,699,588,277,166,99,88,77] + }] + }, + + /* + //访客浏览器分布 + { + title : { + text: '访客浏览器分布', + x: 'center', + textStyle: { + fontSize: 14 + } + }, + tooltip : { + trigger: 'item', + formatter: "{a}
{b} : {c} ({d}%)" + }, + legend: { + orient : 'vertical', + x : 'left', + data:['Chrome','Firefox','IE 8.0','Safari','其它浏览器'] + }, + series : [{ + name:'访问来源', + type:'pie', + radius : '55%', + center: ['50%', '50%'], + data:[ + {value:9052, name:'Chrome'}, + {value:1610, name:'Firefox'}, + {value:3200, name:'IE 8.0'}, + {value:535, name:'Safari'}, + {value:1700, name:'其它浏览器'} + ] + }] + }, + */ + + //新增的用户量 + { + title: { + text: '最近一周新增的用户量', + x: 'center', + textStyle: { + fontSize: 14 + } + }, + tooltip : { //提示框 + trigger: 'axis', + formatter: "{b}
新增用户:{c}" + }, + xAxis : [{ //X轴 + type : 'category', + data : ['11-07', '11-08', '11-09', '11-10', '11-11', '11-12', '11-13'] + }], + yAxis : [{ //Y轴 + type : 'value' + }], + series : [{ //内容 + type: 'line', + data:[200, 300, 400, 610, 150, 270, 380], + }] + } + ] + ,elemDataView = $('#LAY-index-dataview').children('div') + ,renderDataView = function(index){ + echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme); + echartsApp[index].setOption(options[index]); + //window.onresize = echartsApp[index].resize; + admin.resize(function(){ + echartsApp[index].resize(); + }); + }; + + + //没找到DOM,终止执行 + if(!elemDataView[0]) return; + + + + renderDataView(0); + + //触发数据概览轮播 + var carouselIndex = 0; + carousel.on('change(LAY-index-dataview)', function(obj){ + renderDataView(carouselIndex = obj.index); + }); + + //触发侧边伸缩 + layui.admin.on('side', function(){ + setTimeout(function(){ + renderDataView(carouselIndex); + }, 300); + }); + + //触发路由 + layui.admin.on('hash(tab)', function(){ + layui.router().path.join('') || renderDataView(carouselIndex); + }); + }); + + //地图 + layui.use(['carousel', 'echarts'], function(){ + var $ = layui.$ + ,carousel = layui.carousel + ,echarts = layui.echarts; + + var echartsApp = [], options = [ + { + title : { + text: '访客地区分布', + subtext: '不完全统计' + }, + tooltip : { + trigger: 'item' + }, + dataRange: { + orient: 'horizontal', + min: 0, + max: 60000, + text:['高','低'], + splitNumber:0 + }, + series : [ + { + name: '访客地区分布', + type: 'map', + mapType: 'china', + selectedMode : 'multiple', + itemStyle:{ + normal:{label:{show:true}}, + emphasis:{label:{show:true}} + }, + data:[ + {name:'西藏', value:60}, + {name:'青海', value:167}, + {name:'宁夏', value:210}, + {name:'海南', value:252}, + {name:'甘肃', value:502}, + {name:'贵州', value:570}, + {name:'新疆', value:661}, + {name:'云南', value:8890}, + {name:'重庆', value:10010}, + {name:'吉林', value:5056}, + {name:'山西', value:2123}, + {name:'天津', value:9130}, + {name:'江西', value:10170}, + {name:'广西', value:6172}, + {name:'陕西', value:9251}, + {name:'黑龙江', value:5125}, + {name:'内蒙古', value:1435}, + {name:'安徽', value:9530}, + {name:'北京', value:51919}, + {name:'福建', value:3756}, + {name:'上海', value:59190}, + {name:'湖北', value:37109}, + {name:'湖南', value:8966}, + {name:'四川', value:31020}, + {name:'辽宁', value:7222}, + {name:'河北', value:3451}, + {name:'河南', value:9693}, + {name:'浙江', value:62310}, + {name:'山东', value:39231}, + {name:'江苏', value:35911}, + {name:'广东', value:55891} + ] + } + ] + } + ] + ,elemDataView = $('#LAY-index-pagethree-home').children('div') + ,renderDataView = function(index){ + echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme); + echartsApp[index].setOption(options[index]); + window.onresize = echartsApp[index].resize; + }; + //没找到DOM,终止执行 + if(!elemDataView[0]) return; + + renderDataView(0); + }); + + + //table + layui.use('table', function(){ + var $ = layui.$ + ,table = layui.table; + + //今日热搜 + table.render({ + elem: '#LAY-index-topSearch' + ,url: './res/json/console/top-search.js' //模拟接口 + ,page: true + ,cols: [[ + {type: 'numbers', fixed: 'left'} + ,{field: 'keywords', title: '关键词', minWidth: 300, templet: '
'} + ,{field: 'frequency', title: '搜索次数', minWidth: 120, sort: true} + ,{field: 'userNums', title: '用户数', sort: true} + ]] + ,skin: 'line' + }); + + //今日热贴 + table.render({ + elem: '#LAY-index-topCard' + ,url: './res/json/console/top-card.js' //模拟接口 + ,page: true + ,cellMinWidth: 120 + ,cols: [[ + {type: 'numbers', fixed: 'left'} + ,{field: 'title', title: '标题', minWidth: 300, templet: ''} + ,{field: 'username', title: '发帖者'} + ,{field: 'channel', title: '类别'} + ,{field: 'crt', title: '点击率', sort: true} + ]] + ,skin: 'line' + }); + + //项目进展 + table.render({ + elem: '#LAY-home-homepage-console' + ,url: './res/json/console/prograss.js' //模拟接口 + ,cols: [[ + {type: 'checkbox', fixed: 'left'} + ,{field: 'prograss', title: '任务'} + ,{field: 'time', title: '所需时间'} + ,{field: 'complete', title: '完成情况' + ,templet: function(d){ + if(d.complete == '已完成'){ + return ''+ d.complete +'' + }else if(d.complete == '进行中'){ + return ''+ d.complete +'' + }else{ + return ''+ d.complete +'' + } + } + } + ]] + ,skin: 'line' + }); + }); + + exports('console', {}) }); \ No newline at end of file diff --git a/public/panel/modules/contlist.js b/public/panel/modules/contlist.js index 15254010..3e72c907 100644 --- a/public/panel/modules/contlist.js +++ b/public/panel/modules/contlist.js @@ -1,160 +1,160 @@ -/** - * 内容系统 demo - */ - -layui.define(['table', 'form'], function(exports){ - var $ = layui.$ - ,admin = layui.admin - ,view = layui.view - ,table = layui.table - ,form = layui.form; - - //文章管理 - table.render({ - elem: '#LAY-app-content-list' - ,url: './res/json/content/list.js' //模拟接口 - ,cols: [[ - {type: 'checkbox', fixed: 'left'} - ,{field: 'id', width: 100, title: '文章ID', sort: true} - ,{field: 'label', title: '文章标签', minWidth: 100} - ,{field: 'title', title: '文章标题'} - ,{field: 'author', title: '作者'} - ,{field: 'uploadtime', title: '上传时间', sort: true} - ,{field: 'status', title: '发布状态', templet: '#buttonTpl', minWidth: 80, align: 'center'} - ,{title: '操作', minWidth: 150, align: 'center', fixed: 'right', toolbar: '#table-content-list'} - ]] - ,page: true - ,limit: 10 - ,limits: [10, 15, 20, 25, 30] - ,text: '对不起,加载出现异常!' - }); - - //工具条 - table.on('tool(LAY-app-content-list)', function(obj){ - var data = obj.data; - if(obj.event === 'del'){ - layer.confirm('确定删除此文章?', function(index){ - obj.del(); - layer.close(index); - }); - } else if(obj.event === 'edit'){ - admin.popup({ - title: '编辑文章' - ,area: ['550px', '550px'] - ,id: 'LAY-popup-content-edit' - ,success: function(layero, index){ - view(this.id).render('app/content/listform', data).done(function(){ - form.render(null, 'layuiadmin-app-form-list'); - - //提交 - form.on('submit(layuiadmin-app-form-submit)', function(data){ - var field = data.field; //获取提交的字段 - - //提交 Ajax 成功后,关闭当前弹层并重载表格 - //$.ajax({}); - layui.table.reload('LAY-app-content-list'); //重载表格 - layer.close(index); //执行关闭 - }); - }); - } - }); - } - }); - - //分类管理 - table.render({ - elem: '#LAY-app-content-tags' - ,url: './res/json/content/tags.js' //模拟接口 - ,cols: [[ - {type: 'numbers', fixed: 'left'} - ,{field: 'id', width: 100, title: 'ID', sort: true} - ,{field: 'tags', title: '分类名', minWidth: 100} - ,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#layuiadmin-app-cont-tagsbar'} - ]] - ,text: '对不起,加载出现异常!' - }); - - //工具条 - table.on('tool(LAY-app-content-tags)', function(obj){ - var data = obj.data; - if(obj.event === 'del'){ - layer.confirm('确定删除此分类?', function(index){ - obj.del(); - layer.close(index); - }); - } else if(obj.event === 'edit'){ - admin.popup({ - title: '编辑分类' - ,area: ['450px', '200px'] - ,id: 'LAY-popup-content-tags' - ,success: function(layero, index){ - view(this.id).render('app/content/tagsform', data).done(function(){ - form.render(null, 'layuiadmin-form-tags'); - - //提交 - form.on('submit(layuiadmin-app-tags-submit)', function(data){ - var field = data.field; //获取提交的字段 - - //提交 Ajax 成功后,关闭当前弹层并重载表格 - //$.ajax({}); - layui.table.reload('LAY-app-content-tags'); //重载表格 - layer.close(index); //执行关闭 - }); - }); - } - }); - } - }); - - //评论管理 - table.render({ - elem: '#LAY-app-content-comm' - ,url: './res/json/content/comment.js' //模拟接口 - ,cols: [[ - {type: 'checkbox', fixed: 'left'} - ,{field: 'id', width: 100, title: 'ID', sort: true} - ,{field: 'reviewers', title: '评论者', minWidth: 100} - ,{field: 'content', title: '评论内容', minWidth: 100} - ,{field: 'commtime', title: '评论时间', minWidth: 100, sort: true} - ,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-content-com'} - ]] - ,page: true - ,limit: 10 - ,limits: [10, 15, 20, 25, 30] - ,text: '对不起,加载出现异常!' - }); - - //工具条 - table.on('tool(LAY-app-content-comm)', function(obj){ - var data = obj.data; - if(obj.event === 'del'){ - layer.confirm('确定删除此条评论?', function(index){ - obj.del(); - layer.close(index); - }); - } else if(obj.event === 'edit'){ - admin.popup({ - title: '编辑评论' - ,area: ['450px', '300px'] - ,id: 'LAY-popup-content-comm' - ,success: function(layero, index){ - view(this.id).render('app/content/contform', data).done(function(){ - form.render(null, 'layuiadmin-form-comment'); - - //提交 - form.on('submit(layuiadmin-app-com-submit)', function(data){ - var field = data.field; //获取提交的字段 - - //提交 Ajax 成功后,关闭当前弹层并重载表格 - //$.ajax({}); - layui.table.reload('LAY-app-content-comm'); //重载表格 - layer.close(index); //执行关闭 - }); - }); - } - }); - } - }); - - exports('contlist', {}) +/** + * 内容系统 demo + */ + +layui.define(['table', 'form'], function(exports){ + var $ = layui.$ + ,admin = layui.admin + ,view = layui.view + ,table = layui.table + ,form = layui.form; + + //文章管理 + table.render({ + elem: '#LAY-app-content-list' + ,url: './res/json/content/list.js' //模拟接口 + ,cols: [[ + {type: 'checkbox', fixed: 'left'} + ,{field: 'id', width: 100, title: '文章ID', sort: true} + ,{field: 'label', title: '文章标签', minWidth: 100} + ,{field: 'title', title: '文章标题'} + ,{field: 'author', title: '作者'} + ,{field: 'uploadtime', title: '上传时间', sort: true} + ,{field: 'status', title: '发布状态', templet: '#buttonTpl', minWidth: 80, align: 'center'} + ,{title: '操作', minWidth: 150, align: 'center', fixed: 'right', toolbar: '#table-content-list'} + ]] + ,page: true + ,limit: 10 + ,limits: [10, 15, 20, 25, 30] + ,text: '对不起,加载出现异常!' + }); + + //工具条 + table.on('tool(LAY-app-content-list)', function(obj){ + var data = obj.data; + if(obj.event === 'del'){ + layer.confirm('确定删除此文章?', function(index){ + obj.del(); + layer.close(index); + }); + } else if(obj.event === 'edit'){ + admin.popup({ + title: '编辑文章' + ,area: ['550px', '550px'] + ,id: 'LAY-popup-content-edit' + ,success: function(layero, index){ + view(this.id).render('app/content/listform', data).done(function(){ + form.render(null, 'layuiadmin-app-form-list'); + + //提交 + form.on('submit(layuiadmin-app-form-submit)', function(data){ + var field = data.field; //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-app-content-list'); //重载表格 + layer.close(index); //执行关闭 + }); + }); + } + }); + } + }); + + //分类管理 + table.render({ + elem: '#LAY-app-content-tags' + ,url: './res/json/content/tags.js' //模拟接口 + ,cols: [[ + {type: 'numbers', fixed: 'left'} + ,{field: 'id', width: 100, title: 'ID', sort: true} + ,{field: 'tags', title: '分类名', minWidth: 100} + ,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#layuiadmin-app-cont-tagsbar'} + ]] + ,text: '对不起,加载出现异常!' + }); + + //工具条 + table.on('tool(LAY-app-content-tags)', function(obj){ + var data = obj.data; + if(obj.event === 'del'){ + layer.confirm('确定删除此分类?', function(index){ + obj.del(); + layer.close(index); + }); + } else if(obj.event === 'edit'){ + admin.popup({ + title: '编辑分类' + ,area: ['450px', '200px'] + ,id: 'LAY-popup-content-tags' + ,success: function(layero, index){ + view(this.id).render('app/content/tagsform', data).done(function(){ + form.render(null, 'layuiadmin-form-tags'); + + //提交 + form.on('submit(layuiadmin-app-tags-submit)', function(data){ + var field = data.field; //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-app-content-tags'); //重载表格 + layer.close(index); //执行关闭 + }); + }); + } + }); + } + }); + + //评论管理 + table.render({ + elem: '#LAY-app-content-comm' + ,url: './res/json/content/comment.js' //模拟接口 + ,cols: [[ + {type: 'checkbox', fixed: 'left'} + ,{field: 'id', width: 100, title: 'ID', sort: true} + ,{field: 'reviewers', title: '评论者', minWidth: 100} + ,{field: 'content', title: '评论内容', minWidth: 100} + ,{field: 'commtime', title: '评论时间', minWidth: 100, sort: true} + ,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-content-com'} + ]] + ,page: true + ,limit: 10 + ,limits: [10, 15, 20, 25, 30] + ,text: '对不起,加载出现异常!' + }); + + //工具条 + table.on('tool(LAY-app-content-comm)', function(obj){ + var data = obj.data; + if(obj.event === 'del'){ + layer.confirm('确定删除此条评论?', function(index){ + obj.del(); + layer.close(index); + }); + } else if(obj.event === 'edit'){ + admin.popup({ + title: '编辑评论' + ,area: ['450px', '300px'] + ,id: 'LAY-popup-content-comm' + ,success: function(layero, index){ + view(this.id).render('app/content/contform', data).done(function(){ + form.render(null, 'layuiadmin-form-comment'); + + //提交 + form.on('submit(layuiadmin-app-com-submit)', function(data){ + var field = data.field; //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-app-content-comm'); //重载表格 + layer.close(index); //执行关闭 + }); + }); + } + }); + } + }); + + exports('contlist', {}) }); \ No newline at end of file diff --git a/public/panel/modules/forum.js b/public/panel/modules/forum.js index bc8ea059..a2940298 100644 --- a/public/panel/modules/forum.js +++ b/public/panel/modules/forum.js @@ -1,120 +1,120 @@ -/** - * forum demo - */ - - -layui.define(['table', 'form'], function(exports){ - var $ = layui.$ - ,admin = layui.admin - ,view = layui.view - ,table = layui.table - ,form = layui.form; - - //帖子管理 - table.render({ - elem: '#LAY-app-forum-list' - ,url: './res/json/forum/list.js' //模拟接口 - ,cols: [[ - {type: 'checkbox', fixed: 'left'} - ,{field: 'id', width: 100, title: 'ID', sort: true} - ,{field: 'poster', title: '发帖人'} - ,{field: 'avatar', title: '头像', width: 100, templet: '#imgTpl'} - ,{field: 'content', title: '发帖内容'} - ,{field: 'posttime', title: '发帖时间', sort: true} - ,{field: 'top', title: '置顶', templet: '#buttonTpl', minWidth: 80, align: 'center'} - ,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-forum-list'} - ]] - ,page: true - ,limit: 10 - ,limits: [10, 15, 20, 25, 30] - ,text: '对不起,加载出现异常!' - }); - - //工具条 - table.on('tool(LAY-app-forum-list)', function(obj){ - var data = obj.data; - if(obj.event === 'del'){ - layer.confirm('确定删除此条帖子?', function(index){ - obj.del(); - layer.close(index); - }); - } else if(obj.event === 'edit'){ - admin.popup({ - title: '编辑帖子' - ,area: ['550px', '450px'] - ,id: 'LAY-popup-forum-edit' - ,resize: false - ,success: function(layero, index){ - view(this.id).render('app/forum/listform', data).done(function(){ - form.render(null, 'layuiadmin-form-list'); - - //提交 - form.on('submit(layuiadmin-app-forum-submit)', function(data){ - var field = data.field; //获取提交的字段 - - //提交 Ajax 成功后,关闭当前弹层并重载表格 - //$.ajax({}); - layui.table.reload('LAY-app-forum-list'); //重载表格 - layer.close(index); //执行关闭 - }); - }); - } - }); - } - }); - - //回帖管理 - table.render({ - elem: '#LAY-app-forumreply-list' - ,url: './res/json/forum/replys.js' //模拟接口 - ,cols: [[ - {type: 'checkbox', fixed: 'left'} - ,{field: 'id', width: 100, title: 'ID', sort: true} - ,{field: 'replyer', title: '回帖人'} - ,{field: 'cardid', title: '回帖ID', sort: true} - ,{field: 'avatar', title: '头像', width: 100, templet: '#imgTpl'} - ,{field: 'content', title: '回帖内容', width: 200} - ,{field: 'replytime', title: '回帖时间', sort: true} - ,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-forum-replys'} - ]] - ,page: true - ,limit: 10 - ,limits: [10, 15, 20, 25, 30] - ,text: '对不起,加载出现异常!' - }); - - //工具条 - table.on('tool(LAY-app-forumreply-list)', function(obj){ - var data = obj.data; - if(obj.event === 'del'){ - layer.confirm('确定删除此条评论?', function(index){ - obj.del(); - layer.close(index); - }); - } else if(obj.event === 'edit'){ - admin.popup({ - title: '编辑回帖' - ,area: ['550px', '400px'] - ,id: 'LAY-popup-forum-edit' - ,resize: false - ,success: function(layero, index){ - view(this.id).render('app/forum/replysform', data).done(function(){ - form.render(null, 'layuiadmin-app-forum-reply'); - - //提交 - form.on('submit(layuiadmin-app-forumreply-submit)', function(data){ - var field = data.field; //获取提交的字段 - - //提交 Ajax 成功后,关闭当前弹层并重载表格 - //$.ajax({}); - layui.table.reload('LAY-app-forumreply-list'); //重载表格 - layer.close(index); //执行关闭 - }); - }); - } - }); - } - }); - - exports('forum', {}) +/** + * forum demo + */ + + +layui.define(['table', 'form'], function(exports){ + var $ = layui.$ + ,admin = layui.admin + ,view = layui.view + ,table = layui.table + ,form = layui.form; + + //帖子管理 + table.render({ + elem: '#LAY-app-forum-list' + ,url: './res/json/forum/list.js' //模拟接口 + ,cols: [[ + {type: 'checkbox', fixed: 'left'} + ,{field: 'id', width: 100, title: 'ID', sort: true} + ,{field: 'poster', title: '发帖人'} + ,{field: 'avatar', title: '头像', width: 100, templet: '#imgTpl'} + ,{field: 'content', title: '发帖内容'} + ,{field: 'posttime', title: '发帖时间', sort: true} + ,{field: 'top', title: '置顶', templet: '#buttonTpl', minWidth: 80, align: 'center'} + ,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-forum-list'} + ]] + ,page: true + ,limit: 10 + ,limits: [10, 15, 20, 25, 30] + ,text: '对不起,加载出现异常!' + }); + + //工具条 + table.on('tool(LAY-app-forum-list)', function(obj){ + var data = obj.data; + if(obj.event === 'del'){ + layer.confirm('确定删除此条帖子?', function(index){ + obj.del(); + layer.close(index); + }); + } else if(obj.event === 'edit'){ + admin.popup({ + title: '编辑帖子' + ,area: ['550px', '450px'] + ,id: 'LAY-popup-forum-edit' + ,resize: false + ,success: function(layero, index){ + view(this.id).render('app/forum/listform', data).done(function(){ + form.render(null, 'layuiadmin-form-list'); + + //提交 + form.on('submit(layuiadmin-app-forum-submit)', function(data){ + var field = data.field; //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-app-forum-list'); //重载表格 + layer.close(index); //执行关闭 + }); + }); + } + }); + } + }); + + //回帖管理 + table.render({ + elem: '#LAY-app-forumreply-list' + ,url: './res/json/forum/replys.js' //模拟接口 + ,cols: [[ + {type: 'checkbox', fixed: 'left'} + ,{field: 'id', width: 100, title: 'ID', sort: true} + ,{field: 'replyer', title: '回帖人'} + ,{field: 'cardid', title: '回帖ID', sort: true} + ,{field: 'avatar', title: '头像', width: 100, templet: '#imgTpl'} + ,{field: 'content', title: '回帖内容', width: 200} + ,{field: 'replytime', title: '回帖时间', sort: true} + ,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-forum-replys'} + ]] + ,page: true + ,limit: 10 + ,limits: [10, 15, 20, 25, 30] + ,text: '对不起,加载出现异常!' + }); + + //工具条 + table.on('tool(LAY-app-forumreply-list)', function(obj){ + var data = obj.data; + if(obj.event === 'del'){ + layer.confirm('确定删除此条评论?', function(index){ + obj.del(); + layer.close(index); + }); + } else if(obj.event === 'edit'){ + admin.popup({ + title: '编辑回帖' + ,area: ['550px', '400px'] + ,id: 'LAY-popup-forum-edit' + ,resize: false + ,success: function(layero, index){ + view(this.id).render('app/forum/replysform', data).done(function(){ + form.render(null, 'layuiadmin-app-forum-reply'); + + //提交 + form.on('submit(layuiadmin-app-forumreply-submit)', function(data){ + var field = data.field; //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-app-forumreply-list'); //重载表格 + layer.close(index); //执行关闭 + }); + }); + } + }); + } + }); + + exports('forum', {}) }); \ No newline at end of file diff --git a/public/panel/modules/layim/res/html/chatlog.html b/public/panel/modules/layim/res/html/chatlog.html index 63f840df..c53c37f6 100644 --- a/public/panel/modules/layim/res/html/chatlog.html +++ b/public/panel/modules/layim/res/html/chatlog.html @@ -1,96 +1,96 @@ - - - - - -演示聊天记录模板 - - - - - - -
-
    -
    - -
    - - - - - - - - - - - + + + + + +演示聊天记录模板 + + + + + + +
    +
      +
      + +
      + + + + + + + + + + + diff --git a/public/panel/modules/layim/res/html/find.html b/public/panel/modules/layim/res/html/find.html index 06dbc844..bd705b45 100644 --- a/public/panel/modules/layim/res/html/find.html +++ b/public/panel/modules/layim/res/html/find.html @@ -1,44 +1,44 @@ - - - - - - - -发现 - - - - - - -
      -
      - 通过 find 参数指向的自定义页面 -
      -
      - - - - - - - + + + + + + + +发现 + + + + + + +
      +
      + 通过 find 参数指向的自定义页面 +
      +
      + + + + + + + diff --git a/public/panel/modules/layim/res/html/getmsg.json b/public/panel/modules/layim/res/html/getmsg.json index c69149a1..8fab81ee 100644 --- a/public/panel/modules/layim/res/html/getmsg.json +++ b/public/panel/modules/layim/res/html/getmsg.json @@ -1,72 +1,72 @@ -{ - "code": 0, - "pages": 1, - "data": [ - { - "id": 76, - "content": "申请添加你为好友", - "uid": 168, - "from": 166488, - "from_group": 0, - "type": 1, - "remark": "test1", - "href": null, - "read": 1, - "time": "刚刚", - "user": { - "id": 166488, - "avatar": "http://q.qlogo.cn/qqapp/101235792/B704597964F9BD0DB648292D1B09F7E8/100", - "username": "测试A", - "sign": null - } - }, - { - "id": 75, - "content": "申请添加你为好友", - "uid": 168, - "from": 347592, - "from_group": 0, - "type": 1, - "remark": "test2", - "href": null, - "read": 1, - "time": "刚刚", - "user": { - "id": 347592, - "avatar": "http://q.qlogo.cn/qqapp/101235792/B78751375E0531675B1272AD994BA875/100", - "username": "测试B", - "sign": null - } - }, - { - "id": 62, - "content": "测试C 拒绝了你的好友申请", - "uid": 168, - "from": null, - "from_group": null, - "type": 1, - "remark": null, - "href": null, - "read": 1, - "time": "10天前", - "user": { - "id": null - } - }, - { - "id": 60, - "content": "测试D 已经同意你的好友申请", - "uid": 168, - "from": null, - "from_group": null, - "type": 1, - "remark": null, - "href": null, - "read": 1, - "time": "10天前", - "user": { - "id": null - } - } - ] +{ + "code": 0, + "pages": 1, + "data": [ + { + "id": 76, + "content": "申请添加你为好友", + "uid": 168, + "from": 166488, + "from_group": 0, + "type": 1, + "remark": "test1", + "href": null, + "read": 1, + "time": "刚刚", + "user": { + "id": 166488, + "avatar": "http://q.qlogo.cn/qqapp/101235792/B704597964F9BD0DB648292D1B09F7E8/100", + "username": "测试A", + "sign": null + } + }, + { + "id": 75, + "content": "申请添加你为好友", + "uid": 168, + "from": 347592, + "from_group": 0, + "type": 1, + "remark": "test2", + "href": null, + "read": 1, + "time": "刚刚", + "user": { + "id": 347592, + "avatar": "http://q.qlogo.cn/qqapp/101235792/B78751375E0531675B1272AD994BA875/100", + "username": "测试B", + "sign": null + } + }, + { + "id": 62, + "content": "测试C 拒绝了你的好友申请", + "uid": 168, + "from": null, + "from_group": null, + "type": 1, + "remark": null, + "href": null, + "read": 1, + "time": "10天前", + "user": { + "id": null + } + }, + { + "id": 60, + "content": "测试D 已经同意你的好友申请", + "uid": 168, + "from": null, + "from_group": null, + "type": 1, + "remark": null, + "href": null, + "read": 1, + "time": "10天前", + "user": { + "id": null + } + } + ] } \ No newline at end of file diff --git a/public/panel/modules/layim/res/html/msgbox.html b/public/panel/modules/layim/res/html/msgbox.html index a9a0cc5d..1af7945d 100644 --- a/public/panel/modules/layim/res/html/msgbox.html +++ b/public/panel/modules/layim/res/html/msgbox.html @@ -1,220 +1,220 @@ - - - - - - - -消息盒子 - - - - - - -
        - -
        -
        - 注意:该页面为 msgbox 参数指向的自定义页面。 -
        此页为消息盒子的模拟数据,实际使用时请进行相应修改。 -
        -
        - - - - - - - - - - + + + + + + + +消息盒子 + + + + + + +
          + +
          +
          + 注意:该页面为 msgbox 参数指向的自定义页面。 +
          此页为消息盒子的模拟数据,实际使用时请进行相应修改。 +
          +
          + + + + + + + + + + diff --git a/public/panel/modules/sample.js b/public/panel/modules/sample.js index cc5d0ba9..234a6fb0 100644 --- a/public/panel/modules/sample.js +++ b/public/panel/modules/sample.js @@ -1,293 +1,293 @@ -/** - * console homepage - */ - -layui.define(function(exports){ - var admin = layui.admin; - - //区块轮播切换 - layui.use(['admin', 'carousel'], function(){ - var $ = layui.$ - ,admin = layui.admin - ,carousel = layui.carousel - ,element = layui.element - ,device = layui.device(); - - //轮播切换 - $('.layadmin-carousel').each(function(){ - var othis = $(this); - carousel.render({ - elem: this - ,width: '100%' - ,arrow: 'none' - ,interval: othis.data('interval') - ,autoplay: othis.data('autoplay') === true - ,trigger: (device.ios || device.android) ? 'click' : 'hover' - ,anim: othis.data('anim') - }); - }); - - element.render('progress'); - - }); - - //八卦新闻 - layui.use(['carousel', 'echarts'], function(){ - var $ = layui.$ - ,carousel = layui.carousel - ,echarts = layui.echarts; - - var echartsApp = [], options = [ - { - title : { - subtext: '完全实况球员数据', - textStyle: { - fontSize: 14 - } - }, - tooltip : { - trigger: 'axis' - }, - legend: { - x : 'left', - data:['罗纳尔多','舍普琴科'] - }, - polar : [ - { - indicator : [ - {text : '进攻', max : 100}, - {text : '防守', max : 100}, - {text : '体能', max : 100}, - {text : '速度', max : 100}, - {text : '力量', max : 100}, - {text : '技巧', max : 100} - ], - radius : 130 - } - ], - series : [ - { - type: 'radar', - center : ['50%', '50%'], - itemStyle: { - normal: { - areaStyle: { - type: 'default' - } - } - }, - data:[ - {value : [97, 42, 88, 94, 90, 86], name : '舍普琴科'}, - {value : [97, 32, 74, 95, 88, 92], name : '罗纳尔多'} - ] - } - ] - } - ] - ,elemDataView = $('#LAY-index-pageone').children('div') - ,renderDataView = function(index){ - echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme); - echartsApp[index].setOption(options[index]); - window.onresize = echartsApp[index].resize; - }; - //没找到DOM,终止执行 - if(!elemDataView[0]) return; - - renderDataView(0); - }); - - //访问量 - layui.use(['carousel', 'echarts'], function(){ - var $ = layui.$ - ,carousel = layui.carousel - ,echarts = layui.echarts; - - var echartsApp = [], options = [ - { - tooltip : { - trigger: 'axis' - }, - calculable : true, - legend: { - data:['访问量','下载量','平均访问量'] - }, - - xAxis : [ - { - type : 'category', - data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] - } - ], - yAxis : [ - { - type : 'value', - name : '访问量', - axisLabel : { - formatter: '{value} 万' - } - }, - { - type : 'value', - name : '下载量', - axisLabel : { - formatter: '{value} 万' - } - } - ], - series : [ - { - name:'访问量', - type:'line', - data:[900, 850, 950, 1000, 1100, 1050, 1000, 1150, 1250, 1370, 1250, 1100] - }, - { - name:'下载量', - type:'line', - yAxisIndex: 1, - data:[850, 850, 800, 950, 1000, 950, 950, 1150, 1100, 1240, 1000, 950] - }, - { - name:'平均访问量', - type:'line', - data:[870, 850, 850, 950, 1050, 1000, 980, 1150, 1000, 1300, 1150, 1000] - } - ] - } - ] - ,elemDataView = $('#LAY-index-pagetwo').children('div') - ,renderDataView = function(index){ - echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme); - echartsApp[index].setOption(options[index]); - window.onresize = echartsApp[index].resize; - }; - //没找到DOM,终止执行 - if(!elemDataView[0]) return; - renderDataView(0); - - }); - - //地图 - layui.use(['carousel', 'echarts'], function(){ - var $ = layui.$ - ,carousel = layui.carousel - ,echarts = layui.echarts; - - var echartsApp = [], options = [ - { - title : { - text: '访客地区分布', - subtext: '不完全统计' - }, - tooltip : { - trigger: 'item' - }, - dataRange: { - orient: 'horizontal', - min: 0, - max: 60000, - text:['高','低'], - splitNumber:0 - }, - series : [ - { - name: '访客地区分布', - type: 'map', - mapType: 'china', - selectedMode : 'multiple', - itemStyle:{ - normal:{label:{show:true}}, - emphasis:{label:{show:true}} - }, - data:[ - {name:'西藏', value:60}, - {name:'青海', value:167}, - {name:'宁夏', value:210}, - {name:'海南', value:252}, - {name:'甘肃', value:502}, - {name:'贵州', value:570}, - {name:'新疆', value:661}, - {name:'云南', value:8890}, - {name:'重庆', value:10010}, - {name:'吉林', value:5056}, - {name:'山西', value:2123}, - {name:'天津', value:9130}, - {name:'江西', value:10170}, - {name:'广西', value:6172}, - {name:'陕西', value:9251}, - {name:'黑龙江', value:5125}, - {name:'内蒙古', value:1435}, - {name:'安徽', value:9530}, - {name:'北京', value:51919}, - {name:'福建', value:3756}, - {name:'上海', value:59190}, - {name:'湖北', value:37109}, - {name:'湖南', value:8966}, - {name:'四川', value:31020}, - {name:'辽宁', value:7222}, - {name:'河北', value:3451}, - {name:'河南', value:9693}, - {name:'浙江', value:62310}, - {name:'山东', value:39231}, - {name:'江苏', value:35911}, - {name:'广东', value:55891} - ] - } - ] - } - ] - ,elemDataView = $('#LAY-index-pagethree').children('div') - ,renderDataView = function(index){ - echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme); - echartsApp[index].setOption(options[index]); - window.onresize = echartsApp[index].resize; - }; - //没找到DOM,终止执行 - if(!elemDataView[0]) return; - - renderDataView(0); - }); - - //项目进展 - layui.use('table', function(){ - var $ = layui.$ - ,table = layui.table; - - table.render({ - elem: '#LAY-home-homepage2' - ,url: './res/json/console/prograss.js' //模拟接口 - ,cols: [[ - {type: 'checkbox', fixed: 'left'} - ,{field: 'prograss', title: '任务'} - ,{field: 'time', title: '所需时间'} - ,{field: 'complete', title: '完成情况' - ,templet: function(d){ - if(d.complete == '已完成'){ - return ''+ d.complete +'' - }else if(d.complete == '进行中'){ - return ''+ d.complete +'' - }else{ - return ''+ d.complete +'' - } - } - } - ]] - ,skin: 'line' - }); - }); - - //回复留言 - admin.events.replyNote = function(othis){ - var nid = othis.data('id'); - layer.prompt({ - title: '回复留言 ID:'+ nid - ,formType: 2 - }, function(value, index){ - //这里可以请求 Ajax - //… - layer.msg('得到:'+ value); - layer.close(index); - }); - }; - - exports('sample', {}) +/** + * console homepage + */ + +layui.define(function(exports){ + var admin = layui.admin; + + //区块轮播切换 + layui.use(['admin', 'carousel'], function(){ + var $ = layui.$ + ,admin = layui.admin + ,carousel = layui.carousel + ,element = layui.element + ,device = layui.device(); + + //轮播切换 + $('.layadmin-carousel').each(function(){ + var othis = $(this); + carousel.render({ + elem: this + ,width: '100%' + ,arrow: 'none' + ,interval: othis.data('interval') + ,autoplay: othis.data('autoplay') === true + ,trigger: (device.ios || device.android) ? 'click' : 'hover' + ,anim: othis.data('anim') + }); + }); + + element.render('progress'); + + }); + + //八卦新闻 + layui.use(['carousel', 'echarts'], function(){ + var $ = layui.$ + ,carousel = layui.carousel + ,echarts = layui.echarts; + + var echartsApp = [], options = [ + { + title : { + subtext: '完全实况球员数据', + textStyle: { + fontSize: 14 + } + }, + tooltip : { + trigger: 'axis' + }, + legend: { + x : 'left', + data:['罗纳尔多','舍普琴科'] + }, + polar : [ + { + indicator : [ + {text : '进攻', max : 100}, + {text : '防守', max : 100}, + {text : '体能', max : 100}, + {text : '速度', max : 100}, + {text : '力量', max : 100}, + {text : '技巧', max : 100} + ], + radius : 130 + } + ], + series : [ + { + type: 'radar', + center : ['50%', '50%'], + itemStyle: { + normal: { + areaStyle: { + type: 'default' + } + } + }, + data:[ + {value : [97, 42, 88, 94, 90, 86], name : '舍普琴科'}, + {value : [97, 32, 74, 95, 88, 92], name : '罗纳尔多'} + ] + } + ] + } + ] + ,elemDataView = $('#LAY-index-pageone').children('div') + ,renderDataView = function(index){ + echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme); + echartsApp[index].setOption(options[index]); + window.onresize = echartsApp[index].resize; + }; + //没找到DOM,终止执行 + if(!elemDataView[0]) return; + + renderDataView(0); + }); + + //访问量 + layui.use(['carousel', 'echarts'], function(){ + var $ = layui.$ + ,carousel = layui.carousel + ,echarts = layui.echarts; + + var echartsApp = [], options = [ + { + tooltip : { + trigger: 'axis' + }, + calculable : true, + legend: { + data:['访问量','下载量','平均访问量'] + }, + + xAxis : [ + { + type : 'category', + data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] + } + ], + yAxis : [ + { + type : 'value', + name : '访问量', + axisLabel : { + formatter: '{value} 万' + } + }, + { + type : 'value', + name : '下载量', + axisLabel : { + formatter: '{value} 万' + } + } + ], + series : [ + { + name:'访问量', + type:'line', + data:[900, 850, 950, 1000, 1100, 1050, 1000, 1150, 1250, 1370, 1250, 1100] + }, + { + name:'下载量', + type:'line', + yAxisIndex: 1, + data:[850, 850, 800, 950, 1000, 950, 950, 1150, 1100, 1240, 1000, 950] + }, + { + name:'平均访问量', + type:'line', + data:[870, 850, 850, 950, 1050, 1000, 980, 1150, 1000, 1300, 1150, 1000] + } + ] + } + ] + ,elemDataView = $('#LAY-index-pagetwo').children('div') + ,renderDataView = function(index){ + echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme); + echartsApp[index].setOption(options[index]); + window.onresize = echartsApp[index].resize; + }; + //没找到DOM,终止执行 + if(!elemDataView[0]) return; + renderDataView(0); + + }); + + //地图 + layui.use(['carousel', 'echarts'], function(){ + var $ = layui.$ + ,carousel = layui.carousel + ,echarts = layui.echarts; + + var echartsApp = [], options = [ + { + title : { + text: '访客地区分布', + subtext: '不完全统计' + }, + tooltip : { + trigger: 'item' + }, + dataRange: { + orient: 'horizontal', + min: 0, + max: 60000, + text:['高','低'], + splitNumber:0 + }, + series : [ + { + name: '访客地区分布', + type: 'map', + mapType: 'china', + selectedMode : 'multiple', + itemStyle:{ + normal:{label:{show:true}}, + emphasis:{label:{show:true}} + }, + data:[ + {name:'西藏', value:60}, + {name:'青海', value:167}, + {name:'宁夏', value:210}, + {name:'海南', value:252}, + {name:'甘肃', value:502}, + {name:'贵州', value:570}, + {name:'新疆', value:661}, + {name:'云南', value:8890}, + {name:'重庆', value:10010}, + {name:'吉林', value:5056}, + {name:'山西', value:2123}, + {name:'天津', value:9130}, + {name:'江西', value:10170}, + {name:'广西', value:6172}, + {name:'陕西', value:9251}, + {name:'黑龙江', value:5125}, + {name:'内蒙古', value:1435}, + {name:'安徽', value:9530}, + {name:'北京', value:51919}, + {name:'福建', value:3756}, + {name:'上海', value:59190}, + {name:'湖北', value:37109}, + {name:'湖南', value:8966}, + {name:'四川', value:31020}, + {name:'辽宁', value:7222}, + {name:'河北', value:3451}, + {name:'河南', value:9693}, + {name:'浙江', value:62310}, + {name:'山东', value:39231}, + {name:'江苏', value:35911}, + {name:'广东', value:55891} + ] + } + ] + } + ] + ,elemDataView = $('#LAY-index-pagethree').children('div') + ,renderDataView = function(index){ + echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme); + echartsApp[index].setOption(options[index]); + window.onresize = echartsApp[index].resize; + }; + //没找到DOM,终止执行 + if(!elemDataView[0]) return; + + renderDataView(0); + }); + + //项目进展 + layui.use('table', function(){ + var $ = layui.$ + ,table = layui.table; + + table.render({ + elem: '#LAY-home-homepage2' + ,url: './res/json/console/prograss.js' //模拟接口 + ,cols: [[ + {type: 'checkbox', fixed: 'left'} + ,{field: 'prograss', title: '任务'} + ,{field: 'time', title: '所需时间'} + ,{field: 'complete', title: '完成情况' + ,templet: function(d){ + if(d.complete == '已完成'){ + return ''+ d.complete +'' + }else if(d.complete == '进行中'){ + return ''+ d.complete +'' + }else{ + return ''+ d.complete +'' + } + } + } + ]] + ,skin: 'line' + }); + }); + + //回复留言 + admin.events.replyNote = function(othis){ + var nid = othis.data('id'); + layer.prompt({ + title: '回复留言 ID:'+ nid + ,formType: 2 + }, function(value, index){ + //这里可以请求 Ajax + //… + layer.msg('得到:'+ value); + layer.close(index); + }); + }; + + exports('sample', {}) }); \ No newline at end of file diff --git a/public/panel/modules/senior.js b/public/panel/modules/senior.js index d187a8d5..77d79b9a 100644 --- a/public/panel/modules/senior.js +++ b/public/panel/modules/senior.js @@ -1,1147 +1,1147 @@ -/** - * Echarts demo - */ - -layui.define(function(exports){ - - //区块轮播切换 - layui.use(['admin', 'carousel'], function(){ - var $ = layui.$ - ,admin = layui.admin - ,carousel = layui.carousel - ,element = layui.element - ,device = layui.device(); - - //轮播切换 - $('.layadmin-carousel').each(function(){ - var othis = $(this); - carousel.render({ - elem: this - ,width: '100%' - ,arrow: 'none' - ,interval: othis.data('interval') - ,autoplay: othis.data('autoplay') === true - ,trigger: (device.ios || device.android) ? 'click' : 'hover' - ,anim: othis.data('anim') - }); - }); - - }); - - //折线图 - layui.use(['echarts'], function(){ - var $ = layui.$ - ,echarts = layui.echarts; - - //标准折线图 - var echnormline = [], normline = [ - { - title : { - text: '未来一周气温变化', - subtext: '纯属虚构' - }, - tooltip : { - trigger: 'axis' - }, - legend: { - data:['最高气温','最低气温'] - }, - calculable : true, - xAxis : [ - { - type : 'category', - boundaryGap : false, - data : ['周一','周二','周三','周四','周五','周六','周日'] - } - ], - yAxis : [ - { - type : 'value', - axisLabel : { - formatter: '{value} °C' - } - } - ], - series : [ - { - name:'最高气温', - type:'line', - data:[11, 11, 15, 13, 12, 13, 10], - markPoint : { - data : [{type : 'max', name: '最大值'},{type : 'min', name: '最小值'}] - }, - markLine : { - data : [{type : 'average', name: '平均值'}] - } - }, - { - name:'最低气温', - type:'line', - data:[1, -2, 2, 5, 3, 2, 0], - markPoint : { - data : [{name : '周最低', value : -2, xAxis: 1, yAxis: -1.5}] - }, - markLine : { - data : [{type : 'average', name : '平均值'}] - } - } - ] - } - ] - ,elemnormline = $('#LAY-index-normline').children('div') - ,rendernormline = function(index){ - echnormline[index] = echarts.init(elemnormline[index], layui.echartsTheme); - echnormline[index].setOption(normline[index]); - window.onresize = echnormline[index].resize; - }; - if(!elemnormline[0]) return; - rendernormline(0); - - //堆积折线图 - var echheapline = [], heapline = [ - { - tooltip : { - trigger: 'axis' - }, - legend: {data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎']}, - calculable : true, - xAxis : [ - { - type : 'category', - boundaryGap : false, - data : ['周一','周二','周三','周四','周五','周六','周日'] - } - ], - yAxis : [ - { - type : 'value' - } - ], - series : [ - { - name:'邮件营销', - type:'line', - stack: '总量', - data:[120, 132, 101, 134, 90, 230, 210] - }, - { - name:'联盟广告', - type:'line', - stack: '总量', - data:[220, 182, 191, 234, 290, 330, 310] - }, - { - name:'视频广告', - type:'line', - stack: '总量', - data:[150, 232, 201, 154, 190, 330, 410] - }, - { - name:'直接访问', - type:'line', - stack: '总量', - data:[320, 332, 301, 334, 390, 330, 320] - }, - { - name:'搜索引擎', - type:'line', - stack: '总量', - data:[820, 932, 901, 934, 1290, 1330, 1320] - } - ] - } - ] - ,elemheapline = $('#LAY-index-heapline').children('div') - ,renderheapline = function(index){ - echheapline[index] = echarts.init(elemheapline[index], layui.echartsTheme); - echheapline[index].setOption(heapline[index]); - window.onresize = echheapline[index].resize; - }; - if(!elemheapline[0]) return; - renderheapline(0); - - //不等距折线图 - var echdiffline = [], diffline = [ - { - title : { - text: '双数值轴折线', - subtext: '纯属虚构' - }, - tooltip : { - trigger: 'axis', - axisPointer:{ - show: true, - type : 'cross', - lineStyle: { - type : 'dashed', - width : 1 - } - }, - formatter : function (params) { - return params.seriesName + ' : [ '+ params.value[0] + ', ' + params.value[1] + ' ]'; - } - }, - legend: { - data:['数据1','数据2'] - }, - calculable : true, - xAxis : [ - { - type: 'value' - } - ], - yAxis : [ - { - type: 'value', - axisLine: { - lineStyle: { color: '#dc143c' } - } - } - ], - series : [ - { - name:'数据1', - type:'line', - data:[ - [1.5, 10], [5, 7], [8, 8], [12, 6], [11, 12], [16, 9], [14, 6], [17, 4], [19, 9] - ], - markPoint : { - data : [ - // 纵轴,默认 - {type : 'max', name: '最大值',symbol: 'emptyCircle', itemStyle:{normal:{color:'#dc143c',label:{position:'top'}}}}, - {type : 'min', name: '最小值',symbol: 'emptyCircle', itemStyle:{normal:{color:'#dc143c',label:{position:'bottom'}}}}, - // 横轴 - {type : 'max', name: '最大值', valueIndex: 0, symbol: 'emptyCircle', itemStyle:{normal:{color:'#1e90ff',label:{position:'right'}}}}, - {type : 'min', name: '最小值', valueIndex: 0, symbol: 'emptyCircle', itemStyle:{normal:{color:'#1e90ff',label:{position:'left'}}}} - ] - }, - markLine : { - data : [ - // 纵轴,默认 - {type : 'max', name: '最大值', itemStyle:{normal:{color:'#dc143c'}}}, - {type : 'min', name: '最小值', itemStyle:{normal:{color:'#dc143c'}}}, - {type : 'average', name : '平均值', itemStyle:{normal:{color:'#dc143c'}}}, - // 横轴 - {type : 'max', name: '最大值', valueIndex: 0, itemStyle:{normal:{color:'#1e90ff'}}}, - {type : 'min', name: '最小值', valueIndex: 0, itemStyle:{normal:{color:'#1e90ff'}}}, - {type : 'average', name : '平均值', valueIndex: 0, itemStyle:{normal:{color:'#1e90ff'}}} - ] - } - }, - { - name:'数据2', - type:'line', - data:[ - [1, 2], [2, 3], [4, 2], [7, 5], [11, 2], [18, 3] - ] - } - ] - } - ] - ,elemdiffline = $('#LAY-index-diffline').children('div') - ,renderdiffline = function(index){ - echdiffline[index] = echarts.init(elemdiffline[index], layui.echartsTheme); - echdiffline[index].setOption(diffline[index]); - window.onresize = echdiffline[index].resize; - }; - if(!elemdiffline[0]) return; - renderdiffline(0); - - //堆积面积图 - var echheaparea = [], heaparea = [ - { - tooltip : { - trigger: 'axis' - }, - legend: { - data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎'] - }, - calculable : true, - xAxis : [ - { - type : 'category', - boundaryGap : false, - data : ['周一','周二','周三','周四','周五','周六','周日'] - } - ], - yAxis : [ - { - type : 'value' - } - ], - series : [ - { - name:'邮件营销', - type:'line', - stack: '总量', - itemStyle: {normal: {areaStyle: {type: 'default'}}}, - data:[120, 132, 101, 134, 90, 230, 210] - }, - { - name:'联盟广告', - type:'line', - stack: '总量', - itemStyle: {normal: {areaStyle: {type: 'default'}}}, - data:[220, 182, 191, 234, 290, 330, 310] - }, - { - name:'视频广告', - type:'line', - stack: '总量', - itemStyle: {normal: {areaStyle: {type: 'default'}}}, - data:[150, 232, 201, 154, 190, 330, 410] - }, - { - name:'直接访问', - type:'line', - stack: '总量', - itemStyle: {normal: {areaStyle: {type: 'default'}}}, - data:[320, 332, 301, 334, 390, 330, 320] - }, - { - name:'搜索引擎', - type:'line', - stack: '总量', - itemStyle: {normal: {areaStyle: {type: 'default'}}}, - data:[820, 932, 901, 934, 1290, 1330, 1320] - } - ] - } - ] - ,elemheaparea = $('#LAY-index-heaparea').children('div') - ,renderheaparea = function(index){ - echheaparea[index] = echarts.init(elemheaparea[index], layui.echartsTheme); - echheaparea[index].setOption(heaparea[index]); - window.onresize = echheaparea[index].resize; - }; - if(!elemheaparea[0]) return; - renderheaparea(0); - - //面积图 - var echarea = [], area = [ - { - title : { - text: '雨量流量关系图', - x: 'center' - }, - tooltip : { - trigger: 'axis', - formatter: function(params) { - return params[0].name + '
          ' + params[0].seriesName + ' : ' + params[0].value + ' (m^3/s)
          ' - + params[1].seriesName + ' : ' + -params[1].value + ' (mm)'; - } - }, - legend: { - data:['流量','降雨量'], - x: 'left' - }, - dataZoom : { - show : true, - realtime : true, - start : 0, - end : 100 - }, - xAxis : [ - { - type : 'category', - boundaryGap : false, - axisLine: {onZero: false}, - data : [ - '2009/6/12 2:00', '2009/6/12 3:00', '2009/6/12 4:00', '2009/6/12 5:00', '2009/6/12 6:00', '2009/6/12 7:00', '2009/6/12 8:00', '2009/6/12 9:00', '2009/6/12 10:00', '2009/6/12 11:00', '2009/6/12 12:00', '2009/6/12 13:00', '2009/6/12 14:00', '2009/6/12 15:00', '2009/6/12 16:00', '2009/6/12 17:00', '2009/6/12 18:00', '2009/6/12 19:00', '2009/6/12 20:00', '2009/6/12 21:00', '2009/6/12 22:00', '2009/6/12 23:00', - '2009/6/13 0:00', '2009/6/13 1:00', '2009/6/13 2:00', '2009/6/13 3:00', '2009/6/13 4:00', '2009/6/13 5:00', '2009/6/13 6:00', '2009/6/13 7:00', '2009/6/13 8:00', '2009/6/13 9:00', '2009/6/13 10:00', '2009/6/13 11:00', '2009/6/13 12:00', '2009/6/13 13:00', '2009/6/13 14:00', '2009/6/13 15:00', '2009/6/13 16:00', '2009/6/13 17:00', '2009/6/13 18:00', '2009/6/13 19:00', '2009/6/13 20:00', '2009/6/13 21:00', '2009/6/13 22:00', '2009/6/13 23:00', - '2009/6/14 0:00', '2009/6/14 1:00', '2009/6/14 2:00', '2009/6/14 3:00', '2009/6/14 4:00', '2009/6/14 5:00', '2009/6/14 6:00', '2009/6/14 7:00', '2009/6/14 8:00', '2009/6/14 9:00', '2009/6/14 10:00', '2009/6/14 11:00', '2009/6/14 12:00', '2009/6/14 13:00', '2009/6/14 14:00', '2009/6/14 15:00', '2009/6/14 16:00', '2009/6/14 17:00', '2009/6/14 18:00', '2009/6/14 19:00', '2009/6/14 20:00', '2009/6/14 21:00', '2009/6/14 22:00', '2009/6/14 23:00', - '2009/6/15 0:00', '2009/6/15 1:00', '2009/6/15 2:00', '2009/6/15 3:00', '2009/6/15 4:00', '2009/6/15 5:00', '2009/6/15 6:00', '2009/6/15 7:00', '2009/6/15 8:00', '2009/6/15 9:00', '2009/6/15 10:00', '2009/6/15 11:00', '2009/6/15 12:00', '2009/6/15 13:00', '2009/6/15 14:00', '2009/6/15 15:00', '2009/6/15 16:00', '2009/6/15 17:00', '2009/6/15 18:00', '2009/6/15 19:00', '2009/6/15 20:00', '2009/6/15 21:00', '2009/6/15 22:00', '2009/6/15 23:00', - '2009/6/15 0:00', '2009/6/16 1:00', '2009/6/16 2:00', '2009/6/16 3:00', '2009/6/16 4:00', '2009/6/16 5:00', '2009/6/16 6:00', '2009/6/16 7:00', '2009/6/16 8:00', '2009/6/16 9:00', '2009/6/16 10:00', '2009/6/16 11:00', '2009/6/16 12:00', '2009/6/16 13:00', '2009/6/16 14:00', '2009/6/16 15:00', '2009/6/16 16:00', '2009/6/16 17:00', '2009/6/16 18:00', '2009/6/16 19:00', '2009/6/16 20:00', '2009/6/16 21:00', '2009/6/16 22:00', '2009/6/16 23:00', - '2009/6/15 0:00', '2009/6/17 1:00', '2009/6/17 2:00', '2009/6/17 3:00', '2009/6/17 4:00', '2009/6/17 5:00', '2009/6/17 6:00', '2009/6/17 7:00', '2009/6/17 8:00', '2009/6/17 9:00', '2009/6/17 10:00', '2009/6/17 11:00', '2009/6/17 12:00', '2009/6/17 13:00', '2009/6/17 14:00', '2009/6/17 15:00', '2009/6/17 16:00', '2009/6/17 17:00', '2009/6/17 18:00', '2009/6/17 19:00', '2009/6/17 20:00', '2009/6/17 21:00', '2009/6/17 22:00', '2009/6/17 23:00', - '2009/6/18 0:00', '2009/6/18 1:00', '2009/6/18 2:00', '2009/6/18 3:00', '2009/6/18 4:00', '2009/6/18 5:00', '2009/6/18 6:00', '2009/6/18 7:00', '2009/6/18 8:00', '2009/6/18 9:00', '2009/6/18 10:00', '2009/6/18 11:00', '2009/6/18 12:00', '2009/6/18 13:00', '2009/6/18 14:00', '2009/6/18 15:00', '2009/6/18 16:00', '2009/6/18 17:00', '2009/6/18 18:00', '2009/6/18 19:00', '2009/6/18 20:00', '2009/6/18 21:00', '2009/6/18 22:00', '2009/6/18 23:00', - '2009/6/15 0:00', '2009/6/19 1:00', '2009/6/19 2:00', '2009/6/19 3:00', '2009/6/19 4:00', '2009/6/19 5:00', '2009/6/19 6:00', '2009/6/19 7:00', '2009/6/19 8:00', '2009/6/19 9:00', '2009/6/19 10:00', '2009/6/19 11:00', '2009/6/19 12:00', '2009/6/19 13:00', '2009/6/19 14:00', '2009/6/19 15:00', '2009/6/19 16:00', '2009/6/19 17:00', '2009/6/19 18:00', '2009/6/19 19:00', '2009/6/19 20:00', '2009/6/19 21:00', '2009/6/19 22:00', '2009/6/19 23:00', - '2009/6/20 0:00', '2009/6/20 1:00', '2009/6/20 2:00', '2009/6/20 3:00', '2009/6/20 4:00', '2009/6/20 5:00', '2009/6/20 6:00', '2009/6/20 7:00', '2009/6/20 8:00', '2009/6/20 9:00', '2009/6/20 10:00', '2009/6/20 11:00', '2009/6/20 12:00', '2009/6/20 13:00', '2009/6/20 14:00', '2009/6/20 15:00', '2009/6/20 16:00', '2009/6/20 17:00', '2009/6/20 18:00', '2009/6/20 19:00', '2009/6/20 20:00', '2009/6/20 21:00', '2009/6/20 22:00', '2009/6/20 23:00', - '2009/6/21 0:00', '2009/6/21 1:00', '2009/6/21 2:00', '2009/6/21 3:00', '2009/6/21 4:00', '2009/6/21 5:00', '2009/6/21 6:00', '2009/6/21 7:00', '2009/6/21 8:00', '2009/6/21 9:00', '2009/6/21 10:00', '2009/6/21 11:00', '2009/6/21 12:00', '2009/6/21 13:00', '2009/6/21 14:00', '2009/6/21 15:00', '2009/6/21 16:00', '2009/6/21 17:00', '2009/6/21 18:00', '2009/6/21 19:00', '2009/6/21 20:00', '2009/6/21 21:00', '2009/6/21 22:00', '2009/6/21 23:00', - '2009/6/22 0:00', '2009/6/22 1:00', '2009/6/22 2:00', '2009/6/22 3:00', '2009/6/22 4:00', '2009/6/22 5:00', '2009/6/22 6:00', '2009/6/22 7:00', '2009/6/22 8:00', '2009/6/22 9:00', '2009/6/22 10:00', '2009/6/22 11:00', '2009/6/22 12:00', '2009/6/22 13:00', '2009/6/22 14:00', '2009/6/22 15:00', '2009/6/22 16:00', '2009/6/22 17:00', '2009/6/22 18:00', '2009/6/22 19:00', '2009/6/22 20:00', '2009/6/22 21:00', '2009/6/22 22:00', '2009/6/22 23:00', - '2009/6/23 0:00', '2009/6/23 1:00', '2009/6/23 2:00', '2009/6/23 3:00', '2009/6/23 4:00', '2009/6/23 5:00', '2009/6/23 6:00', '2009/6/23 7:00', '2009/6/23 8:00', '2009/6/23 9:00', '2009/6/23 10:00', '2009/6/23 11:00', '2009/6/23 12:00', '2009/6/23 13:00', '2009/6/23 14:00', '2009/6/23 15:00', '2009/6/23 16:00', '2009/6/23 17:00', '2009/6/23 18:00', '2009/6/23 19:00', '2009/6/23 20:00', '2009/6/23 21:00', '2009/6/23 22:00', '2009/6/23 23:00', - '2009/6/24 0:00', '2009/6/24 1:00', '2009/6/24 2:00', '2009/6/24 3:00', '2009/6/24 4:00', '2009/6/24 5:00', '2009/6/24 6:00', '2009/6/24 7:00', '2009/6/24 8:00', '2009/6/24 9:00', '2009/6/24 10:00', '2009/6/24 11:00', '2009/6/24 12:00', '2009/6/24 13:00', '2009/6/24 14:00', '2009/6/24 15:00', '2009/6/24 16:00', '2009/6/24 17:00', '2009/6/24 18:00', '2009/6/24 19:00', '2009/6/24 20:00', '2009/6/24 21:00', '2009/6/24 22:00', '2009/6/24 23:00', - '2009/6/25 0:00', '2009/6/25 1:00', '2009/6/25 2:00', '2009/6/25 3:00', '2009/6/25 4:00', '2009/6/25 5:00', '2009/6/25 6:00', '2009/6/25 7:00', '2009/6/25 8:00', '2009/6/25 9:00', '2009/6/25 10:00', '2009/6/25 11:00', '2009/6/25 12:00', '2009/6/25 13:00', '2009/6/25 14:00', '2009/6/25 15:00', '2009/6/25 16:00', '2009/6/25 17:00', '2009/6/25 18:00', '2009/6/25 19:00', '2009/6/25 20:00', '2009/6/25 21:00', '2009/6/25 22:00', '2009/6/25 23:00', - '2009/6/26 0:00', '2009/6/26 1:00', '2009/6/26 2:00', '2009/6/26 3:00', '2009/6/26 4:00', '2009/6/26 5:00', '2009/6/26 6:00', '2009/6/26 7:00', '2009/6/26 8:00', '2009/6/26 9:00', '2009/6/26 10:00', '2009/6/26 11:00', '2009/6/26 12:00', '2009/6/26 13:00', '2009/6/26 14:00', '2009/6/26 15:00', '2009/6/26 16:00', '2009/6/26 17:00', '2009/6/26 18:00', '2009/6/26 19:00', '2009/6/26 20:00', '2009/6/26 21:00', '2009/6/26 22:00', '2009/6/26 23:00', - '2009/6/27 0:00', '2009/6/27 1:00', '2009/6/27 2:00', '2009/6/27 3:00', '2009/6/27 4:00', '2009/6/27 5:00', '2009/6/27 6:00', '2009/6/27 7:00', '2009/6/27 8:00', '2009/6/27 9:00', '2009/6/27 10:00', '2009/6/27 11:00', '2009/6/27 12:00', '2009/6/27 13:00', '2009/6/27 14:00', '2009/6/27 15:00', '2009/6/27 16:00', '2009/6/27 17:00', '2009/6/27 18:00', '2009/6/27 19:00', '2009/6/27 20:00', '2009/6/27 21:00', '2009/6/27 22:00', '2009/6/27 23:00', - '2009/6/28 0:00', '2009/6/28 1:00', '2009/6/28 2:00', '2009/6/28 3:00', '2009/6/28 4:00', '2009/6/28 5:00', '2009/6/28 6:00', '2009/6/28 7:00', '2009/6/28 8:00', '2009/6/28 9:00', '2009/6/28 10:00', '2009/6/28 11:00', '2009/6/28 12:00', '2009/6/28 13:00', '2009/6/28 14:00', '2009/6/28 15:00', '2009/6/28 16:00', '2009/6/28 17:00', '2009/6/28 18:00', '2009/6/28 19:00', '2009/6/28 20:00', '2009/6/28 21:00', '2009/6/28 22:00', '2009/6/28 23:00', - '2009/6/29 0:00', '2009/6/29 1:00', '2009/6/29 2:00', '2009/6/29 3:00', '2009/6/29 4:00', '2009/6/29 5:00', '2009/6/29 6:00', '2009/6/29 7:00', '2009/6/29 8:00', '2009/6/29 9:00', '2009/6/29 10:00', '2009/6/29 11:00', '2009/6/29 12:00', '2009/6/29 13:00', '2009/6/29 14:00', '2009/6/29 15:00', '2009/6/29 16:00', '2009/6/29 17:00', '2009/6/29 18:00', '2009/6/29 19:00', '2009/6/29 20:00', '2009/6/29 21:00', '2009/6/29 22:00', '2009/6/29 23:00', - '2009/6/30 0:00', '2009/6/30 1:00', '2009/6/30 2:00', '2009/6/30 3:00', '2009/6/30 4:00', '2009/6/30 5:00', '2009/6/30 6:00', '2009/6/30 7:00', '2009/6/30 8:00', '2009/6/30 9:00', '2009/6/30 10:00', '2009/6/30 11:00', '2009/6/30 12:00', '2009/6/30 13:00', '2009/6/30 14:00', '2009/6/30 15:00', '2009/6/30 16:00', '2009/6/30 17:00', '2009/6/30 18:00', '2009/6/30 19:00', '2009/6/30 20:00', '2009/6/30 21:00', '2009/6/30 22:00', '2009/6/30 23:00', - '2009/7/1 0:00', '2009/7/1 1:00', '2009/7/1 2:00', '2009/7/1 3:00', '2009/7/1 4:00', '2009/7/1 5:00', '2009/7/1 6:00', '2009/7/1 7:00', '2009/7/1 8:00', '2009/7/1 9:00', '2009/7/1 10:00', '2009/7/1 11:00', '2009/7/1 12:00', '2009/7/1 13:00', '2009/7/1 14:00', '2009/7/1 15:00', '2009/7/1 16:00', '2009/7/1 17:00', '2009/7/1 18:00', '2009/7/1 19:00', '2009/7/1 20:00', '2009/7/1 21:00', '2009/7/1 22:00', '2009/7/1 23:00', - '2009/7/2 0:00', '2009/7/2 1:00', '2009/7/2 2:00', '2009/7/2 3:00', '2009/7/2 4:00', '2009/7/2 5:00', '2009/7/2 6:00', '2009/7/2 7:00', '2009/7/2 8:00', '2009/7/2 9:00', '2009/7/2 10:00', '2009/7/2 11:00', '2009/7/2 12:00', '2009/7/2 13:00', '2009/7/2 14:00', '2009/7/2 15:00', '2009/7/2 16:00', '2009/7/2 17:00', '2009/7/2 18:00', '2009/7/2 19:00', '2009/7/2 20:00', '2009/7/2 21:00', '2009/7/2 22:00', '2009/7/2 23:00', - '2009/7/3 0:00', '2009/7/3 1:00', '2009/7/3 2:00', '2009/7/3 3:00', '2009/7/3 4:00', '2009/7/3 5:00', '2009/7/3 6:00', '2009/7/3 7:00', '2009/7/3 8:00', '2009/7/3 9:00', '2009/7/3 10:00', '2009/7/3 11:00', '2009/7/3 12:00', '2009/7/3 13:00', '2009/7/3 14:00', '2009/7/3 15:00', '2009/7/3 16:00', '2009/7/3 17:00', '2009/7/3 18:00', '2009/7/3 19:00', '2009/7/3 20:00', '2009/7/3 21:00', '2009/7/3 22:00', '2009/7/3 23:00', - '2009/7/4 0:00', '2009/7/4 1:00', '2009/7/4 2:00', '2009/7/4 3:00', '2009/7/4 4:00', '2009/7/4 5:00', '2009/7/4 6:00', '2009/7/4 7:00', '2009/7/4 8:00', '2009/7/4 9:00', '2009/7/4 10:00', '2009/7/4 11:00', '2009/7/4 12:00', '2009/7/4 13:00', '2009/7/4 14:00', '2009/7/4 15:00', '2009/7/4 16:00', '2009/7/4 17:00', '2009/7/4 18:00', '2009/7/4 19:00', '2009/7/4 20:00', '2009/7/4 21:00', '2009/7/4 22:00', '2009/7/4 23:00', - '2009/7/5 0:00', '2009/7/5 1:00', '2009/7/5 2:00', '2009/7/5 3:00', '2009/7/5 4:00', '2009/7/5 5:00', '2009/7/5 6:00', '2009/7/5 7:00', '2009/7/5 8:00', '2009/7/5 9:00', '2009/7/5 10:00', '2009/7/5 11:00', '2009/7/5 12:00', '2009/7/5 13:00', '2009/7/5 14:00', '2009/7/5 15:00', '2009/7/5 16:00', '2009/7/5 17:00', '2009/7/5 18:00', '2009/7/5 19:00', '2009/7/5 20:00', '2009/7/5 21:00', '2009/7/5 22:00', '2009/7/5 23:00', - '2009/7/6 0:00', '2009/7/6 1:00', '2009/7/6 2:00', '2009/7/6 3:00', '2009/7/6 4:00', '2009/7/6 5:00', '2009/7/6 6:00', '2009/7/6 7:00', '2009/7/6 8:00', '2009/7/6 9:00', '2009/7/6 10:00', '2009/7/6 11:00', '2009/7/6 12:00', '2009/7/6 13:00', '2009/7/6 14:00', '2009/7/6 15:00', '2009/7/6 16:00', '2009/7/6 17:00', '2009/7/6 18:00', '2009/7/6 19:00', '2009/7/6 20:00', '2009/7/6 21:00', '2009/7/6 22:00', '2009/7/6 23:00', - '2009/7/7 0:00', '2009/7/7 1:00', '2009/7/7 2:00', '2009/7/7 3:00', '2009/7/7 4:00', '2009/7/7 5:00', '2009/7/7 6:00', '2009/7/7 7:00', '2009/7/7 8:00', '2009/7/7 9:00', '2009/7/7 10:00', '2009/7/7 11:00', '2009/7/7 12:00', '2009/7/7 13:00', '2009/7/7 14:00', '2009/7/7 15:00', '2009/7/7 16:00', '2009/7/7 17:00', '2009/7/7 18:00', '2009/7/7 19:00', '2009/7/7 20:00', '2009/7/7 21:00', '2009/7/7 22:00', '2009/7/7 23:00', - '2009/7/8 0:00', '2009/7/8 1:00', '2009/7/8 2:00', '2009/7/8 3:00', '2009/7/8 4:00', '2009/7/8 5:00', '2009/7/8 6:00', '2009/7/8 7:00', '2009/7/8 8:00', '2009/7/8 9:00', '2009/7/8 10:00', '2009/7/8 11:00', '2009/7/8 12:00', '2009/7/8 13:00', '2009/7/8 14:00', '2009/7/8 15:00', '2009/7/8 16:00', '2009/7/8 17:00', '2009/7/8 18:00', '2009/7/8 19:00', '2009/7/8 20:00', '2009/7/8 21:00', '2009/7/8 22:00', '2009/7/8 23:00', - '2009/7/9 0:00', '2009/7/9 1:00', '2009/7/9 2:00', '2009/7/9 3:00', '2009/7/9 4:00', '2009/7/9 5:00', '2009/7/9 6:00', '2009/7/9 7:00', '2009/7/9 8:00', '2009/7/9 9:00', '2009/7/9 10:00', '2009/7/9 11:00', '2009/7/9 12:00', '2009/7/9 13:00', '2009/7/9 14:00', '2009/7/9 15:00', '2009/7/9 16:00', '2009/7/9 17:00', '2009/7/9 18:00', '2009/7/9 19:00', '2009/7/9 20:00', '2009/7/9 21:00', '2009/7/9 22:00', '2009/7/9 23:00', - '2009/7/10 0:00', '2009/7/10 1:00', '2009/7/10 2:00', '2009/7/10 3:00', '2009/7/10 4:00', '2009/7/10 5:00', '2009/7/10 6:00', '2009/7/10 7:00', '2009/7/10 8:00', '2009/7/10 9:00', '2009/7/10 10:00', '2009/7/10 11:00', '2009/7/10 12:00', '2009/7/10 13:00', '2009/7/10 14:00', '2009/7/10 15:00', '2009/7/10 16:00', '2009/7/10 17:00', '2009/7/10 18:00', '2009/7/10 19:00', '2009/7/10 20:00', '2009/7/10 21:00', '2009/7/10 22:00', '2009/7/10 23:00', - '2009/7/11 0:00', '2009/7/11 1:00', '2009/7/11 2:00', '2009/7/11 3:00', '2009/7/11 4:00', '2009/7/11 5:00', '2009/7/11 6:00', '2009/7/11 7:00', '2009/7/11 8:00', '2009/7/11 9:00', '2009/7/11 10:00', '2009/7/11 11:00', '2009/7/11 12:00', '2009/7/11 13:00', '2009/7/11 14:00', '2009/7/11 15:00', '2009/7/11 16:00', '2009/7/11 17:00', '2009/7/11 18:00', '2009/7/11 19:00', '2009/7/11 20:00', '2009/7/11 21:00', '2009/7/11 22:00', '2009/7/11 23:00', - '2009/7/12 0:00', '2009/7/12 1:00', '2009/7/12 2:00', '2009/7/12 3:00', '2009/7/12 4:00', '2009/7/12 5:00', '2009/7/12 6:00', '2009/7/12 7:00', '2009/7/12 8:00', '2009/7/12 9:00', '2009/7/12 10:00', '2009/7/12 11:00', '2009/7/12 12:00', '2009/7/12 13:00', '2009/7/12 14:00', '2009/7/12 15:00', '2009/7/12 16:00', '2009/7/12 17:00', '2009/7/12 18:00', '2009/7/12 19:00', '2009/7/12 20:00', '2009/7/12 21:00', '2009/7/12 22:00', '2009/7/12 23:00', - '2009/7/13 0:00', '2009/7/13 1:00', '2009/7/13 2:00', '2009/7/13 3:00', '2009/7/13 4:00', '2009/7/13 5:00', '2009/7/13 6:00', '2009/7/13 7:00', '2009/7/13 8:00', '2009/7/13 9:00', '2009/7/13 10:00', '2009/7/13 11:00', '2009/7/13 12:00', '2009/7/13 13:00', '2009/7/13 14:00', '2009/7/13 15:00', '2009/7/13 16:00', '2009/7/13 17:00', '2009/7/13 18:00', '2009/7/13 19:00', '2009/7/13 20:00', '2009/7/13 21:00', '2009/7/13 22:00', '2009/7/13 23:00', - '2009/7/14 0:00', '2009/7/14 1:00', '2009/7/14 2:00', '2009/7/14 3:00', '2009/7/14 4:00', '2009/7/14 5:00', '2009/7/14 6:00', '2009/7/14 7:00', '2009/7/14 8:00', '2009/7/14 9:00', '2009/7/14 10:00', '2009/7/14 11:00', '2009/7/14 12:00', '2009/7/14 13:00', '2009/7/14 14:00', '2009/7/14 15:00', '2009/7/14 16:00', '2009/7/14 17:00', '2009/7/14 18:00', '2009/7/14 19:00', '2009/7/14 20:00', '2009/7/14 21:00', '2009/7/14 22:00', '2009/7/14 23:00', - '2009/7/15 0:00', '2009/7/15 1:00', '2009/7/15 2:00', '2009/7/15 3:00', '2009/7/15 4:00', '2009/7/15 5:00', '2009/7/15 6:00', '2009/7/15 7:00', '2009/7/15 8:00', '2009/7/15 9:00', '2009/7/15 10:00', '2009/7/15 11:00', '2009/7/15 12:00', '2009/7/15 13:00', '2009/7/15 14:00', '2009/7/15 15:00', '2009/7/15 16:00', '2009/7/15 17:00', '2009/7/15 18:00', '2009/7/15 19:00', '2009/7/15 20:00', '2009/7/15 21:00', '2009/7/15 22:00', '2009/7/15 23:00', - '2009/7/16 0:00', '2009/7/16 1:00', '2009/7/16 2:00', '2009/7/16 3:00', '2009/7/16 4:00', '2009/7/16 5:00', '2009/7/16 6:00', '2009/7/16 7:00', '2009/7/16 8:00', '2009/7/16 9:00', '2009/7/16 10:00', '2009/7/16 11:00', '2009/7/16 12:00', '2009/7/16 13:00', '2009/7/16 14:00', '2009/7/16 15:00', '2009/7/16 16:00', '2009/7/16 17:00', '2009/7/16 18:00', '2009/7/16 19:00', '2009/7/16 20:00', '2009/7/16 21:00', '2009/7/16 22:00', '2009/7/16 23:00', - '2009/7/17 0:00', '2009/7/17 1:00', '2009/7/17 2:00', '2009/7/17 3:00', '2009/7/17 4:00', '2009/7/17 5:00', '2009/7/17 6:00', '2009/7/17 7:00', '2009/7/17 8:00', '2009/7/17 9:00', '2009/7/17 10:00', '2009/7/17 11:00', '2009/7/17 12:00', '2009/7/17 13:00', '2009/7/17 14:00', '2009/7/17 15:00', '2009/7/17 16:00', '2009/7/17 17:00', '2009/7/17 18:00', '2009/7/17 19:00', '2009/7/17 20:00', '2009/7/17 21:00', '2009/7/17 22:00', '2009/7/17 23:00', - '2009/7/18 0:00', '2009/7/18 1:00', '2009/7/18 2:00', '2009/7/18 3:00', '2009/7/18 4:00', '2009/7/18 5:00', '2009/7/18 6:00', '2009/7/18 7:00', '2009/7/18 8:00', '2009/7/18 9:00', '2009/7/18 10:00', '2009/7/18 11:00', '2009/7/18 12:00', '2009/7/18 13:00', '2009/7/18 14:00', '2009/7/18 15:00', '2009/7/18 16:00', '2009/7/18 17:00', '2009/7/18 18:00', '2009/7/18 19:00', '2009/7/18 20:00', '2009/7/18 21:00', '2009/7/18 22:00', '2009/7/18 23:00', - '2009/7/19 0:00', '2009/7/19 1:00', '2009/7/19 2:00', '2009/7/19 3:00', '2009/7/19 4:00', '2009/7/19 5:00', '2009/7/19 6:00', '2009/7/19 7:00', '2009/7/19 8:00', '2009/7/19 9:00', '2009/7/19 10:00', '2009/7/19 11:00', '2009/7/19 12:00', '2009/7/19 13:00', '2009/7/19 14:00', '2009/7/19 15:00', '2009/7/19 16:00', '2009/7/19 17:00', '2009/7/19 18:00', '2009/7/19 19:00', '2009/7/19 20:00', '2009/7/19 21:00', '2009/7/19 22:00', '2009/7/19 23:00', - '2009/7/20 0:00', '2009/7/20 1:00', '2009/7/20 2:00', '2009/7/20 3:00', '2009/7/20 4:00', '2009/7/20 5:00', '2009/7/20 6:00', '2009/7/20 7:00', '2009/7/20 8:00', '2009/7/20 9:00', '2009/7/20 10:00', '2009/7/20 11:00', '2009/7/20 12:00', '2009/7/20 13:00', '2009/7/20 14:00', '2009/7/20 15:00', '2009/7/20 16:00', '2009/7/20 17:00', '2009/7/20 18:00', '2009/7/20 19:00', '2009/7/20 20:00', '2009/7/20 21:00', '2009/7/20 22:00', '2009/7/20 23:00', - '2009/7/21 0:00', '2009/7/21 1:00', '2009/7/21 2:00', '2009/7/21 3:00', '2009/7/21 4:00', '2009/7/21 5:00', '2009/7/21 6:00', '2009/7/21 7:00', '2009/7/21 8:00', '2009/7/21 9:00', '2009/7/21 10:00', '2009/7/21 11:00', '2009/7/21 12:00', '2009/7/21 13:00', '2009/7/21 14:00', '2009/7/21 15:00', '2009/7/21 16:00', '2009/7/21 17:00', '2009/7/21 18:00', '2009/7/21 19:00', '2009/7/21 20:00', '2009/7/21 21:00', '2009/7/21 22:00', '2009/7/21 23:00', - '2009/7/22 0:00', '2009/7/22 1:00', '2009/7/22 2:00', '2009/7/22 3:00', '2009/7/22 4:00', '2009/7/22 5:00', '2009/7/22 6:00', '2009/7/22 7:00', '2009/7/22 8:00', '2009/7/22 9:00', '2009/7/22 10:00', '2009/7/22 11:00', '2009/7/22 12:00', '2009/7/22 13:00', '2009/7/22 14:00', '2009/7/22 15:00', '2009/7/22 16:00', '2009/7/22 17:00', '2009/7/22 18:00', '2009/7/22 19:00', '2009/7/22 20:00', '2009/7/22 21:00', '2009/7/22 22:00', '2009/7/22 23:00', - '2009/7/23 0:00', '2009/7/23 1:00', '2009/7/23 2:00', '2009/7/23 3:00', '2009/7/23 4:00', '2009/7/23 5:00', '2009/7/23 6:00', '2009/7/23 7:00', '2009/7/23 8:00', '2009/7/23 9:00', '2009/7/23 10:00', '2009/7/23 11:00', '2009/7/23 12:00', '2009/7/23 13:00', '2009/7/23 14:00', '2009/7/23 15:00', '2009/7/23 16:00', '2009/7/23 17:00', '2009/7/23 18:00', '2009/7/23 19:00', '2009/7/23 20:00', '2009/7/23 21:00', '2009/7/23 22:00', '2009/7/23 23:00', - '2009/7/24 0:00', '2009/7/24 1:00', '2009/7/24 2:00', '2009/7/24 3:00', '2009/7/24 4:00', '2009/7/24 5:00', '2009/7/24 6:00', '2009/7/24 7:00', '2009/7/24 8:00', '2009/7/24 9:00', '2009/7/24 10:00', '2009/7/24 11:00', '2009/7/24 12:00', '2009/7/24 13:00', '2009/7/24 14:00', '2009/7/24 15:00', '2009/7/24 16:00', '2009/7/24 17:00', '2009/7/24 18:00', '2009/7/24 19:00', '2009/7/24 20:00', '2009/7/24 21:00', '2009/7/24 22:00', '2009/7/24 23:00', - '2009/7/25 0:00', '2009/7/25 1:00', '2009/7/25 2:00', '2009/7/25 3:00', '2009/7/25 4:00', '2009/7/25 5:00', '2009/7/25 6:00', '2009/7/25 7:00', '2009/7/25 8:00', '2009/7/25 9:00', '2009/7/25 10:00', '2009/7/25 11:00', '2009/7/25 12:00', '2009/7/25 13:00', '2009/7/25 14:00', '2009/7/25 15:00', '2009/7/25 16:00', '2009/7/25 17:00', '2009/7/25 18:00', '2009/7/25 19:00', '2009/7/25 20:00', '2009/7/25 21:00', '2009/7/25 22:00', '2009/7/25 23:00', - '2009/7/26 0:00', '2009/7/26 1:00', '2009/7/26 2:00', '2009/7/26 3:00', '2009/7/26 4:00', '2009/7/26 5:00', '2009/7/26 6:00', '2009/7/26 7:00', '2009/7/26 8:00', '2009/7/26 9:00', '2009/7/26 10:00', '2009/7/26 11:00', '2009/7/26 12:00', '2009/7/26 13:00', '2009/7/26 14:00', '2009/7/26 15:00', '2009/7/26 16:00', '2009/7/26 17:00', '2009/7/26 18:00', '2009/7/26 19:00', '2009/7/26 20:00', '2009/7/26 21:00', '2009/7/26 22:00', '2009/7/26 23:00', - '2009/7/27 0:00', '2009/7/27 1:00', '2009/7/27 2:00', '2009/7/27 3:00', '2009/7/27 4:00', '2009/7/27 5:00', '2009/7/27 6:00', '2009/7/27 7:00', '2009/7/27 8:00', '2009/7/27 9:00', '2009/7/27 10:00', '2009/7/27 11:00', '2009/7/27 12:00', '2009/7/27 13:00', '2009/7/27 14:00', '2009/7/27 15:00', '2009/7/27 16:00', '2009/7/27 17:00', '2009/7/27 18:00', '2009/7/27 19:00', '2009/7/27 20:00', '2009/7/27 21:00', '2009/7/27 22:00', '2009/7/27 23:00', - '2009/7/28 0:00', '2009/7/28 1:00', '2009/7/28 2:00', '2009/7/28 3:00', '2009/7/28 4:00', '2009/7/28 5:00', '2009/7/28 6:00', '2009/7/28 7:00', '2009/7/28 8:00', '2009/7/28 9:00', '2009/7/28 10:00', '2009/7/28 11:00', '2009/7/28 12:00', '2009/7/28 13:00', '2009/7/28 14:00', '2009/7/28 15:00', '2009/7/28 16:00', '2009/7/28 17:00', '2009/7/28 18:00', '2009/7/28 19:00', '2009/7/28 20:00', '2009/7/28 21:00', '2009/7/28 22:00', '2009/7/28 23:00', - '2009/7/29 0:00', '2009/7/29 1:00', '2009/7/29 2:00', '2009/7/29 3:00', '2009/7/29 4:00', '2009/7/29 5:00', '2009/7/29 6:00', '2009/7/29 7:00', '2009/7/29 8:00', '2009/7/29 9:00', '2009/7/29 10:00', '2009/7/29 11:00', '2009/7/29 12:00', '2009/7/29 13:00', '2009/7/29 14:00', '2009/7/29 15:00', '2009/7/29 16:00', '2009/7/29 17:00', '2009/7/29 18:00', '2009/7/29 19:00', '2009/7/29 20:00', '2009/7/29 21:00', '2009/7/29 22:00', '2009/7/29 23:00', - '2009/7/30 0:00', '2009/7/30 1:00', '2009/7/30 2:00', '2009/7/30 3:00', '2009/7/30 4:00', '2009/7/30 5:00', '2009/7/30 6:00', '2009/7/30 7:00', '2009/7/30 8:00', '2009/7/30 9:00', '2009/7/30 10:00', '2009/7/30 11:00', '2009/7/30 12:00', '2009/7/30 13:00', '2009/7/30 14:00', '2009/7/30 15:00', '2009/7/30 16:00', '2009/7/30 17:00', '2009/7/30 18:00', '2009/7/30 19:00', '2009/7/30 20:00', '2009/7/30 21:00', '2009/7/30 22:00', '2009/7/30 23:00', - '2009/7/31 0:00', '2009/7/31 1:00', '2009/7/31 2:00', '2009/7/31 3:00', '2009/7/31 4:00', '2009/7/31 5:00', '2009/7/31 6:00', '2009/7/31 7:00', '2009/7/31 8:00', '2009/7/31 9:00', '2009/7/31 10:00', '2009/7/31 11:00', '2009/7/31 12:00', '2009/7/31 13:00', '2009/7/31 14:00', '2009/7/31 15:00', '2009/7/31 16:00', '2009/7/31 17:00', '2009/7/31 18:00', '2009/7/31 19:00', '2009/7/31 20:00', '2009/7/31 21:00', '2009/7/31 22:00', '2009/7/31 23:00', - '2009/8/1 0:00', '2009/8/1 1:00', '2009/8/1 2:00', '2009/8/1 3:00', '2009/8/1 4:00', '2009/8/1 5:00', '2009/8/1 6:00', '2009/8/1 7:00', '2009/8/1 8:00', '2009/8/1 9:00', '2009/8/1 10:00', '2009/8/1 11:00', '2009/8/1 12:00', '2009/8/1 13:00', '2009/8/1 14:00', '2009/8/1 15:00', '2009/8/1 16:00', '2009/8/1 17:00', '2009/8/1 18:00', '2009/8/1 19:00', '2009/8/1 20:00', '2009/8/1 21:00', '2009/8/1 22:00', '2009/8/1 23:00', '2009/8/2 0:00', '2009/8/2 1:00', '2009/8/2 2:00', '2009/8/2 3:00', '2009/8/2 4:00', '2009/8/2 5:00', '2009/8/2 6:00', '2009/8/2 7:00', '2009/8/2 8:00', '2009/8/2 9:00', '2009/8/2 10:00', '2009/8/2 11:00', '2009/8/2 12:00', '2009/8/2 13:00', '2009/8/2 14:00', '2009/8/2 15:00', '2009/8/2 16:00', '2009/8/2 17:00', '2009/8/2 18:00', '2009/8/2 19:00', '2009/8/2 20:00', '2009/8/2 21:00', '2009/8/2 22:00', '2009/8/2 23:00', '2009/8/3 0:00', '2009/8/3 1:00', '2009/8/3 2:00', '2009/8/3 3:00', '2009/8/3 4:00', '2009/8/3 5:00', '2009/8/3 6:00', '2009/8/3 7:00', '2009/8/3 8:00', '2009/8/3 9:00', '2009/8/3 10:00', '2009/8/3 11:00', '2009/8/3 12:00', '2009/8/3 13:00', '2009/8/3 14:00', '2009/8/3 15:00', '2009/8/3 16:00', '2009/8/3 17:00', '2009/8/3 18:00', '2009/8/3 19:00', '2009/8/3 20:00', '2009/8/3 21:00', '2009/8/3 22:00', '2009/8/3 23:00', '2009/8/4 0:00', '2009/8/4 1:00', '2009/8/4 2:00', '2009/8/4 3:00', '2009/8/4 4:00', '2009/8/4 5:00', '2009/8/4 6:00', '2009/8/4 7:00', '2009/8/4 8:00', '2009/8/4 9:00', '2009/8/4 10:00', '2009/8/4 11:00', '2009/8/4 12:00', '2009/8/4 13:00', '2009/8/4 14:00', '2009/8/4 15:00', '2009/8/4 16:00', '2009/8/4 17:00', '2009/8/4 18:00', '2009/8/4 19:00', '2009/8/4 20:00', '2009/8/4 21:00', '2009/8/4 22:00', '2009/8/4 23:00', '2009/8/5 0:00', '2009/8/5 1:00', '2009/8/5 2:00', '2009/8/5 3:00', '2009/8/5 4:00', '2009/8/5 5:00', '2009/8/5 6:00', '2009/8/5 7:00', '2009/8/5 8:00', '2009/8/5 9:00', '2009/8/5 10:00', '2009/8/5 11:00', '2009/8/5 12:00', '2009/8/5 13:00', '2009/8/5 14:00', '2009/8/5 15:00', '2009/8/5 16:00', '2009/8/5 17:00', '2009/8/5 18:00', '2009/8/5 19:00', '2009/8/5 20:00', '2009/8/5 21:00', '2009/8/5 22:00', '2009/8/5 23:00', '2009/8/6 0:00', '2009/8/6 1:00', '2009/8/6 2:00', '2009/8/6 3:00', '2009/8/6 4:00', '2009/8/6 5:00', '2009/8/6 6:00', '2009/8/6 7:00', '2009/8/6 8:00', '2009/8/6 9:00', '2009/8/6 10:00', '2009/8/6 11:00', '2009/8/6 12:00', '2009/8/6 13:00', '2009/8/6 14:00', '2009/8/6 15:00', '2009/8/6 16:00', '2009/8/6 17:00', '2009/8/6 18:00', '2009/8/6 19:00', '2009/8/6 20:00', '2009/8/6 21:00', '2009/8/6 22:00', '2009/8/6 23:00', '2009/8/7 0:00', '2009/8/7 1:00', '2009/8/7 2:00', '2009/8/7 3:00', '2009/8/7 4:00', '2009/8/7 5:00', '2009/8/7 6:00', '2009/8/7 7:00', '2009/8/7 8:00', '2009/8/7 9:00', '2009/8/7 10:00', '2009/8/7 11:00', '2009/8/7 12:00', '2009/8/7 13:00', '2009/8/7 14:00', '2009/8/7 15:00', '2009/8/7 16:00', '2009/8/7 17:00', '2009/8/7 18:00', '2009/8/7 19:00', '2009/8/7 20:00', '2009/8/7 21:00', '2009/8/7 22:00', '2009/8/7 23:00', '2009/8/8 0:00', '2009/8/8 1:00', '2009/8/8 2:00', '2009/8/8 3:00', '2009/8/8 4:00', '2009/8/8 5:00', '2009/8/8 6:00', '2009/8/8 7:00', '2009/8/8 8:00', '2009/8/8 9:00', '2009/8/8 10:00', '2009/8/8 11:00', '2009/8/8 12:00', '2009/8/8 13:00', '2009/8/8 14:00', '2009/8/8 15:00', '2009/8/8 16:00', '2009/8/8 17:00', '2009/8/8 18:00', '2009/8/8 19:00', '2009/8/8 20:00', '2009/8/8 21:00', '2009/8/8 22:00', '2009/8/8 23:00', '2009/8/9 0:00', '2009/8/9 1:00', '2009/8/9 2:00', '2009/8/9 3:00', '2009/8/9 4:00', '2009/8/9 5:00', '2009/8/9 6:00', '2009/8/9 7:00', '2009/8/9 8:00', '2009/8/9 9:00', '2009/8/9 10:00', '2009/8/9 11:00', '2009/8/9 12:00', '2009/8/9 13:00', '2009/8/9 14:00', '2009/8/9 15:00', '2009/8/9 16:00', '2009/8/9 17:00', '2009/8/9 18:00', '2009/8/9 19:00', '2009/8/9 20:00', '2009/8/9 21:00', '2009/8/9 22:00', '2009/8/9 23:00', '2009/8/10 0:00', '2009/8/10 1:00', '2009/8/10 2:00', '2009/8/10 3:00', '2009/8/10 4:00', '2009/8/10 5:00', '2009/8/10 6:00', '2009/8/10 7:00', '2009/8/10 8:00', '2009/8/10 9:00', '2009/8/10 10:00', '2009/8/10 11:00', '2009/8/10 12:00', '2009/8/10 13:00', '2009/8/10 14:00', '2009/8/10 15:00', '2009/8/10 16:00', '2009/8/10 17:00', '2009/8/10 18:00', '2009/8/10 19:00', '2009/8/10 20:00', '2009/8/10 21:00', '2009/8/10 22:00', '2009/8/10 23:00', '2009/8/11 0:00', '2009/8/11 1:00', '2009/8/11 2:00', '2009/8/11 3:00', '2009/8/11 4:00', '2009/8/11 5:00', '2009/8/11 6:00', '2009/8/11 7:00', '2009/8/11 8:00', '2009/8/11 9:00', '2009/8/11 10:00', '2009/8/11 11:00', '2009/8/11 12:00', '2009/8/11 13:00', '2009/8/11 14:00', '2009/8/11 15:00', '2009/8/11 16:00', '2009/8/11 17:00', '2009/8/11 18:00', '2009/8/11 19:00', '2009/8/11 20:00', '2009/8/11 21:00', '2009/8/11 22:00', '2009/8/11 23:00', '2009/8/12 0:00', '2009/8/12 1:00', '2009/8/12 2:00', '2009/8/12 3:00', '2009/8/12 4:00', '2009/8/12 5:00', '2009/8/12 6:00', '2009/8/12 7:00', '2009/8/12 8:00', '2009/8/12 9:00', '2009/8/12 10:00', '2009/8/12 11:00', '2009/8/12 12:00', '2009/8/12 13:00', '2009/8/12 14:00', '2009/8/12 15:00', '2009/8/12 16:00', '2009/8/12 17:00', '2009/8/12 18:00', '2009/8/12 19:00', '2009/8/12 20:00', '2009/8/12 21:00', '2009/8/12 22:00', '2009/8/12 23:00', '2009/8/13 0:00', '2009/8/13 1:00', '2009/8/13 2:00', '2009/8/13 3:00', '2009/8/13 4:00', '2009/8/13 5:00', '2009/8/13 6:00', '2009/8/13 7:00', '2009/8/13 8:00', '2009/8/13 9:00', '2009/8/13 10:00', '2009/8/13 11:00', '2009/8/13 12:00', '2009/8/13 13:00', '2009/8/13 14:00', '2009/8/13 15:00', '2009/8/13 16:00', '2009/8/13 17:00', '2009/8/13 18:00', '2009/8/13 19:00', '2009/8/13 20:00', '2009/8/13 21:00', '2009/8/13 22:00', '2009/8/13 23:00', '2009/8/14 0:00', '2009/8/14 1:00', '2009/8/14 2:00', '2009/8/14 3:00', '2009/8/14 4:00', '2009/8/14 5:00', '2009/8/14 6:00', '2009/8/14 7:00', '2009/8/14 8:00', '2009/8/14 9:00', '2009/8/14 10:00', '2009/8/14 11:00', '2009/8/14 12:00', '2009/8/14 13:00', '2009/8/14 14:00', '2009/8/14 15:00', '2009/8/14 16:00', '2009/8/14 17:00', '2009/8/14 18:00', '2009/8/14 19:00', '2009/8/14 20:00', '2009/8/14 21:00', '2009/8/14 22:00', '2009/8/14 23:00', '2009/8/15 0:00', '2009/8/15 1:00', '2009/8/15 2:00', '2009/8/15 3:00', '2009/8/15 4:00', '2009/8/15 5:00', '2009/8/15 6:00', '2009/8/15 7:00', '2009/8/15 8:00', '2009/8/15 9:00', '2009/8/15 10:00', '2009/8/15 11:00', '2009/8/15 12:00', '2009/8/15 13:00', '2009/8/15 14:00', '2009/8/15 15:00', '2009/8/15 16:00', '2009/8/15 17:00', '2009/8/15 18:00', '2009/8/15 19:00', '2009/8/15 20:00', '2009/8/15 21:00', '2009/8/15 22:00', '2009/8/15 23:00', '2009/8/16 0:00', '2009/8/16 1:00', '2009/8/16 2:00', '2009/8/16 3:00', '2009/8/16 4:00', '2009/8/16 5:00', '2009/8/16 6:00', '2009/8/16 7:00', '2009/8/16 8:00', '2009/8/16 9:00', '2009/8/16 10:00', '2009/8/16 11:00', '2009/8/16 12:00', '2009/8/16 13:00', '2009/8/16 14:00', '2009/8/16 15:00', '2009/8/16 16:00', '2009/8/16 17:00', '2009/8/16 18:00', '2009/8/16 19:00', '2009/8/16 20:00', '2009/8/16 21:00', '2009/8/16 22:00', '2009/8/16 23:00', '2009/8/17 0:00', '2009/8/17 1:00', '2009/8/17 2:00', '2009/8/17 3:00', '2009/8/17 4:00', '2009/8/17 5:00', '2009/8/17 6:00', '2009/8/17 7:00', '2009/8/17 8:00', '2009/8/17 9:00', '2009/8/17 10:00', '2009/8/17 11:00', '2009/8/17 12:00', '2009/8/17 13:00', '2009/8/17 14:00', '2009/8/17 15:00', '2009/8/17 16:00', '2009/8/17 17:00', '2009/8/17 18:00', '2009/8/17 19:00', '2009/8/17 20:00', '2009/8/17 21:00', '2009/8/17 22:00', '2009/8/17 23:00', '2009/8/18 0:00', '2009/8/18 1:00', '2009/8/18 2:00', '2009/8/18 3:00', '2009/8/18 4:00', '2009/8/18 5:00', '2009/8/18 6:00', '2009/8/18 7:00', '2009/8/18 8:00', '2009/8/18 9:00', '2009/8/18 10:00', '2009/8/18 11:00', '2009/8/18 12:00', '2009/8/18 13:00', '2009/8/18 14:00', '2009/8/18 15:00', '2009/8/18 16:00', '2009/8/18 17:00', '2009/8/18 18:00', '2009/8/18 19:00', '2009/8/18 20:00', '2009/8/18 21:00', '2009/8/18 22:00', '2009/8/18 23:00', '2009/8/19 0:00', '2009/8/19 1:00', '2009/8/19 2:00', '2009/8/19 3:00', '2009/8/19 4:00', '2009/8/19 5:00', '2009/8/19 6:00', '2009/8/19 7:00', '2009/8/19 8:00', '2009/8/19 9:00', '2009/8/19 10:00', '2009/8/19 11:00', '2009/8/19 12:00', '2009/8/19 13:00', '2009/8/19 14:00', '2009/8/19 15:00', '2009/8/19 16:00', '2009/8/19 17:00', '2009/8/19 18:00', '2009/8/19 19:00', '2009/8/19 20:00', '2009/8/19 21:00', '2009/8/19 22:00', '2009/8/19 23:00', '2009/8/20 0:00', '2009/8/20 1:00', '2009/8/20 2:00', '2009/8/20 3:00', '2009/8/20 4:00', '2009/8/20 5:00', '2009/8/20 6:00', '2009/8/20 7:00', '2009/8/20 8:00', '2009/8/20 9:00', '2009/8/20 10:00', '2009/8/20 11:00', '2009/8/20 12:00', '2009/8/20 13:00', '2009/8/20 14:00', '2009/8/20 15:00', '2009/8/20 16:00', '2009/8/20 17:00', '2009/8/20 18:00', '2009/8/20 19:00', '2009/8/20 20:00', '2009/8/20 21:00', '2009/8/20 22:00', '2009/8/20 23:00', '2009/8/21 0:00', '2009/8/21 1:00', '2009/8/21 2:00', '2009/8/21 3:00', '2009/8/21 4:00', '2009/8/21 5:00', '2009/8/21 6:00', '2009/8/21 7:00', '2009/8/21 8:00', '2009/8/21 9:00', '2009/8/21 10:00', '2009/8/21 11:00', '2009/8/21 12:00', '2009/8/21 13:00', '2009/8/21 14:00', '2009/8/21 15:00', '2009/8/21 16:00', '2009/8/21 17:00', '2009/8/21 18:00', '2009/8/21 19:00', '2009/8/21 20:00', '2009/8/21 21:00', '2009/8/21 22:00', '2009/8/21 23:00', '2009/8/22 0:00', '2009/8/22 1:00', '2009/8/22 2:00', '2009/8/22 3:00', '2009/8/22 4:00', '2009/8/22 5:00', '2009/8/22 6:00', '2009/8/22 7:00', '2009/8/22 8:00', '2009/8/22 9:00', '2009/8/22 10:00', '2009/8/22 11:00', '2009/8/22 12:00', '2009/8/22 13:00', '2009/8/22 14:00', '2009/8/22 15:00', '2009/8/22 16:00', '2009/8/22 17:00', '2009/8/22 18:00', '2009/8/22 19:00', '2009/8/22 20:00', '2009/8/22 21:00', '2009/8/22 22:00', '2009/8/22 23:00', '2009/8/23 0:00', '2009/8/23 1:00', '2009/8/23 2:00', '2009/8/23 3:00', '2009/8/23 4:00', '2009/8/23 5:00', '2009/8/23 6:00', '2009/8/23 7:00', '2009/8/23 8:00', '2009/8/23 9:00', '2009/8/23 10:00', '2009/8/23 11:00', '2009/8/23 12:00', '2009/8/23 13:00', '2009/8/23 14:00', '2009/8/23 15:00', '2009/8/23 16:00', '2009/8/23 17:00', '2009/8/23 18:00', '2009/8/23 19:00', '2009/8/23 20:00', '2009/8/23 21:00', '2009/8/23 22:00', '2009/8/23 23:00', '2009/8/24 0:00', '2009/8/24 1:00', '2009/8/24 2:00', '2009/8/24 3:00', '2009/8/24 4:00', '2009/8/24 5:00', '2009/8/24 6:00', '2009/8/24 7:00', '2009/8/24 8:00', '2009/8/24 9:00', '2009/8/24 10:00', '2009/8/24 11:00', '2009/8/24 12:00', '2009/8/24 13:00', '2009/8/24 14:00', '2009/8/24 15:00', '2009/8/24 16:00', '2009/8/24 17:00', '2009/8/24 18:00', '2009/8/24 19:00', '2009/8/24 20:00', '2009/8/24 21:00', '2009/8/24 22:00', '2009/8/24 23:00', '2009/8/25 0:00', '2009/8/25 1:00', '2009/8/25 2:00', '2009/8/25 3:00', '2009/8/25 4:00', '2009/8/25 5:00', '2009/8/25 6:00', '2009/8/25 7:00', '2009/8/25 8:00', '2009/8/25 9:00', '2009/8/25 10:00', '2009/8/25 11:00', '2009/8/25 12:00', '2009/8/25 13:00', '2009/8/25 14:00', '2009/8/25 15:00', '2009/8/25 16:00', '2009/8/25 17:00', '2009/8/25 18:00', '2009/8/25 19:00', '2009/8/25 20:00', '2009/8/25 21:00', '2009/8/25 22:00', '2009/8/25 23:00', '2009/8/26 0:00', '2009/8/26 1:00', '2009/8/26 2:00', '2009/8/26 3:00', '2009/8/26 4:00', '2009/8/26 5:00', '2009/8/26 6:00', '2009/8/26 7:00', '2009/8/26 8:00', '2009/8/26 9:00', '2009/8/26 10:00', '2009/8/26 11:00', '2009/8/26 12:00', '2009/8/26 13:00', '2009/8/26 14:00', '2009/8/26 15:00', '2009/8/26 16:00', '2009/8/26 17:00', '2009/8/26 18:00', '2009/8/26 19:00', '2009/8/26 20:00', '2009/8/26 21:00', '2009/8/26 22:00', '2009/8/26 23:00', '2009/8/27 0:00', '2009/8/27 1:00', '2009/8/27 2:00', '2009/8/27 3:00', '2009/8/27 4:00', '2009/8/27 5:00', '2009/8/27 6:00', '2009/8/27 7:00', '2009/8/27 8:00', '2009/8/27 9:00', '2009/8/27 10:00', '2009/8/27 11:00', '2009/8/27 12:00', '2009/8/27 13:00', '2009/8/27 14:00', '2009/8/27 15:00', '2009/8/27 16:00', '2009/8/27 17:00', '2009/8/27 18:00', '2009/8/27 19:00', '2009/8/27 20:00', '2009/8/27 21:00', '2009/8/27 22:00', '2009/8/27 23:00', '2009/8/28 0:00', '2009/8/28 1:00', '2009/8/28 2:00', '2009/8/28 3:00', '2009/8/28 4:00', '2009/8/28 5:00', '2009/8/28 6:00', '2009/8/28 7:00', '2009/8/28 8:00', '2009/8/28 9:00', '2009/8/28 10:00', '2009/8/28 11:00', '2009/8/28 12:00', '2009/8/28 13:00', '2009/8/28 14:00', '2009/8/28 15:00', '2009/8/28 16:00', '2009/8/28 17:00', '2009/8/28 18:00', '2009/8/28 19:00', '2009/8/28 20:00', '2009/8/28 21:00', '2009/8/28 22:00', '2009/8/28 23:00', '2009/8/29 0:00', '2009/8/29 1:00', '2009/8/29 2:00', '2009/8/29 3:00', '2009/8/29 4:00', '2009/8/29 5:00', '2009/8/29 6:00', '2009/8/29 7:00', '2009/8/29 8:00', '2009/8/29 9:00', '2009/8/29 10:00', '2009/8/29 11:00', '2009/8/29 12:00', '2009/8/29 13:00', '2009/8/29 14:00', '2009/8/29 15:00', '2009/8/29 16:00', '2009/8/29 17:00', '2009/8/29 18:00', '2009/8/29 19:00', '2009/8/29 20:00', '2009/8/29 21:00', '2009/8/29 22:00', '2009/8/29 23:00', '2009/8/30 0:00', '2009/8/30 1:00', '2009/8/30 2:00', '2009/8/30 3:00', '2009/8/30 4:00', '2009/8/30 5:00', '2009/8/30 6:00', '2009/8/30 7:00', '2009/8/30 8:00', '2009/8/30 9:00', '2009/8/30 10:00', '2009/8/30 11:00', '2009/8/30 12:00', '2009/8/30 13:00', '2009/8/30 14:00', '2009/8/30 15:00', '2009/8/30 16:00', '2009/8/30 17:00', '2009/8/30 18:00', '2009/8/30 19:00', '2009/8/30 20:00', '2009/8/30 21:00', '2009/8/30 22:00', '2009/8/30 23:00', '2009/8/31 0:00', '2009/8/31 1:00', '2009/8/31 2:00', '2009/8/31 3:00', '2009/8/31 4:00', '2009/8/31 5:00', '2009/8/31 6:00', '2009/8/31 7:00', '2009/8/31 8:00', '2009/8/31 9:00', '2009/8/31 10:00', '2009/8/31 11:00', '2009/8/31 12:00', '2009/8/31 13:00', '2009/8/31 14:00', '2009/8/31 15:00', '2009/8/31 16:00', '2009/8/31 17:00', '2009/8/31 18:00', '2009/8/31 19:00', '2009/8/31 20:00', '2009/8/31 21:00', '2009/8/31 22:00', '2009/8/31 23:00', - '2009/9/1 0:00', '2009/9/1 1:00', '2009/9/1 2:00', '2009/9/1 3:00', '2009/9/1 4:00', '2009/9/1 5:00', '2009/9/1 6:00', '2009/9/1 7:00', '2009/9/1 8:00', '2009/9/1 9:00', '2009/9/1 10:00', '2009/9/1 11:00', '2009/9/1 12:00', '2009/9/1 13:00', '2009/9/1 14:00', '2009/9/1 15:00', '2009/9/1 16:00', '2009/9/1 17:00', '2009/9/1 18:00', '2009/9/1 19:00', '2009/9/1 20:00', '2009/9/1 21:00', '2009/9/1 22:00', '2009/9/1 23:00', '2009/9/2 0:00', '2009/9/2 1:00', '2009/9/2 2:00', '2009/9/2 3:00', '2009/9/2 4:00', '2009/9/2 5:00', '2009/9/2 6:00', '2009/9/2 7:00', '2009/9/2 8:00', '2009/9/2 9:00', '2009/9/2 10:00', '2009/9/2 11:00', '2009/9/2 12:00', '2009/9/2 13:00', '2009/9/2 14:00', '2009/9/2 15:00', '2009/9/2 16:00', '2009/9/2 17:00', '2009/9/2 18:00', '2009/9/2 19:00', '2009/9/2 20:00', '2009/9/2 21:00', '2009/9/2 22:00', '2009/9/2 23:00', '2009/9/3 0:00', '2009/9/3 1:00', '2009/9/3 2:00', '2009/9/3 3:00', '2009/9/3 4:00', '2009/9/3 5:00', '2009/9/3 6:00', '2009/9/3 7:00', '2009/9/3 8:00', '2009/9/3 9:00', '2009/9/3 10:00', '2009/9/3 11:00', '2009/9/3 12:00', '2009/9/3 13:00', '2009/9/3 14:00', '2009/9/3 15:00', '2009/9/3 16:00', '2009/9/3 17:00', '2009/9/3 18:00', '2009/9/3 19:00', '2009/9/3 20:00', '2009/9/3 21:00', '2009/9/3 22:00', '2009/9/3 23:00', '2009/9/4 0:00', '2009/9/4 1:00', '2009/9/4 2:00', '2009/9/4 3:00', '2009/9/4 4:00', '2009/9/4 5:00', '2009/9/4 6:00', '2009/9/4 7:00', '2009/9/4 8:00', '2009/9/4 9:00', '2009/9/4 10:00', '2009/9/4 11:00', '2009/9/4 12:00', '2009/9/4 13:00', '2009/9/4 14:00', '2009/9/4 15:00', '2009/9/4 16:00', '2009/9/4 17:00', '2009/9/4 18:00', '2009/9/4 19:00', '2009/9/4 20:00', '2009/9/4 21:00', '2009/9/4 22:00', '2009/9/4 23:00', '2009/9/5 0:00', '2009/9/5 1:00', '2009/9/5 2:00', '2009/9/5 3:00', '2009/9/5 4:00', '2009/9/5 5:00', '2009/9/5 6:00', '2009/9/5 7:00', '2009/9/5 8:00', '2009/9/5 9:00', '2009/9/5 10:00', '2009/9/5 11:00', '2009/9/5 12:00', '2009/9/5 13:00', '2009/9/5 14:00', '2009/9/5 15:00', '2009/9/5 16:00', '2009/9/5 17:00', '2009/9/5 18:00', '2009/9/5 19:00', '2009/9/5 20:00', '2009/9/5 21:00', '2009/9/5 22:00', '2009/9/5 23:00', '2009/9/6 0:00', '2009/9/6 1:00', '2009/9/6 2:00', '2009/9/6 3:00', '2009/9/6 4:00', '2009/9/6 5:00', '2009/9/6 6:00', '2009/9/6 7:00', '2009/9/6 8:00', '2009/9/6 9:00', '2009/9/6 10:00', '2009/9/6 11:00', '2009/9/6 12:00', '2009/9/6 13:00', '2009/9/6 14:00', '2009/9/6 15:00', '2009/9/6 16:00', '2009/9/6 17:00', '2009/9/6 18:00', '2009/9/6 19:00', '2009/9/6 20:00', '2009/9/6 21:00', '2009/9/6 22:00', '2009/9/6 23:00', '2009/9/7 0:00', '2009/9/7 1:00', '2009/9/7 2:00', '2009/9/7 3:00', '2009/9/7 4:00', '2009/9/7 5:00', '2009/9/7 6:00', '2009/9/7 7:00', '2009/9/7 8:00', '2009/9/7 9:00', '2009/9/7 10:00', '2009/9/7 11:00', '2009/9/7 12:00', '2009/9/7 13:00', '2009/9/7 14:00', '2009/9/7 15:00', '2009/9/7 16:00', '2009/9/7 17:00', '2009/9/7 18:00', '2009/9/7 19:00', '2009/9/7 20:00', '2009/9/7 21:00', '2009/9/7 22:00', '2009/9/7 23:00', '2009/9/8 0:00', '2009/9/8 1:00', '2009/9/8 2:00', '2009/9/8 3:00', '2009/9/8 4:00', '2009/9/8 5:00', '2009/9/8 6:00', '2009/9/8 7:00', '2009/9/8 8:00', '2009/9/8 9:00', '2009/9/8 10:00', '2009/9/8 11:00', '2009/9/8 12:00', '2009/9/8 13:00', '2009/9/8 14:00', '2009/9/8 15:00', '2009/9/8 16:00', '2009/9/8 17:00', '2009/9/8 18:00', '2009/9/8 19:00', '2009/9/8 20:00', '2009/9/8 21:00', '2009/9/8 22:00', '2009/9/8 23:00', '2009/9/9 0:00', '2009/9/9 1:00', '2009/9/9 2:00', '2009/9/9 3:00', '2009/9/9 4:00', '2009/9/9 5:00', '2009/9/9 6:00', '2009/9/9 7:00', '2009/9/9 8:00', '2009/9/9 9:00', '2009/9/9 10:00', '2009/9/9 11:00', '2009/9/9 12:00', '2009/9/9 13:00', '2009/9/9 14:00', '2009/9/9 15:00', '2009/9/9 16:00', '2009/9/9 17:00', '2009/9/9 18:00', '2009/9/9 19:00', '2009/9/9 20:00', '2009/9/9 21:00', '2009/9/9 22:00', '2009/9/9 23:00', '2009/9/10 0:00', '2009/9/10 1:00', '2009/9/10 2:00', '2009/9/10 3:00', '2009/9/10 4:00', '2009/9/10 5:00', '2009/9/10 6:00', '2009/9/10 7:00', '2009/9/10 8:00', '2009/9/10 9:00', '2009/9/10 10:00', '2009/9/10 11:00', '2009/9/10 12:00', '2009/9/10 13:00', '2009/9/10 14:00', '2009/9/10 15:00', '2009/9/10 16:00', '2009/9/10 17:00', '2009/9/10 18:00', '2009/9/10 19:00', '2009/9/10 20:00', '2009/9/10 21:00', '2009/9/10 22:00', '2009/9/10 23:00', '2009/9/11 0:00', '2009/9/11 1:00', '2009/9/11 2:00', '2009/9/11 3:00', '2009/9/11 4:00', '2009/9/11 5:00', '2009/9/11 6:00', '2009/9/11 7:00', '2009/9/11 8:00', '2009/9/11 9:00', '2009/9/11 10:00', '2009/9/11 11:00', '2009/9/11 12:00', '2009/9/11 13:00', '2009/9/11 14:00', '2009/9/11 15:00', '2009/9/11 16:00', '2009/9/11 17:00', '2009/9/11 18:00', '2009/9/11 19:00', '2009/9/11 20:00', '2009/9/11 21:00', '2009/9/11 22:00', '2009/9/11 23:00', '2009/9/12 0:00', '2009/9/12 1:00', '2009/9/12 2:00', '2009/9/12 3:00', '2009/9/12 4:00', '2009/9/12 5:00', '2009/9/12 6:00', '2009/9/12 7:00', '2009/9/12 8:00', '2009/9/12 9:00', '2009/9/12 10:00', '2009/9/12 11:00', '2009/9/12 12:00', '2009/9/12 13:00', '2009/9/12 14:00', '2009/9/12 15:00', '2009/9/12 16:00', '2009/9/12 17:00', '2009/9/12 18:00', '2009/9/12 19:00', '2009/9/12 20:00', '2009/9/12 21:00', '2009/9/12 22:00', '2009/9/12 23:00', '2009/9/13 0:00', '2009/9/13 1:00', '2009/9/13 2:00', '2009/9/13 3:00', '2009/9/13 4:00', '2009/9/13 5:00', '2009/9/13 6:00', '2009/9/13 7:00', '2009/9/13 8:00', '2009/9/13 9:00', '2009/9/13 10:00', '2009/9/13 11:00', '2009/9/13 12:00', '2009/9/13 13:00', '2009/9/13 14:00', '2009/9/13 15:00', '2009/9/13 16:00', '2009/9/13 17:00', '2009/9/13 18:00', '2009/9/13 19:00', '2009/9/13 20:00', '2009/9/13 21:00', '2009/9/13 22:00', '2009/9/13 23:00', '2009/9/14 0:00', '2009/9/14 1:00', '2009/9/14 2:00', '2009/9/14 3:00', '2009/9/14 4:00', '2009/9/14 5:00', '2009/9/14 6:00', '2009/9/14 7:00', '2009/9/14 8:00', '2009/9/14 9:00', '2009/9/14 10:00', '2009/9/14 11:00', '2009/9/14 12:00', '2009/9/14 13:00', '2009/9/14 14:00', '2009/9/14 15:00', '2009/9/14 16:00', '2009/9/14 17:00', '2009/9/14 18:00', '2009/9/14 19:00', '2009/9/14 20:00', '2009/9/14 21:00', '2009/9/14 22:00', '2009/9/14 23:00', '2009/9/15 0:00', '2009/9/15 1:00', '2009/9/15 2:00', '2009/9/15 3:00', '2009/9/15 4:00', '2009/9/15 5:00', '2009/9/15 6:00', '2009/9/15 7:00', '2009/9/15 8:00', '2009/9/15 9:00', '2009/9/15 10:00', '2009/9/15 11:00', '2009/9/15 12:00', '2009/9/15 13:00', '2009/9/15 14:00', '2009/9/15 15:00', '2009/9/15 16:00', '2009/9/15 17:00', '2009/9/15 18:00', '2009/9/15 19:00', '2009/9/15 20:00', '2009/9/15 21:00', '2009/9/15 22:00', '2009/9/15 23:00', '2009/9/16 0:00', '2009/9/16 1:00', '2009/9/16 2:00', '2009/9/16 3:00', '2009/9/16 4:00', '2009/9/16 5:00', '2009/9/16 6:00', '2009/9/16 7:00', '2009/9/16 8:00', '2009/9/16 9:00', '2009/9/16 10:00', '2009/9/16 11:00', '2009/9/16 12:00', '2009/9/16 13:00', '2009/9/16 14:00', '2009/9/16 15:00', '2009/9/16 16:00', '2009/9/16 17:00', '2009/9/16 18:00', '2009/9/16 19:00', '2009/9/16 20:00', '2009/9/16 21:00', '2009/9/16 22:00', '2009/9/16 23:00', '2009/9/17 0:00', '2009/9/17 1:00', '2009/9/17 2:00', '2009/9/17 3:00', '2009/9/17 4:00', '2009/9/17 5:00', '2009/9/17 6:00', '2009/9/17 7:00', '2009/9/17 8:00', '2009/9/17 9:00', '2009/9/17 10:00', '2009/9/17 11:00', '2009/9/17 12:00', '2009/9/17 13:00', '2009/9/17 14:00', '2009/9/17 15:00', '2009/9/17 16:00', '2009/9/17 17:00', '2009/9/17 18:00', '2009/9/17 19:00', '2009/9/17 20:00', '2009/9/17 21:00', '2009/9/17 22:00', '2009/9/17 23:00', '2009/9/18 0:00', '2009/9/18 1:00', '2009/9/18 2:00', '2009/9/18 3:00', '2009/9/18 4:00', '2009/9/18 5:00', '2009/9/18 6:00', '2009/9/18 7:00', '2009/9/18 8:00', '2009/9/18 9:00', '2009/9/18 10:00', '2009/9/18 11:00', '2009/9/18 12:00', '2009/9/18 13:00', '2009/9/18 14:00', '2009/9/18 15:00', '2009/9/18 16:00', '2009/9/18 17:00', '2009/9/18 18:00', '2009/9/18 19:00', '2009/9/18 20:00', '2009/9/18 21:00', '2009/9/18 22:00', '2009/9/18 23:00', '2009/9/19 0:00', '2009/9/19 1:00', '2009/9/19 2:00', '2009/9/19 3:00', '2009/9/19 4:00', '2009/9/19 5:00', '2009/9/19 6:00', '2009/9/19 7:00', '2009/9/19 8:00', '2009/9/19 9:00', '2009/9/19 10:00', '2009/9/19 11:00', '2009/9/19 12:00', '2009/9/19 13:00', '2009/9/19 14:00', '2009/9/19 15:00', '2009/9/19 16:00', '2009/9/19 17:00', '2009/9/19 18:00', '2009/9/19 19:00', '2009/9/19 20:00', '2009/9/19 21:00', '2009/9/19 22:00', '2009/9/19 23:00', '2009/9/20 0:00', '2009/9/20 1:00', '2009/9/20 2:00', '2009/9/20 3:00', '2009/9/20 4:00', '2009/9/20 5:00', '2009/9/20 6:00', '2009/9/20 7:00', '2009/9/20 8:00', '2009/9/20 9:00', '2009/9/20 10:00', '2009/9/20 11:00', '2009/9/20 12:00', '2009/9/20 13:00', '2009/9/20 14:00', '2009/9/20 15:00', '2009/9/20 16:00', '2009/9/20 17:00', '2009/9/20 18:00', '2009/9/20 19:00', '2009/9/20 20:00', '2009/9/20 21:00', '2009/9/20 22:00', '2009/9/20 23:00', '2009/9/21 0:00', '2009/9/21 1:00', '2009/9/21 2:00', '2009/9/21 3:00', '2009/9/21 4:00', '2009/9/21 5:00', '2009/9/21 6:00', '2009/9/21 7:00', '2009/9/21 8:00', '2009/9/21 9:00', '2009/9/21 10:00', '2009/9/21 11:00', '2009/9/21 12:00', '2009/9/21 13:00', '2009/9/21 14:00', '2009/9/21 15:00', '2009/9/21 16:00', '2009/9/21 17:00', '2009/9/21 18:00', '2009/9/21 19:00', '2009/9/21 20:00', '2009/9/21 21:00', '2009/9/21 22:00', '2009/9/21 23:00', '2009/9/22 0:00', '2009/9/22 1:00', '2009/9/22 2:00', '2009/9/22 3:00', '2009/9/22 4:00', '2009/9/22 5:00', '2009/9/22 6:00', '2009/9/22 7:00', '2009/9/22 8:00', '2009/9/22 9:00', '2009/9/22 10:00', '2009/9/22 11:00', '2009/9/22 12:00', '2009/9/22 13:00', '2009/9/22 14:00', '2009/9/22 15:00', '2009/9/22 16:00', '2009/9/22 17:00', '2009/9/22 18:00', '2009/9/22 19:00', '2009/9/22 20:00', '2009/9/22 21:00', '2009/9/22 22:00', '2009/9/22 23:00', '2009/9/23 0:00', '2009/9/23 1:00', '2009/9/23 2:00', '2009/9/23 3:00', '2009/9/23 4:00', '2009/9/23 5:00', '2009/9/23 6:00', '2009/9/23 7:00', '2009/9/23 8:00', '2009/9/23 9:00', '2009/9/23 10:00', '2009/9/23 11:00', '2009/9/23 12:00', '2009/9/23 13:00', '2009/9/23 14:00', '2009/9/23 15:00', '2009/9/23 16:00', '2009/9/23 17:00', '2009/9/23 18:00', '2009/9/23 19:00', '2009/9/23 20:00', '2009/9/23 21:00', '2009/9/23 22:00', '2009/9/23 23:00', '2009/9/24 0:00', '2009/9/24 1:00', '2009/9/24 2:00', '2009/9/24 3:00', '2009/9/24 4:00', '2009/9/24 5:00', '2009/9/24 6:00', '2009/9/24 7:00', '2009/9/24 8:00', '2009/9/24 9:00', '2009/9/24 10:00', '2009/9/24 11:00', '2009/9/24 12:00', '2009/9/24 13:00', '2009/9/24 14:00', '2009/9/24 15:00', '2009/9/24 16:00', '2009/9/24 17:00', '2009/9/24 18:00', '2009/9/24 19:00', '2009/9/24 20:00', '2009/9/24 21:00', '2009/9/24 22:00', '2009/9/24 23:00', '2009/9/25 0:00', '2009/9/25 1:00', '2009/9/25 2:00', '2009/9/25 3:00', '2009/9/25 4:00', '2009/9/25 5:00', '2009/9/25 6:00', '2009/9/25 7:00', '2009/9/25 8:00', '2009/9/25 9:00', '2009/9/25 10:00', '2009/9/25 11:00', '2009/9/25 12:00', '2009/9/25 13:00', '2009/9/25 14:00', '2009/9/25 15:00', '2009/9/25 16:00', '2009/9/25 17:00', '2009/9/25 18:00', '2009/9/25 19:00', '2009/9/25 20:00', '2009/9/25 21:00', '2009/9/25 22:00', '2009/9/25 23:00', '2009/9/26 0:00', '2009/9/26 1:00', '2009/9/26 2:00', '2009/9/26 3:00', '2009/9/26 4:00', '2009/9/26 5:00', '2009/9/26 6:00', '2009/9/26 7:00', '2009/9/26 8:00', '2009/9/26 9:00', '2009/9/26 10:00', '2009/9/26 11:00', '2009/9/26 12:00', '2009/9/26 13:00', '2009/9/26 14:00', '2009/9/26 15:00', '2009/9/26 16:00', '2009/9/26 17:00', '2009/9/26 18:00', '2009/9/26 19:00', '2009/9/26 20:00', '2009/9/26 21:00', '2009/9/26 22:00', '2009/9/26 23:00', '2009/9/27 0:00', '2009/9/27 1:00', '2009/9/27 2:00', '2009/9/27 3:00', '2009/9/27 4:00', '2009/9/27 5:00', '2009/9/27 6:00', '2009/9/27 7:00', '2009/9/27 8:00', '2009/9/27 9:00', '2009/9/27 10:00', '2009/9/27 11:00', '2009/9/27 12:00', '2009/9/27 13:00', '2009/9/27 14:00', '2009/9/27 15:00', '2009/9/27 16:00', '2009/9/27 17:00', '2009/9/27 18:00', '2009/9/27 19:00', '2009/9/27 20:00', '2009/9/27 21:00', '2009/9/27 22:00', '2009/9/27 23:00', '2009/9/28 0:00', '2009/9/28 1:00', '2009/9/28 2:00', '2009/9/28 3:00', '2009/9/28 4:00', '2009/9/28 5:00', '2009/9/28 6:00', '2009/9/28 7:00', '2009/9/28 8:00', '2009/9/28 9:00', '2009/9/28 10:00', '2009/9/28 11:00', '2009/9/28 12:00', '2009/9/28 13:00', '2009/9/28 14:00', '2009/9/28 15:00', '2009/9/28 16:00', '2009/9/28 17:00', '2009/9/28 18:00', '2009/9/28 19:00', '2009/9/28 20:00', '2009/9/28 21:00', '2009/9/28 22:00', '2009/9/28 23:00', '2009/9/29 0:00', '2009/9/29 1:00', '2009/9/29 2:00', '2009/9/29 3:00', '2009/9/29 4:00', '2009/9/29 5:00', '2009/9/29 6:00', '2009/9/29 7:00', '2009/9/29 8:00', '2009/9/29 9:00', '2009/9/29 10:00', '2009/9/29 11:00', '2009/9/29 12:00', '2009/9/29 13:00', '2009/9/29 14:00', '2009/9/29 15:00', '2009/9/29 16:00', '2009/9/29 17:00', '2009/9/29 18:00', '2009/9/29 19:00', '2009/9/29 20:00', '2009/9/29 21:00', '2009/9/29 22:00', '2009/9/29 23:00', '2009/9/30 0:00', '2009/9/30 1:00', '2009/9/30 2:00', '2009/9/30 3:00', '2009/9/30 4:00', '2009/9/30 5:00', '2009/9/30 6:00', '2009/9/30 7:00', '2009/9/30 8:00', '2009/9/30 9:00', '2009/9/30 10:00', '2009/9/30 11:00', '2009/9/30 12:00', '2009/9/30 13:00', '2009/9/30 14:00', '2009/9/30 15:00', '2009/9/30 16:00', '2009/9/30 17:00', '2009/9/30 18:00', '2009/9/30 19:00', '2009/9/30 20:00', '2009/9/30 21:00', '2009/9/30 22:00', '2009/9/30 23:00', - '2009/10/1 0:00', '2009/10/1 1:00', '2009/10/1 2:00', '2009/10/1 3:00', '2009/10/1 4:00', '2009/10/1 5:00', '2009/10/1 6:00', '2009/10/1 7:00', '2009/10/1 8:00', '2009/10/1 9:00', '2009/10/1 10:00', '2009/10/1 11:00', '2009/10/1 12:00', '2009/10/1 13:00', '2009/10/1 14:00', '2009/10/1 15:00', '2009/10/1 16:00', '2009/10/1 17:00', '2009/10/1 18:00', '2009/10/1 19:00', '2009/10/1 20:00', '2009/10/1 21:00', '2009/10/1 22:00', '2009/10/1 23:00', '2009/10/2 0:00', '2009/10/2 1:00', '2009/10/2 2:00', '2009/10/2 3:00', '2009/10/2 4:00', '2009/10/2 5:00', '2009/10/2 6:00', '2009/10/2 7:00', '2009/10/2 8:00', '2009/10/2 9:00', '2009/10/2 10:00', '2009/10/2 11:00', '2009/10/2 12:00', '2009/10/2 13:00', '2009/10/2 14:00', '2009/10/2 15:00', '2009/10/2 16:00', '2009/10/2 17:00', '2009/10/2 18:00', '2009/10/2 19:00', '2009/10/2 20:00', '2009/10/2 21:00', '2009/10/2 22:00', '2009/10/2 23:00', '2009/10/3 0:00', '2009/10/3 1:00', '2009/10/3 2:00', '2009/10/3 3:00', '2009/10/3 4:00', '2009/10/3 5:00', '2009/10/3 6:00', '2009/10/3 7:00', '2009/10/3 8:00', '2009/10/3 9:00', '2009/10/3 10:00', '2009/10/3 11:00', '2009/10/3 12:00', '2009/10/3 13:00', '2009/10/3 14:00', '2009/10/3 15:00', '2009/10/3 16:00', '2009/10/3 17:00', '2009/10/3 18:00', '2009/10/3 19:00', '2009/10/3 20:00', '2009/10/3 21:00', '2009/10/3 22:00', '2009/10/3 23:00', '2009/10/4 0:00', '2009/10/4 1:00', '2009/10/4 2:00', '2009/10/4 3:00', '2009/10/4 4:00', '2009/10/4 5:00', '2009/10/4 6:00', '2009/10/4 7:00', '2009/10/4 8:00', '2009/10/4 9:00', '2009/10/4 10:00', '2009/10/4 11:00', '2009/10/4 12:00', '2009/10/4 13:00', '2009/10/4 14:00', '2009/10/4 15:00', '2009/10/4 16:00', '2009/10/4 17:00', '2009/10/4 18:00', '2009/10/4 19:00', '2009/10/4 20:00', '2009/10/4 21:00', '2009/10/4 22:00', '2009/10/4 23:00', '2009/10/5 0:00', '2009/10/5 1:00', '2009/10/5 2:00', '2009/10/5 3:00', '2009/10/5 4:00', '2009/10/5 5:00', '2009/10/5 6:00', '2009/10/5 7:00', '2009/10/5 8:00', '2009/10/5 9:00', '2009/10/5 10:00', '2009/10/5 11:00', '2009/10/5 12:00', '2009/10/5 13:00', '2009/10/5 14:00', '2009/10/5 15:00', '2009/10/5 16:00', '2009/10/5 17:00', '2009/10/5 18:00', '2009/10/5 19:00', '2009/10/5 20:00', '2009/10/5 21:00', '2009/10/5 22:00', '2009/10/5 23:00', '2009/10/6 0:00', '2009/10/6 1:00', '2009/10/6 2:00', '2009/10/6 3:00', '2009/10/6 4:00', '2009/10/6 5:00', '2009/10/6 6:00', '2009/10/6 7:00', '2009/10/6 8:00', '2009/10/6 9:00', '2009/10/6 10:00', '2009/10/6 11:00', '2009/10/6 12:00', '2009/10/6 13:00', '2009/10/6 14:00', '2009/10/6 15:00', '2009/10/6 16:00', '2009/10/6 17:00', '2009/10/6 18:00', '2009/10/6 19:00', '2009/10/6 20:00', '2009/10/6 21:00', '2009/10/6 22:00', '2009/10/6 23:00', '2009/10/7 0:00', '2009/10/7 1:00', '2009/10/7 2:00', '2009/10/7 3:00', '2009/10/7 4:00', '2009/10/7 5:00', '2009/10/7 6:00', '2009/10/7 7:00', '2009/10/7 8:00', '2009/10/7 9:00', '2009/10/7 10:00', '2009/10/7 11:00', '2009/10/7 12:00', '2009/10/7 13:00', '2009/10/7 14:00', '2009/10/7 15:00', '2009/10/7 16:00', '2009/10/7 17:00', '2009/10/7 18:00', '2009/10/7 19:00', '2009/10/7 20:00', '2009/10/7 21:00', '2009/10/7 22:00', '2009/10/7 23:00', '2009/10/8 0:00', '2009/10/8 1:00', '2009/10/8 2:00', '2009/10/8 3:00', '2009/10/8 4:00', '2009/10/8 5:00', '2009/10/8 6:00', '2009/10/8 7:00', '2009/10/8 8:00', '2009/10/8 9:00', '2009/10/8 10:00', '2009/10/8 11:00', '2009/10/8 12:00', '2009/10/8 13:00', '2009/10/8 14:00', '2009/10/8 15:00', '2009/10/8 16:00', '2009/10/8 17:00', '2009/10/8 18:00', '2009/10/8 19:00', '2009/10/8 20:00', '2009/10/8 21:00', '2009/10/8 22:00', '2009/10/8 23:00', '2009/10/9 0:00', '2009/10/9 1:00', '2009/10/9 2:00', '2009/10/9 3:00', '2009/10/9 4:00', '2009/10/9 5:00', '2009/10/9 6:00', '2009/10/9 7:00', '2009/10/9 8:00', '2009/10/9 9:00', '2009/10/9 10:00', '2009/10/9 11:00', '2009/10/9 12:00', '2009/10/9 13:00', '2009/10/9 14:00', '2009/10/9 15:00', '2009/10/9 16:00', '2009/10/9 17:00', '2009/10/9 18:00', '2009/10/9 19:00', '2009/10/9 20:00', '2009/10/9 21:00', '2009/10/9 22:00', '2009/10/9 23:00', '2009/10/10 0:00', '2009/10/10 1:00', '2009/10/10 2:00', '2009/10/10 3:00', '2009/10/10 4:00', '2009/10/10 5:00', '2009/10/10 6:00', '2009/10/10 7:00', '2009/10/10 8:00', '2009/10/10 9:00', '2009/10/10 10:00', '2009/10/10 11:00', '2009/10/10 12:00', '2009/10/10 13:00', '2009/10/10 14:00', '2009/10/10 15:00', '2009/10/10 16:00', '2009/10/10 17:00', '2009/10/10 18:00', '2009/10/10 19:00', '2009/10/10 20:00', '2009/10/10 21:00', '2009/10/10 22:00', '2009/10/10 23:00', '2009/10/11 0:00', '2009/10/11 1:00', '2009/10/11 2:00', '2009/10/11 3:00', '2009/10/11 4:00', '2009/10/11 5:00', '2009/10/11 6:00', '2009/10/11 7:00', '2009/10/11 8:00', '2009/10/11 9:00', '2009/10/11 10:00', '2009/10/11 11:00', '2009/10/11 12:00', '2009/10/11 13:00', '2009/10/11 14:00', '2009/10/11 15:00', '2009/10/11 16:00', '2009/10/11 17:00', '2009/10/11 18:00', '2009/10/11 19:00', '2009/10/11 20:00', '2009/10/11 21:00', '2009/10/11 22:00', '2009/10/11 23:00', '2009/10/12 0:00', '2009/10/12 1:00', '2009/10/12 2:00', '2009/10/12 3:00', '2009/10/12 4:00', '2009/10/12 5:00', '2009/10/12 6:00', '2009/10/12 7:00', '2009/10/12 8:00', '2009/10/12 9:00', '2009/10/12 10:00', '2009/10/12 11:00', '2009/10/12 12:00', '2009/10/12 13:00', '2009/10/12 14:00', '2009/10/12 15:00', '2009/10/12 16:00', '2009/10/12 17:00', '2009/10/12 18:00', '2009/10/12 19:00', '2009/10/12 20:00', '2009/10/12 21:00', '2009/10/12 22:00', '2009/10/12 23:00', '2009/10/13 0:00', '2009/10/13 1:00', '2009/10/13 2:00', '2009/10/13 3:00', '2009/10/13 4:00', '2009/10/13 5:00', '2009/10/13 6:00', '2009/10/13 7:00', '2009/10/13 8:00', '2009/10/13 9:00', '2009/10/13 10:00', '2009/10/13 11:00', '2009/10/13 12:00', '2009/10/13 13:00', '2009/10/13 14:00', '2009/10/13 15:00', '2009/10/13 16:00', '2009/10/13 17:00', '2009/10/13 18:00', '2009/10/13 19:00', '2009/10/13 20:00', '2009/10/13 21:00', '2009/10/13 22:00', '2009/10/13 23:00', '2009/10/14 0:00', '2009/10/14 1:00', '2009/10/14 2:00', '2009/10/14 3:00', '2009/10/14 4:00', '2009/10/14 5:00', '2009/10/14 6:00', '2009/10/14 7:00', '2009/10/14 8:00', '2009/10/14 9:00', '2009/10/14 10:00', '2009/10/14 11:00', '2009/10/14 12:00', '2009/10/14 13:00', '2009/10/14 14:00', '2009/10/14 15:00', '2009/10/14 16:00', '2009/10/14 17:00', '2009/10/14 18:00', '2009/10/14 19:00', '2009/10/14 20:00', '2009/10/14 21:00', '2009/10/14 22:00', '2009/10/14 23:00', '2009/10/15 0:00', '2009/10/15 1:00', '2009/10/15 2:00', '2009/10/15 3:00', '2009/10/15 4:00', '2009/10/15 5:00', '2009/10/15 6:00', '2009/10/15 7:00', '2009/10/15 8:00', '2009/10/15 9:00', '2009/10/15 10:00', '2009/10/15 11:00', '2009/10/15 12:00', '2009/10/15 13:00', '2009/10/15 14:00', '2009/10/15 15:00', '2009/10/15 16:00', '2009/10/15 17:00', '2009/10/15 18:00', '2009/10/15 19:00', '2009/10/15 20:00', '2009/10/15 21:00', '2009/10/15 22:00', '2009/10/15 23:00', '2009/10/16 0:00', '2009/10/16 1:00', '2009/10/16 2:00', '2009/10/16 3:00', '2009/10/16 4:00', '2009/10/16 5:00', '2009/10/16 6:00', '2009/10/16 7:00', '2009/10/16 8:00', '2009/10/16 9:00', '2009/10/16 10:00', '2009/10/16 11:00', '2009/10/16 12:00', '2009/10/16 13:00', '2009/10/16 14:00', '2009/10/16 15:00', '2009/10/16 16:00', '2009/10/16 17:00', '2009/10/16 18:00', '2009/10/16 19:00', '2009/10/16 20:00', '2009/10/16 21:00', '2009/10/16 22:00', '2009/10/16 23:00', '2009/10/17 0:00', '2009/10/17 1:00', '2009/10/17 2:00', '2009/10/17 3:00', '2009/10/17 4:00', '2009/10/17 5:00', '2009/10/17 6:00', '2009/10/17 7:00', '2009/10/17 8:00', '2009/10/17 9:00', '2009/10/17 10:00', '2009/10/17 11:00', '2009/10/17 12:00', '2009/10/17 13:00', '2009/10/17 14:00', '2009/10/17 15:00', '2009/10/17 16:00', '2009/10/17 17:00', '2009/10/17 18:00', '2009/10/17 19:00', '2009/10/17 20:00', '2009/10/17 21:00', '2009/10/17 22:00', '2009/10/17 23:00', '2009/10/18 0:00', '2009/10/18 1:00', '2009/10/18 2:00', '2009/10/18 3:00', '2009/10/18 4:00', '2009/10/18 5:00', '2009/10/18 6:00', '2009/10/18 7:00', '2009/10/18 8:00' - ] - } - ], - yAxis : [ - { - name : '流量(m^3/s)', - type : 'value', - max : 500 - }, - { - name : '降雨量(mm)', - type : 'value', - axisLabel : { - formatter: function(v){ - return - v; - } - } - } - ], - series : [ - { - name:'流量', - type:'line', - itemStyle: {normal: {areaStyle: {type: 'default'}}}, - data:[ - 0.97,0.96,0.96,0.95,0.95,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.93,0.92,0.91,0.9,0.89,0.88,0.87,0.87,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.87,0.88,0.9,0.93,0.96,0.99,1.03,1.06,1.1,1.14,1.17,1.2,1.23,1.26,1.29,1.33,1.36,1.4,1.43,1.45,1.48,1.49,1.51,1.51,1.5,1.49,1.47,1.44,1.41,1.37,1.34,1.3,1.27,1.24,1.22,1.2,1.19,1.18,1.16,1.15,1.14,1.13,1.12,1.11,1.11,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.09,1.09,1.08,1.07,1.06,1.05,1.04,1.03,1.03,1.02,1.01,1.01,1,0.99,0.98,0.97,0.96,0.96,0.95,0.95,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.93,0.92,0.91,0.9,0.89,0.88,0.87,0.87,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.85,0.84,0.83,0.82,0.81,0.8,0.8,0.79,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.77,0.75,0.73,0.71,0.68,0.65,0.63,0.61,0.59,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.57,0.57,0.57,0.56,0.55,0.55,0.54,0.54,0.53,0.52,0.52,0.51,0.51,0.5,0.5,0.49,0.48,0.48,0.47,0.47,0.47,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.52,0.67,0.9,1.19,1.52,1.87,2.22,2.55,2.84,3.07,3.22,3.28,3.28,3.28,3.28,3.28,3.28,3.28,3.28,3.28,3.28,3.28,3.28,3.28,3.24,3.13,2.97,2.77,2.54,2.3,2.05,1.82,1.62,1.46,1.35,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.3,1.26,1.21,1.14,1.06,0.97,0.89,0.81,0.74,0.69,0.65,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.63,0.63,0.62,0.62,0.61,0.6,0.59,0.59,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.59,0.61,0.63,0.65,0.68,0.71,0.73,0.75,0.77,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.77,0.75,0.73,0.71,0.68,0.65,0.63,0.61,0.59,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.59,0.59,0.6,0.61,0.62,0.62,0.63,0.63,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.65,0.66,0.68,0.69,0.71,0.73,0.74,0.76,0.77,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.79,0.81,0.82,0.84,0.86,0.88,0.9,0.92,0.93,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.93,0.92,0.91,0.9,0.89,0.88,0.87,0.87,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.85,0.84,0.82,0.8,0.78,0.76,0.75,0.73,0.72,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.72,0.73,0.74,0.76,0.78,0.79,0.82,0.84,0.86,0.89,0.91,0.94,0.97,1,1.02,1.05,1.08,1.11,1.14,1.17,1.19,1.22,1.25,1.27,1.29,1.31,1.33,1.35,1.36,1.38,1.39,1.39,1.4,1.4,1.4,1.39,1.37,1.35,1.32,1.29,1.26,1.22,1.18,1.14,1.1,1.05,1.01,0.97,0.93,0.89,0.85,0.82,0.78,0.76,0.74,0.72,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.72,0.73,0.74,0.75,0.77,0.78,0.8,0.82,0.84,0.87,0.89,0.92,0.94,0.97,0.99,1.02,1.05,1.08,1.1,1.13,1.16,1.18,1.21,1.23,1.26,1.28,1.3,1.32,1.34,1.35,1.37,1.38,1.39,1.4,1.41,1.41,1.42,1.42,1.43,1.43,1.43,1.44,1.44,1.44,1.44,1.45,1.45,1.45,1.46,1.46,1.46,1.47,1.47,1.48,1.48,1.49,1.5,1.51,1.54,1.62,1.73,1.88,2.05,2.24,2.45,2.67,2.89,3.11,3.31,3.51,3.69,3.86,4.03,4.18,4.33,4.48,4.62,4.76,4.89,5.02,5.16,5.29,5.43,5.57,5.71,5.86,6.02,6.18,6.36,6.54,6.73,6.93,7.15,7.38,7.62,7.88,8.16,8.46,8.77,9.11,9.46,9.84,10.24,10.67,11.12,11.6,12.3,13.66,16,38.43,82.21,146.6,218.7,226,225.23,223.08,219.78,212,199.82,184.6,168,151.65,137.21,126.31,119.94,115.52,112.06,108.92,105.44,101,94.56,86.36,77.67,69.76,63.9,60.38,57.41,54.84,52.57,50.56,48.71,46.97,45.25,43.48,41.6,39.5,37.19,34.81,32.46,30.27,28.36,26.85,25.86,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.27,24.65,23.7,22.52,21.17,19.75,18.33,16.98,15.8,14.85,14.23,14,14.02,14.08,14.17,14.29,14.44,14.61,14.8,15.01,15.23,15.47,15.71,15.95,16.19,16.43,16.67,16.89,17.1,17.29,17.46,17.61,17.73,17.82,17.88,17.9,17.63,16.88,15.75,14.33,12.71,10.98,9.23,7.56,6.05,4.81,3.92,3.47,3.28,3.1,2.93,2.76,2.61,2.46,2.32,2.19,2.07,1.96,1.85,1.75,1.66,1.58,1.51,1.44,1.39,1.34,1.29,1.26,1.23,1.22,1.2,1.2,1.2,1.2,1.2,1.2,1.21,1.21,1.21,1.21,1.22,1.22,1.22,1.23,1.23,1.23,1.24,1.24,1.25,1.25,1.25,1.26,1.26,1.27,1.27,1.27,1.28,1.28,1.28,1.29,1.29,1.29,1.29,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.29,1.29,1.29,1.29,1.28,1.28,1.28,1.27,1.27,1.26,1.25,1.25,1.24,1.23,1.23,1.22,1.21,1.2,1.16,1.06,0.95,0.83,0.74,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.68,0.68,0.68,0.68,0.68,0.68,0.67,0.67,0.67,0.67,0.67,0.67,0.67,0.66,0.66,0.66,0.66,0.66,0.66,0.66,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.65,0.66,0.68,0.69,0.71,0.73,0.74,0.76,0.77,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.8,0.86,0.95,1.08,1.25,1.46,1.7,1.97,2.28,2.63,3.01,3.42,3.87,4.35,4.86,5.4,5.98,6.59,7.92,10.49,14.04,18.31,23.04,27.98,32.87,37.45,41.46,44.64,46.74,47.5,46.86,45.16,42.77,40.04,37.33,35,32.74,30.21,27.7,25.5,23.9,23.2,23.06,22.94,22.84,22.77,22.72,22.7,22.8,23.23,23.95,24.91,26.04,27.3,28.76,30.7,33.39,37.12,42.15,48.77,65.22,252.1,257,237.32,221.19,212,208.67,206.89,205.2,202.15,189.82,172,165.3,160.49,156.8,153.44,149.62,144.6,138.27,131,123.11,114.9,106.69,98.79,91.5,85.13,80,75.53,71.03,66.65,62.54,58.85,55.73,53.31,51.75,51.2,56.53,68.25,80,91.01,102.03,109,112.37,115.29,117.68,119.48,120.61,121,119.45,115.57,110.52,105.47,101.58,100,99.97,99.94,99.92,99.9,99.88,99.86,99.85,99.84,99.83,99.82,99.81,99.81,99.8,99.8,99.8,122.15,163.65,186,182.96,175.15,164.56,153.18,143,136,131.37,126.98,122.81,118.85,115.09,111.52,108.13,104.9,101.83,98.9,96.11,93.44,90.87,88.41,86.04,83.74,81.51,79.33,77.2,75.1,73.02,70.95,68.88,66.8,64.87,63.14,61.4,59.53,57.67,56,54.6,53.36,52.2,51.05,49.85,48.5,46.87,44.92,42.74,40.42,38.04,35.69,33.46,31.44,29.72,28.38,27.51,27.2,27.2,27.2,27.2,27.2,27.2,27.2,27.2,27.2,27.2,27.2,27.2,27.2,27.14,26.97,26.7,26.35,25.95,25.49,25.02,24.53,24.04,23.58,23.16,22.8,22.46,22.11,21.75,21.39,21.03,20.69,20.36,20.05,19.78,19.54,19.35,19.2,19.09,19,18.92,18.85,18.79,18.74,18.68,18.62,18.56,18.49,18.4,18.3,18.17,18.02,17.83,17.63,17.41,17.18,16.93,16.68,16.43,16.18,15.93,15.7,15.47,15.22,14.97,14.71,14.45,14.18,13.93,13.68,13.44,13.21,13,12.8,12.62,12.46,12.31,12.16,12.03,11.89,11.76,11.62,11.48,11.33,11.17,11,10.81,10.59,10.36,10.12,9.86,9.61,9.36,9.12,8.89,8.68,8.5,8.35,8.21,8.08,7.94,7.81,7.68,7.56,7.46,7.36,7.29,7.23,7.19,7.18,7.51,8.42,9.81,11.58,13.63,15.86,18.16,20.44,22.58,24.49,26.06,27.2,28.08,28.95,29.81,30.65,31.48,32.28,33.07,33.82,34.55,35.25,35.92,36.56,37.15,37.71,38.23,38.7,39.13,39.5,39.83,40.1,40.31,40.47,40.57,40.6,40.49,40.16,39.64,38.94,38.09,37.1,36,34.79,33.51,32.17,30.79,29.39,27.99,26.6,25.25,23.96,22.75,21.63,20.63,19.76,19.04,18.49,18.14,18,17.97,17.95,17.94,17.92,17.91,17.9,17.89,17.88,17.87,17.85,17.83,17.8,17.7,17.46,17.13,16.7,16.21,15.68,15.13,14.57,14.04,13.56,13.14,12.8,12.52,12.27,12.02,11.79,11.57,11.37,11.16,10.97,10.78,10.59,10.39,10.2,10.01,9.81,9.63,9.44,9.26,9.08,8.9,8.73,8.56,8.39,8.22,8.06,7.9,7.73,7.57,7.41,7.25,7.09,6.94,6.79,6.65,6.52,6.4,6.28,6.17,6.08,5.98,5.9,5.81,5.73,5.65,5.57,5.49,5.41,5.32,5.23,5.14,5.04,4.94,4.84,4.74,4.63,4.53,4.43,4.33,4.23,4.13,4.03,3.93,3.81,3.69,3.57,3.45,3.33,3.22,3.12,3.04,2.98,2.93,2.92,2.92,2.92,2.92,2.92,2.92,2.92,2.92,2.92,2.92,2.92,2.92,2.92,2.9,2.86,2.8,2.71,2.62,2.52,2.42,2.33,2.24,2.18,2.14,2.12,2.12,2.12,2.12,2.12,2.12,2.12,2.12,2.12,2.12,2.12,2.12,2.12,2.1,2.06,2,1.91,1.82,1.71,1.61,1.5,1.4,1.32,1.25,1.2,1.16,1.13,1.1,1.06,1.03,1,0.97,0.93,0.9,0.87,0.85,0.82,0.79,0.77,0.74,0.72,0.69,0.67,0.65,0.63,0.61,0.59,0.58,0.56,0.54,0.53,0.52,0.51,0.5,0.49,0.48,0.48,0.47,0.47,0.46,0.46,0.47,0.48,0.5,0.53,0.56,0.59,0.62,0.64,0.67,0.69,0.7,0.71,0.71,0.71,0.71,0.7,0.7,0.7,0.69,0.69,0.69,0.68,0.68,0.67,0.67,0.67,0.66,0.66,0.65,0.65,0.65,0.65,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.65,0.65,0.65,0.66,0.66,0.67,0.68,0.69,0.69,0.7,0.71,0.73,0.74,0.75,0.76,0.78,0.8,0.81,0.83,0.85,0.87,0.89,0.92,0.94,0.97,0.99,1.02,1.05,1.08,1.11,1.15,1.18,1.32,1.66,2.21,2.97,3.94,5.11,6.5,8.1,9.9,11.92,14.15,16.6,22.3,22.8,24.48,30.38,35.74,42.4,57.14,94.04,112.9,123.4,130.4,130,119.4,120.7,116.8,118.1,119.4,124.8,143.5,204,294,319.2,328.4,365,350.8,347.6,347.6,325,331.6,319.2,308,308,308,308,296.8,300,281,278.4,270.6,271,253.6,233.5,219.2,207.8,205.9,204,189.6,178.8,173.4,160,154.4,146,145,140.5,130.4,126.2,116.8,112.9,106.5,101.6,98.51,82.67,67.3,80.05,76.12,72.3,71.02,69.78,67.3,67.3,68.54,57.6,71.02,66.06,59.12,57.14,55.16,55.16,52.19,52.19,51.2,48.56,44.16,43,45.92,49.44,44.16,36.48,35.74,35,32.36,37.22,32.36,32.36,32.36,33.68,32.36,31.7,35.74,29.72,32.36,30.38,29.72,28.4,28.4,28.4,27.28,25.6,25.04,23.92,22.3,21.8,21.8,21.8,22.8,21.8,25.6,22.8,22.8,17.8,16.04,16.04,16.04,16.04,16.04,16.04,16.04,16.04,16.04,16.04,15.02,14,14.03,14.11,14.25,14.45,14.72,15.06,15.46,15.95,16.51,17.15,17.87,18.69,19.59,20.59,21.69,22.88,24.18,25.59,27.1,28.73,30.48,32.34,34.33,36.44,38.69,41.06,43.57,46.22,49.01,51.95,55.04,58.27,61.66,65.21,68.92,72.8,88.09,104.9,105.7,110.3,111.6,110.3,106.5,105.7,103.3,100,97.02,98.8,91.07,83.98,88.09,81.36,78.74,77.43,77.43,73.5,74.81,72.63,68.58,66.4,68.54,69.78,67.3,64.82,61.1,59.12,56.15,53.18,50.32,49.44,44.16,36.5,42.4,37.96,37.22,33.68,36.48,35.74,35,35,37.22,37.22,39.44,32.6,34.54,36.48,35.74,34.34,33.68,33.02,31.04,29.72,29.72,29.72,26.16,25.6,29.72,18.3,22.3,21.3,21.8,21.8,20.3,20.8,25.04,25.04,25.6,25.6,25.04,25.6,25.04,25.6,23.92,25.04,21.3,21.8,22.3,21.8,20.8,16.1,20.3,18.3,13.22,19.3,19.3,18.3,14.4,13.86,13.36,12.9,12.48,12.1,11.75,11.43,11.15,10.9,10.67,10.48,10.31,10.16,10.04,9.93,9.85,9.78,9.73,9.69,9.67,9.65,9.65,12.08,8.67,11.7,11.38,10.65,9.84,9.32,9.07,8.85,8.66,8.49,8.35,8.22,8.1,7.98,7.86,7.74,7.61,7.47,7.31,7.14,6.96,6.78,6.58,6.39,6.19,5.99,5.78,5.58,5.39,5.2,5.01,4.83,4.67,4.51,4.37,4.24,4.12,4.02,3.95,3.89,3.85,3.84,4.41,5.77,7.39,8.75,9.32,9.18,9,8.94,8.88,8.83,8.78,8.73,8.68,8.64,8.6,8.56,8.53,8.5,8.47,8.45,8.42,8.4,8.39,8.37,8.36,8.35,8.35,8.34,8.34,8.67,9.65,9.62,9.53,9.4,9.21,8.98,8.7,8.4,8.06,7.69,7.3,6.89,6.47,6.03,5.59,5.14,4.7,4.26,3.83,3.42,3.02,2.65,2.3,1.98,1.7,1.45,1.25,1.09,0.99,0.94,0.92,0.91,0.89,0.87,0.85,0.84,0.82,0.81,0.79,0.78,0.77,0.75,0.74,0.73,0.72,0.71,0.7,0.69,0.68,0.67,0.66,0.65,0.64,0.64,0.63,0.63,0.62,0.62,0.61,0.61,0.61,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.61,0.61,0.61,0.61,0.61,0.61,0.62,0.62,0.62,0.62,0.63,0.63,0.63,0.63,0.63,0.64,0.64,0.64,0.64,0.64,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.64,0.63,0.62,0.6,0.59,0.57,0.55,0.54,0.53,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.51,0.51,0.51,0.5,0.5,0.49,0.48,0.47,0.47,0.46,0.45,0.45,0.44,0.43,0.42,0.42,0.41,0.41,0.41,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.41,0.42,0.43,0.44,0.46,0.48,0.5,0.53,0.55,0.58,0.61,0.64,0.67,0.7,0.73,0.77,0.8,0.83,0.87,0.9,0.93,0.96,0.99,1.02,1.05,1.08,1.1,1.12,1.14,1.16,1.17,1.18,1.19,1.2,1.2,1.2,1.19,1.17,1.15,1.12,1.09,1.06,1.02,0.98,0.94,0.9,0.86,0.82,0.78,0.74,0.7,0.66,0.63,0.6,0.57,0.55,0.53,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.51,0.51,0.5,0.5,0.49,0.49,0.48,0.47,0.47,0.47,0.46,0.46,0.45,0.45,0.45,0.44,0.44,0.44,0.43,0.43,0.43,0.42,0.42,0.42,0.41,0.41,0.41,0.41,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.42,0.42,0.42,0.42,0.42,0.42,0.42,0.42,0.42,0.43,0.43,0.43,0.43,0.43,0.43,0.44,0.44,0.44,0.44,0.44,0.44,0.45,0.45,0.45 - ] - }, - { - name:'降雨量', - type:'line', - yAxisIndex:1, - itemStyle: {normal: {areaStyle: {type: 'default'}}}, - data: (function(){ - var oriData = [ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.005,0.017,0.017,0.017,0.017,0.011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.021,0.026,0.03,0.036,0.036,0.195,0.221,0.019,0.013,0.017,0.03,0.03,0.03,0.046,0.045,0.038,0.084,0.045,0.045,0.037,0.034,0.035,0.036,0.044,0.052,0.048,0.109,0.033,0.029,0.04,0.042,0.042,0.042,0.073,0.076,0.062,0.066,0.066,0.075,0.096,0.128,0.121,0.128,0.14,0.226,0.143,0.097,0.018,0,0,0,0,0,0.018,0.047,0.054,0.054,0.054,0.036,0.185,0.009,0.038,0.061,0.077,0.091,0.126,0.69,0.182,0.349,0.231,0.146,0.128,0.167,0.1,0.075,0.071,0.071,0.117,0.01,0.002,0.002,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.005,0.026,0.038,0.038,0.038,0.076,0.086,0.109,0.213,0.276,0.288,0.297,0.642,1.799,1.236,2.138,0.921,0.497,0.685,0.828,0.41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.018,0.024,0.024,0.024,0.024,0.006,0.003,0.046,0.046,0.046,0.046,0.043,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.204,0.303,1.028,1.328,1.524,1.41,1.362,1.292,1.191,0.529,0.501,0.944,1.81,2.899,0.859,0.126,0.087,0.047,0,0,0,0,0.011,0.028,0.028,0.028,0.028,0.017,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.099,0.159,0.297,0.309,0.309,0.614,0.818,1.436,1.195,0.553,0.542,0.955,0.898,0.466,0.386,0.556,0.388,0.221,0.192,0.192,0.187,0.166,0.18,0.302,0.158,0.009,0.009,0.009,0.009,0.009,0.007,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.004,0.032,0.032,0.032,0.032,0.082,0.149,0.204,0.247,0.262,0.49,0.51,0.533,0.746,0.847,2.393,1.188,1.114,0.475,0.043,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.017,0.017,0.021,0.042,0.079,0.111,0.126,0.122,0.133,0.846,0.102,0.077,0.067,0.056,0.005,0,0,0,0,0,0,0,0,0,0,0,0,0,0.011,0.017,0.017,0.017,0.017,0.006,0,0,0,0,0,0.01,0.03,0.054,0.067,0.07,0.25,0.251,0.494,0.065,0.054,0.054,0.064,0.084,0.077,0.101,0.132,0.248,0.069,0.117,0.115,0.087,0.326,0.036,0.009,0.009,0.009,0.009,0.009,0.004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.02,0.039,0.04,0.04,0.04,0.229,0.079,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.023,0.069,0.082,0.082,0.082,0.503,0.774,0.038,0.012,0.012,0.012,0.016,0.02,0.028,0.051,0.06,0.064,0.19,0.15,0.164,0.139,0.13,0.085,0.031,0.023,0.022,0.007,0.005,0.005,0.001,0,0.02,0.048,0.048,0.053,0.056,0.036,0.008,0.008,0.004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.013,0.017,0.036,0.068,0.095,0.233,0.272,0.377,0.722,1.494,3.756,0.954,0.439,0.442,0.462,0.373,0.249,0.214,0.1,0.044,0.037,0.023,0.002,0,0,0,0,0,0,0.02,0.024,0.024,0.024,0.024,0.004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.008,0.017,0.017,0.045,0.186,0.308,0.241,0.241,0.893,4.067,4.494,5.015,3.494,2.057,1.411,0.718,0.407,0.313,0.339,1.537,1.105,0.218,0.136,0.03,0.005,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.037,0.448,1.2,1.309,1.309,1.425,1.223,0.471,0.767,0.423,0.273,0.412,0.646,0.481,0.239,0.131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.044,0.15,0.223,0.388,0.513,0.883,2.828,4.786,5.959,4.95,6.434,6.319,3.35,2.806,4.204,1.395,1.015,1.015,0.836,0.74,0.72,0.615,0.477,0.192,0.046,0.007,0.007,0.007,0.007,0.007,0.007,0.007,0.008,0.005,0.005,0.005,0.005,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.001,0.012,0.012,0.012,0.012,0.011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.002,0.012,0.028,0.028,0.028,0.138,0.092,0.082,0.082,0.096,0.719,0.155,0.042,0.047,0.129,0.021,0.021,0.014,0.009,0.029,0.067,0.088,0.095,0.095,0.138,0.091,0.032,0.025,0.025,0.003,0,0,0,0,0,0,0,0,0,0,0,0,0.002,0.045,0.228,0.297,0.325,0.339,0.581,1.244,0.796,0.517,0.227,0.053,0.006,0,0,0,0,0,0,0,0,0,0.003,0.005,0.005,0.005,0.005,0.081,0.129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.014,0.041,0.041,0.041,0.041,0.027,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.009,0.017,0.017,0.017,0.017,0.355,0.174,0.009,0.009,0.012,0.136,0.208,0.208,0.208,0.215,7.359,1.858,0.458,0.053,0.053,0.047,0.045,0.045,0.059,0.136,0.188,0.206,0.21,0.588,1.517,6.02,4.688,4.42,0.624,0.326,0.359,0.553,0.899,0.94,2.95,9.415,5.752,1.092,0.096,0.035,0.026,0.018,0.015,0.011,0.011,0.011,0,0,0,0,0,0,0,0,0,0,0,0.056,0.27,0.314,0.351,0.354,0.609,0.796,1.857,0.848,0.538,0.214,0.178,0.178,0.201,0.231,0.227,0.272,0.397,0.45,1.014,2.917,1.675,0.081,0.059,0.059,0.148,0.075,0.075,0.078,0.236,0.784,0.784,0.784,0.784,0.741,0.115,0.058,0.058,0.058,0.029,0.015,0.015,0.015,0.015,0.012,0.008,0.604,0.985,1.305,2.273,2.528,2.336,2.496,2.281,1.397,1.713,3.259,1.167,0.745,0.548,1.058,0.684,0.728,0.392,0.179,0.283,0.283,0.46,0.08,0.099,0.099,0.099,0.1,0.143,0.137,0.238,0.317,0.262,0.225,0.792,0.426,0.332,0.261,0.11,0.093,0.102,0.171,0.292,0.504,0.605,1.745,2.485,1.964,0.33,0.171,0.259,0.242,0.215,0.366,0.354,0.205,0.203,0.262,0.153,0.13,0.137,0.362,0.691,0.295,0.433,0.154,0.056,0.053,0.053,0.053,0.051,0.047,0.065,0.078,0.091,0.206,0.813,0.102,0.151,0.05,0.024,0.004,0.001,0,0,0,0.021,0.021,0.021,0.021,0.021,0.013,0.013,0.013,0.013,0.013,0.013,0.013,0.013,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.008,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.018,0.021,0.021,0.021,0.021,0.003,0,0,0,0,0,0,0,0,0,0.024,0.173,0.261,0.267,0.267,0.534,1.354,1.772,0.72,0.218,0.018,0.018,0.028,0.036,0.032,0.194,0.082,0.035,0.286,0.027,0.038,0.038,0.027,0.021,0.014,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.016,0.017,0.017,0.031,0.047,0.043,0.056,0.104,0.149,0.179,0.205,0.328,0.998,0.522,1.851,3.727,3.273,2.204,1.169,1.006,1.179,0.74,0.741,1.065,0.925,0.671,0.497,0.431,0.327,0.277,0.126,0.581,0.207,0.359,2.485,0.038,0.036,0.003,0.003,0.003,0.003,0.004,0.098,0.023,0.021,0.021,0.022,0.041,0.041,0.043,0.045,0.043,0.014,0.014,0.014,0.014,0.014,0.014,0.014,0.031,0.046,0.063,0.119,0.107,0.092,0.085,0.065,0.06,0.054,0.042,0.039,0.046,0.044,0.028,0.028,0.02,0.013,0.013,0.013,0.013,0.016,0.032,0.031,0.031,0.031,0.028,0.011,0.011,0.011,0.011,0.011,0.023,0.024,0.024,0.024,0.019,0.015,0.015,0.015,0.015,0.015,0.015,0.013,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.001,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.011,0.017,0.024,0.026,0.061,0.172,0.206,0.213,0.267,0.511,0.668,0.157,0.017,0.017,0.017,0.046,0.054,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.001,0.017,0.017,0.017,0.017,0.016,0,0,0,0,0,0,0,0,0,0.01,0.017,0.017,0.017,0.017,0.012,0.017,0.017,0.017,0.017,0.012,0,0,0,0,0,0.003,0.031,0.066,0.093,0.112,0.122,0.202,0.068,0.041,0.022,0.011,0,0,0,0,0,0,0,0,0,0,0,0.002,0.005,0.012,0.021,0.021,0.019,0.033,0.03,0.026,0.026,0.034,0.095,0.024,0.024,0.024,0.023,0.019,0.018,0.018,0.018,0.011,0.03,0.045,0.044,0.044,0.044,0.022,0.009,0.024,0.033,0.033,0.033,0.024,0.009,0,0,0,0,0,0,0.003,0.017,0.017,0.017,0.017,0.014,0,0,0,0,0,0.032,0.032,0.032,0.032,0.032,0.005,0.008,0.009,0.014,0.014,0.009,0.005,0.004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.007,0.009,0.009,0.009,0.009,0.043,0.063,0.084,0.098,0.101,0.213,0.334,0.383,0.43,0.448,0.511,0.801,0.835,1.642,1.614,1.496,1.496,1.476,1.068,0.481,0.22,0.119,0.099,0.07,0.072,0.063,0.076,0.14,0.205,0.28,0.297,0.3,0.479,0.877,1.098,1.611,1.629,1.686,1.686,1.631,1.528,1.862,1.703,1.531,2.196,0.395,0.416,0.453,0.728,0.917,0.986,1.17,2.171,3.011,2.909,3.301,1.377,0.778,0.799,0.947,1.039,0.879,0.76,1.372,1.674,1.674,1.68,1.823,1.793,1.162,0.783,0.216,0.152,0.152,0.152,0.049,0,0,0,0.117,0.127,0.127,0.127,0.127,0.127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.003,0.005,0.005,0.005,0.005,0.003,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.309,0.364,0.364,0.364,0.364,0.063,0.01,0.01,0.01,0.012,0.015,0.015,0.11,0.55,0.824,0.825,0.829,1.39,1.429,1.342,1.43,1.636,1.717,2.135,2.203,3.191,3.022,1.589,0.86,0.807,0.645,0.595,0.588,0.557,0.552,1.271,0.708,0.677,0.629,0.714,0.203,0.133,0.061,0.062,0.018,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.001,0.072,0.29,0.438,0.53,0.557,0.873,1.039,1.04,0.208,0.049,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.03,0.039,0.039,0.039,0.039,0.098,0.008,0.007,0.007,0.007,0.007,0.007,0.007,0.007,0.007,0.007,0.056,0.062,0.065,0.065,0.065,0.047,0.216,0.256,0.315,0.4,0.502,0.449,0.47,0.571,0.814,1.153,0.774,0.202,0.086,0.075,0.071,0.032,0.019,0.003,0.004,0.004,0.004,0.004,0.004,0.004,0.007,0.072,0.153,0.256,0.306,0.404,0.698,0.733,0.823,0.715,0.563,0.404,0.293,0.217,0.213,0.202,0.202,0.294,0.704,0.797,1.359,1.101,0.72,0.514,0.539,0.434,0.389,0.387,0.386,0.375,0.369,0.319,0.239,0.183,0.136,0.062,0.052,0.096,0.119,0.119,0.114,0.127,0.132,0.139,0.169,0.191,0.278,0.254,0.214,0.237,0.221,0.143,0.129,0.125,0.109,0.1,0.087,0.06,0.038,0.029,0.029,0.028,0.048,0.053,0.053,0.111,0.125,0.102,0.097,0.097,0.039,0.02,0.02,0.02,0.014,0.004,0.031,0.043,0.047,0.052,0.08,0.144,0.182,0.176,0.171,0.149,0.112,0.025,0,0,0,0,0,0,0,0.016,0.031,0.031,0.031,0.031,0.015,0,0,0,0,0,0.005,0.005,0.005,0.005,0.005,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.005,0.005,0.005,0.005,0.005,0.001,0,0,0 - ]; - var len = oriData.length; - while(len--) { - oriData[len] *= -1; - } - return oriData; - })() - } - ] - } - ] - ,elemarea = $('#LAY-index-area').children('div') - ,renderarea = function(index){ - echarea[index] = echarts.init(elemarea[index], layui.echartsTheme); - echarea[index].setOption(area[index]); - window.onresize = echarea[index].resize; - }; - if(!elemarea[0]) return; - renderarea(0); - - //对数轴 - var echlogline = [], logline = [ - { - title: { - text: "对数轴示例", - x: "center" - }, - tooltip: { - trigger: "item", - formatter: "{a}
          {b} : {c}" - }, - legend: { - x: 'left', - data: ["2的指数", "3的指数"] - }, - xAxis: [ - { - type: "category", - name: "x", - splitLine: {show: false}, - data: ["一", "二", "三", "四", "五", "六", "七", "八", "九"] - } - ], - yAxis: [ - { - type: "log", - name: "y" - } - ], - calculable: true, - series: [ - { - name: "3的指数", - type: "line", - data: [1, 3, 9, 27, 81, 247, 741, 2223, 3339] - }, - { - name: "2的指数", - type: "line", - data: [1, 2, 4, 8, 16, 32, 64, 128, 256] - } - ] - } - ] - ,elemlogline = $('#LAY-index-logline').children('div') - ,renderlogline = function(index){ - echlogline[index] = echarts.init(elemlogline[index], layui.echartsTheme); - echlogline[index].setOption(logline[index]); - window.onresize = echlogline[index].resize; - }; - if(!elemlogline[0]) return; - renderlogline(0); - }); - - - //柱状图 - layui.use(['echarts'], function(){ - var $ = layui.$ - ,echarts = layui.echarts; - - //标准柱状图 - var echnormcol = [], normcol = [ - { - title : { - text: '某地区蒸发量和降水量', - subtext: '纯属虚构' - }, - tooltip : { - trigger: 'axis' - }, - legend: { - data:['蒸发量','降水量'] - }, - calculable : true, - xAxis : [ - { - type : 'category', - data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] - } - ], - yAxis : [ - { - type : 'value' - } - ], - series : [ - { - name:'蒸发量', - type:'bar', - data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3], - markPoint : { - data : [ - {type : 'max', name: '最大值'}, - {type : 'min', name: '最小值'} - ] - }, - markLine : { - data : [{type : 'average', name: '平均值'}] - } - }, - { - name:'降水量', - type:'bar', - data:[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3], - markPoint : { - data : [ - {name : '年最高', value : 182.2, xAxis: 7, yAxis: 183, symbolSize:18}, - {name : '年最低', value : 2.3, xAxis: 11, yAxis: 3} - ] - }, - markLine : { - data : [ - {type : 'average', name : '平均值'} - ] - } - } - ] - } - ] - ,elemNormcol = $('#LAY-index-normcol').children('div') - ,renderNormcol = function(index){ - echnormcol[index] = echarts.init(elemNormcol[index], layui.echartsTheme); - echnormcol[index].setOption(normcol[index]); - window.onresize = echnormcol[index].resize; - }; - if(!elemNormcol[0]) return; - renderNormcol(0); - - //堆积柱状图 - var echheapcol = [], heapcol = [ - { - tooltip : { - trigger: 'axis', - axisPointer : { // 坐标轴指示器,坐标轴触发有效 - type : 'shadow' // 默认为直线,可选为:'line' | 'shadow' - } - }, - legend: { - data:['直接访问','邮件营销','联盟广告','视频广告','搜索引擎','百度','谷歌','必应','其他'] - }, - calculable : true, - xAxis : [ - { - type : 'category', - data : ['周一','周二','周三','周四','周五','周六','周日'] - } - ], - yAxis : [ - { - type : 'value' - } - ], - series : [ - { - name:'直接访问', - type:'bar', - data:[320, 332, 301, 334, 390, 330, 320] - }, - { - name:'邮件营销', - type:'bar', - stack: '广告', - data:[120, 132, 101, 134, 90, 230, 210] - }, - { - name:'联盟广告', - type:'bar', - stack: '广告', - data:[220, 182, 191, 234, 290, 330, 310] - }, - { - name:'视频广告', - type:'bar', - stack: '广告', - data:[150, 232, 201, 154, 190, 330, 410] - }, - { - name:'搜索引擎', - type:'bar', - data:[862, 1018, 964, 1026, 1679, 1600, 1570], - markLine : { - itemStyle:{ - normal:{ - lineStyle:{ - type: 'dashed' - } - } - }, - data : [ - [{type : 'min'}, {type : 'max'}] - ] - } - }, - { - name:'百度', - type:'bar', - barWidth : 5, - stack: '搜索引擎', - data:[620, 732, 701, 734, 1090, 1130, 1120] - }, - { - name:'谷歌', - type:'bar', - stack: '搜索引擎', - data:[120, 132, 101, 134, 290, 230, 220] - }, - { - name:'必应', - type:'bar', - stack: '搜索引擎', - data:[60, 72, 71, 74, 190, 130, 110] - }, - { - name:'其他', - type:'bar', - stack: '搜索引擎', - data:[62, 82, 91, 84, 109, 110, 120] - } - ] - } - ] - ,elemHeapcol = $('#LAY-index-heapcol').children('div') - ,renderHeapcol = function(index){ - echheapcol[index] = echarts.init(elemHeapcol[index], layui.echartsTheme); - echheapcol[index].setOption(heapcol[index]); - window.onresize = echheapcol[index].resize; - }; - if(!elemHeapcol[0]) return; - renderHeapcol(0); - - //不等距柱形图 - var echdiffcol = [], diffcol = [ - { - title : { - text: '双数值柱形图', - subtext: '纯属虚构' - }, - tooltip : { - trigger: 'axis', - axisPointer:{ - show: true, - type : 'cross', - lineStyle: { - type : 'dashed', - width : 1 - } - }, - formatter : function (params) { - return params.seriesName + ' : [ ' + params.value[0] + ', ' + params.value[1] + ' ]'; - } - }, - legend: { - data:['数据1','数据2'] - }, - calculable : true, - xAxis : [ - { - type : 'value' - } - ], - yAxis : [ - { - type : 'value', - axisLine: { - lineStyle: { - color: '#dc143c' - } - } - } - ], - series : [ - { - name:'数据1', - type:'bar', - data:[ - [1.5, 10], [5, 7], [8, 8], [12, 6], [11, 12], [16, 9], [14, 6], [17, 4], [19, 9] - ], - markPoint : { - data : [ - // 纵轴,默认 - {type : 'max', name: '最大值',symbol: 'emptyCircle', itemStyle:{normal:{color:'#dc143c',label:{position:'top'}}}}, - {type : 'min', name: '最小值',symbol: 'emptyCircle', itemStyle:{normal:{color:'#dc143c',label:{position:'bottom'}}}}, - // 横轴 - {type : 'max', name: '最大值', valueIndex: 0, symbol: 'emptyCircle', itemStyle:{normal:{color:'#1e90ff',label:{position:'right'}}}}, - {type : 'min', name: '最小值', valueIndex: 0, symbol: 'emptyCircle', itemStyle:{normal:{color:'#1e90ff',label:{position:'left'}}}} - ] - }, - markLine : { - data : [ - // 纵轴,默认 - {type : 'max', name: '最大值', itemStyle:{normal:{color:'#dc143c'}}}, - {type : 'min', name: '最小值', itemStyle:{normal:{color:'#dc143c'}}}, - {type : 'average', name : '平均值', itemStyle:{normal:{color:'#dc143c'}}}, - // 横轴 - {type : 'max', name: '最大值', valueIndex: 0, itemStyle:{normal:{color:'#1e90ff'}}}, - {type : 'min', name: '最小值', valueIndex: 0, itemStyle:{normal:{color:'#1e90ff'}}}, - {type : 'average', name : '平均值', valueIndex: 0, itemStyle:{normal:{color:'#1e90ff'}}} - ] - } - }, - { - name:'数据2', - type:'bar', - barHeight:10, - data:[ - [1, 2], [2, 3], [4, 4], [7, 5], [11, 11], [18, 15] - ] - } - ] - } - ] - ,elemDiffcol = $('#LAY-index-diffcol').children('div') - ,renderDiffcol = function(index){ - echdiffcol[index] = echarts.init(elemDiffcol[index], layui.echartsTheme); - echdiffcol[index].setOption(diffcol[index]); - window.onresize = echdiffcol[index].resize; - }; - if(!elemDiffcol[0]) return; - renderDiffcol(0); - - //彩虹柱形图 - var echcolorline = [], colorline = [ - { - title: { - x: 'center', - text: 'ECharts例子个数统计', - subtext: 'Rainbow bar example', - link: 'http://echarts.baidu.com/doc/example.html' - }, - tooltip: { - trigger: 'item' - }, - calculable: true, - grid: { - borderWidth: 0, - y: 80, - y2: 60 - }, - xAxis: [ - { - type: 'category', - show: false, - data: ['Line', 'Bar', 'Scatter', 'K', 'Pie', 'Radar', 'Chord', 'Force', 'Map', 'Gauge', 'Funnel'] - } - ], - yAxis: [ - { - type: 'value', - show: false - } - ], - series: [ - { - name: 'ECharts例子个数统计', - type: 'bar', - itemStyle: { - normal: { - color: function(params) { - // build a color map as your need. - var colorList = [ - '#C1232B','#B5C334','#FCCE10','#E87C25','#27727B', - '#FE8463','#9BCA63','#FAD860','#F3A43B','#60C0DD', - '#D7504B','#C6E579','#F4E001','#F0805A','#26C0C0' - ]; - return colorList[params.dataIndex] - }, - label: { - show: true, - position: 'top', - formatter: '{b}\n{c}' - } - } - }, - data: [12,21,10,4,12,5,6,5,25,23,7], - markPoint: { - tooltip: { - trigger: 'item', - backgroundColor: 'rgba(0,0,0,0)', - formatter: function(params){ - return ''; - } - }, - data: [ - {xAxis:0, y: 350, name:'Line', symbolSize:20}, - {xAxis:1, y: 350, name:'Bar', symbolSize:20}, - {xAxis:2, y: 350, name:'Scatter', symbolSize:20}, - {xAxis:3, y: 350, name:'K', symbolSize:20}, - {xAxis:4, y: 350, name:'Pie', symbolSize:20}, - {xAxis:5, y: 350, name:'Radar', symbolSize:20}, - {xAxis:6, y: 350, name:'Chord', symbolSize:20}, - {xAxis:7, y: 350, name:'Force', symbolSize:20}, - {xAxis:8, y: 350, name:'Map', symbolSize:20}, - {xAxis:9, y: 350, name:'Gauge', symbolSize:20}, - {xAxis:10, y: 350, name:'Funnel', symbolSize:20}, - ] - } - } - ] - } - ] - ,elemColorline = $('#LAY-index-colorline').children('div') - ,renderColorline = function(index){ - echcolorline[index] = echarts.init(elemColorline[index], layui.echartsTheme); - echcolorline[index].setOption(colorline[index]); - window.onresize = echcolorline[index].resize; - }; - if(!elemColorline[0]) return; - renderColorline(0); - - //标准条形图 - var echnormbar = [], normbar = [ - { - title : { - text: '世界人口总量', - subtext: '数据来自网络' - }, - tooltip : { - trigger: 'axis' - }, - legend: { - data:['2011年', '2012年'] - }, - calculable : true, - xAxis : [ - { - type : 'value', - boundaryGap : [0, 0.01] - } - ], - yAxis : [ - { - type : 'category', - data : ['巴西','印尼','美国','印度','中国','世界人口(万)'] - } - ], - series : [ - { - name:'2011年', - type:'bar', - data:[18203, 23489, 29034, 104970, 131744, 630230] - }, - { - name:'2012年', - type:'bar', - data:[19325, 23438, 31000, 121594, 134141, 681807] - } - ] - } - ] - ,elemNormbar = $('#LAY-index-normbar').children('div') - ,renderNormbar = function(index){ - echnormbar[index] = echarts.init(elemNormbar[index], layui.echartsTheme); - echnormbar[index].setOption(normbar[index]); - window.onresize = echnormbar[index].resize; - }; - if(!elemNormbar[0]) return; - renderNormbar(0); - - //堆积条形图 - var echheapbar = [], heapbar = [ - { - tooltip : { - trigger: 'axis', - axisPointer : { // 坐标轴指示器,坐标轴触发有效 - type : 'shadow' // 默认为直线,可选为:'line' | 'shadow' - } - }, - legend: { - data:['直接访问', '邮件营销','联盟广告','视频广告','搜索引擎'] - }, - calculable : true, - xAxis : [ - { - type : 'value' - } - ], - yAxis : [ - { - type : 'category', - data : ['周一','周二','周三','周四','周五','周六','周日'] - } - ], - series : [ - { - name:'直接访问', - type:'bar', - stack: '总量', - itemStyle : { normal: {label : {show: true, position: 'insideRight'}}}, - data:[320, 302, 301, 334, 390, 330, 320] - }, - { - name:'邮件营销', - type:'bar', - stack: '总量', - itemStyle : { normal: {label : {show: true, position: 'insideRight'}}}, - data:[120, 132, 101, 134, 90, 230, 210] - }, - { - name:'联盟广告', - type:'bar', - stack: '总量', - itemStyle : { normal: {label : {show: true, position: 'insideRight'}}}, - data:[220, 182, 191, 234, 290, 330, 310] - }, - { - name:'视频广告', - type:'bar', - stack: '总量', - itemStyle : { normal: {label : {show: true, position: 'insideRight'}}}, - data:[150, 212, 201, 154, 190, 330, 410] - }, - { - name:'搜索引擎', - type:'bar', - stack: '总量', - itemStyle : { normal: {label : {show: true, position: 'insideRight'}}}, - data:[820, 832, 901, 934, 1290, 1330, 1320] - } - ] - } - ] - ,elemheapbar = $('#LAY-index-heapbar').children('div') - ,renderheapbar = function(index){ - echheapbar[index] = echarts.init(elemheapbar[index], layui.echartsTheme); - echheapbar[index].setOption(heapbar[index]); - window.onresize = echheapbar[index].resize; - }; - if(!elemheapbar[0]) return; - renderheapbar(0); - - //旋风条形图 - var echwindline = [], labelRight = {normal: {label : {position: 'right'}}}, windline = [ - { - title: { - text: '交错正负轴标签', - subtext: 'From ExcelHome', - sublink: 'http://e.weibo.com/1341556070/AjwF2AgQm' - }, - tooltip : { - trigger: 'axis', - axisPointer : { // 坐标轴指示器,坐标轴触发有效 - type : 'shadow' // 默认为直线,可选为:'line' | 'shadow' - } - }, - grid: { - y: 80, - y2: 30 - }, - xAxis : [ - { - type : 'value', - position: 'top', - splitLine: {lineStyle:{type:'dashed'}}, - } - ], - yAxis : [ - { - type : 'category', - axisLine: {show: false}, - axisLabel: {show: false}, - axisTick: {show: false}, - splitLine: {show: false}, - data : ['ten', 'nine', 'eight', 'seven', 'six', 'five', 'four', 'three', 'two', 'one'] - } - ], - series : [ - { - name:'生活费', - type:'bar', - stack: '总量', - itemStyle : { normal: { - color: 'orange', - borderRadius: 5, - label : { - show: true, - position: 'left', - formatter: '{b}' - } - }}, - data:[ - {value:-0.07, itemStyle:labelRight}, - {value:-0.09, itemStyle:labelRight}, - 0.2, 0.44, - {value:-0.23, itemStyle:labelRight}, - 0.08, - {value:-0.17, itemStyle:labelRight}, - 0.47, - {value:-0.36, itemStyle:labelRight}, - 0.18 - ] - } - ] - } - ] - ,elemwindline = $('#LAY-index-windline').children('div') - ,renderwindline = function(index){ - echwindline[index] = echarts.init(elemwindline[index], layui.echartsTheme); - echwindline[index].setOption(windline[index]); - window.onresize = echwindline[index].resize; - }; - if(!elemwindline[0]) return; - renderwindline(0); - }); - - - //地图 - layui.use(['echarts'], function(){ - var $ = layui.$ - ,echarts = layui.echarts; - - var echplat = [], plat = [ - { - title : { - text: '2011全国GDP(亿元)', - subtext: '数据来自国家统计局' - }, - tooltip : { - trigger: 'item' - }, - dataRange: { - orient: 'horizontal', - min: 0, - max: 55000, - text:['高','低'], // 文本,默认为数值文本 - splitNumber:0 - }, - series : [ - { - name: '2011全国GDP分布', - type: 'map', - mapType: 'china', - mapLocation: { - x: 'center' - }, - selectedMode : 'multiple', - itemStyle:{ - normal:{label:{show:true}}, - emphasis:{label:{show:true}} - }, - data:[ - {name:'西藏', value:605.83}, - {name:'青海', value:1670.44}, - {name:'宁夏', value:2102.21}, - {name:'海南', value:2522.66}, - {name:'甘肃', value:5020.37}, - {name:'贵州', value:5701.84}, - {name:'新疆', value:6610.05}, - {name:'云南', value:8893.12}, - {name:'重庆', value:10011.37}, - {name:'吉林', value:10568.83}, - {name:'山西', value:11237.55}, - {name:'天津', value:11307.28}, - {name:'江西', value:11702.82}, - {name:'广西', value:11720.87}, - {name:'陕西', value:12512.3}, - {name:'黑龙江', value:12582}, - {name:'内蒙古', value:14359.88}, - {name:'安徽', value:15300.65}, - {name:'北京', value:16251.93, selected:true}, - {name:'福建', value:17560.18}, - {name:'上海', value:19195.69, selected:true}, - {name:'湖北', value:19632.26}, - {name:'湖南', value:19669.56}, - {name:'四川', value:21026.68}, - {name:'辽宁', value:22226.7}, - {name:'河北', value:24515.76}, - {name:'河南', value:26931.03}, - {name:'浙江', value:32318.85}, - {name:'山东', value:45361.85}, - {name:'江苏', value:49110.27}, - {name:'广东', value:53210.28, selected:true} - ] - } - ] - } - ] - ,elemplat = $('#LAY-index-plat').children('div') - ,renderplat = function(index){ - echplat[index] = echarts.init(elemplat[index], layui.echartsTheme); - echplat[index].setOption(plat[index]); - window.onresize = echplat[index].resize; - }; - if(!elemplat[0]) return; - renderplat(0); - }); - - exports('senior', {}) - +/** + * Echarts demo + */ + +layui.define(function(exports){ + + //区块轮播切换 + layui.use(['admin', 'carousel'], function(){ + var $ = layui.$ + ,admin = layui.admin + ,carousel = layui.carousel + ,element = layui.element + ,device = layui.device(); + + //轮播切换 + $('.layadmin-carousel').each(function(){ + var othis = $(this); + carousel.render({ + elem: this + ,width: '100%' + ,arrow: 'none' + ,interval: othis.data('interval') + ,autoplay: othis.data('autoplay') === true + ,trigger: (device.ios || device.android) ? 'click' : 'hover' + ,anim: othis.data('anim') + }); + }); + + }); + + //折线图 + layui.use(['echarts'], function(){ + var $ = layui.$ + ,echarts = layui.echarts; + + //标准折线图 + var echnormline = [], normline = [ + { + title : { + text: '未来一周气温变化', + subtext: '纯属虚构' + }, + tooltip : { + trigger: 'axis' + }, + legend: { + data:['最高气温','最低气温'] + }, + calculable : true, + xAxis : [ + { + type : 'category', + boundaryGap : false, + data : ['周一','周二','周三','周四','周五','周六','周日'] + } + ], + yAxis : [ + { + type : 'value', + axisLabel : { + formatter: '{value} °C' + } + } + ], + series : [ + { + name:'最高气温', + type:'line', + data:[11, 11, 15, 13, 12, 13, 10], + markPoint : { + data : [{type : 'max', name: '最大值'},{type : 'min', name: '最小值'}] + }, + markLine : { + data : [{type : 'average', name: '平均值'}] + } + }, + { + name:'最低气温', + type:'line', + data:[1, -2, 2, 5, 3, 2, 0], + markPoint : { + data : [{name : '周最低', value : -2, xAxis: 1, yAxis: -1.5}] + }, + markLine : { + data : [{type : 'average', name : '平均值'}] + } + } + ] + } + ] + ,elemnormline = $('#LAY-index-normline').children('div') + ,rendernormline = function(index){ + echnormline[index] = echarts.init(elemnormline[index], layui.echartsTheme); + echnormline[index].setOption(normline[index]); + window.onresize = echnormline[index].resize; + }; + if(!elemnormline[0]) return; + rendernormline(0); + + //堆积折线图 + var echheapline = [], heapline = [ + { + tooltip : { + trigger: 'axis' + }, + legend: {data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎']}, + calculable : true, + xAxis : [ + { + type : 'category', + boundaryGap : false, + data : ['周一','周二','周三','周四','周五','周六','周日'] + } + ], + yAxis : [ + { + type : 'value' + } + ], + series : [ + { + name:'邮件营销', + type:'line', + stack: '总量', + data:[120, 132, 101, 134, 90, 230, 210] + }, + { + name:'联盟广告', + type:'line', + stack: '总量', + data:[220, 182, 191, 234, 290, 330, 310] + }, + { + name:'视频广告', + type:'line', + stack: '总量', + data:[150, 232, 201, 154, 190, 330, 410] + }, + { + name:'直接访问', + type:'line', + stack: '总量', + data:[320, 332, 301, 334, 390, 330, 320] + }, + { + name:'搜索引擎', + type:'line', + stack: '总量', + data:[820, 932, 901, 934, 1290, 1330, 1320] + } + ] + } + ] + ,elemheapline = $('#LAY-index-heapline').children('div') + ,renderheapline = function(index){ + echheapline[index] = echarts.init(elemheapline[index], layui.echartsTheme); + echheapline[index].setOption(heapline[index]); + window.onresize = echheapline[index].resize; + }; + if(!elemheapline[0]) return; + renderheapline(0); + + //不等距折线图 + var echdiffline = [], diffline = [ + { + title : { + text: '双数值轴折线', + subtext: '纯属虚构' + }, + tooltip : { + trigger: 'axis', + axisPointer:{ + show: true, + type : 'cross', + lineStyle: { + type : 'dashed', + width : 1 + } + }, + formatter : function (params) { + return params.seriesName + ' : [ '+ params.value[0] + ', ' + params.value[1] + ' ]'; + } + }, + legend: { + data:['数据1','数据2'] + }, + calculable : true, + xAxis : [ + { + type: 'value' + } + ], + yAxis : [ + { + type: 'value', + axisLine: { + lineStyle: { color: '#dc143c' } + } + } + ], + series : [ + { + name:'数据1', + type:'line', + data:[ + [1.5, 10], [5, 7], [8, 8], [12, 6], [11, 12], [16, 9], [14, 6], [17, 4], [19, 9] + ], + markPoint : { + data : [ + // 纵轴,默认 + {type : 'max', name: '最大值',symbol: 'emptyCircle', itemStyle:{normal:{color:'#dc143c',label:{position:'top'}}}}, + {type : 'min', name: '最小值',symbol: 'emptyCircle', itemStyle:{normal:{color:'#dc143c',label:{position:'bottom'}}}}, + // 横轴 + {type : 'max', name: '最大值', valueIndex: 0, symbol: 'emptyCircle', itemStyle:{normal:{color:'#1e90ff',label:{position:'right'}}}}, + {type : 'min', name: '最小值', valueIndex: 0, symbol: 'emptyCircle', itemStyle:{normal:{color:'#1e90ff',label:{position:'left'}}}} + ] + }, + markLine : { + data : [ + // 纵轴,默认 + {type : 'max', name: '最大值', itemStyle:{normal:{color:'#dc143c'}}}, + {type : 'min', name: '最小值', itemStyle:{normal:{color:'#dc143c'}}}, + {type : 'average', name : '平均值', itemStyle:{normal:{color:'#dc143c'}}}, + // 横轴 + {type : 'max', name: '最大值', valueIndex: 0, itemStyle:{normal:{color:'#1e90ff'}}}, + {type : 'min', name: '最小值', valueIndex: 0, itemStyle:{normal:{color:'#1e90ff'}}}, + {type : 'average', name : '平均值', valueIndex: 0, itemStyle:{normal:{color:'#1e90ff'}}} + ] + } + }, + { + name:'数据2', + type:'line', + data:[ + [1, 2], [2, 3], [4, 2], [7, 5], [11, 2], [18, 3] + ] + } + ] + } + ] + ,elemdiffline = $('#LAY-index-diffline').children('div') + ,renderdiffline = function(index){ + echdiffline[index] = echarts.init(elemdiffline[index], layui.echartsTheme); + echdiffline[index].setOption(diffline[index]); + window.onresize = echdiffline[index].resize; + }; + if(!elemdiffline[0]) return; + renderdiffline(0); + + //堆积面积图 + var echheaparea = [], heaparea = [ + { + tooltip : { + trigger: 'axis' + }, + legend: { + data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎'] + }, + calculable : true, + xAxis : [ + { + type : 'category', + boundaryGap : false, + data : ['周一','周二','周三','周四','周五','周六','周日'] + } + ], + yAxis : [ + { + type : 'value' + } + ], + series : [ + { + name:'邮件营销', + type:'line', + stack: '总量', + itemStyle: {normal: {areaStyle: {type: 'default'}}}, + data:[120, 132, 101, 134, 90, 230, 210] + }, + { + name:'联盟广告', + type:'line', + stack: '总量', + itemStyle: {normal: {areaStyle: {type: 'default'}}}, + data:[220, 182, 191, 234, 290, 330, 310] + }, + { + name:'视频广告', + type:'line', + stack: '总量', + itemStyle: {normal: {areaStyle: {type: 'default'}}}, + data:[150, 232, 201, 154, 190, 330, 410] + }, + { + name:'直接访问', + type:'line', + stack: '总量', + itemStyle: {normal: {areaStyle: {type: 'default'}}}, + data:[320, 332, 301, 334, 390, 330, 320] + }, + { + name:'搜索引擎', + type:'line', + stack: '总量', + itemStyle: {normal: {areaStyle: {type: 'default'}}}, + data:[820, 932, 901, 934, 1290, 1330, 1320] + } + ] + } + ] + ,elemheaparea = $('#LAY-index-heaparea').children('div') + ,renderheaparea = function(index){ + echheaparea[index] = echarts.init(elemheaparea[index], layui.echartsTheme); + echheaparea[index].setOption(heaparea[index]); + window.onresize = echheaparea[index].resize; + }; + if(!elemheaparea[0]) return; + renderheaparea(0); + + //面积图 + var echarea = [], area = [ + { + title : { + text: '雨量流量关系图', + x: 'center' + }, + tooltip : { + trigger: 'axis', + formatter: function(params) { + return params[0].name + '
          ' + params[0].seriesName + ' : ' + params[0].value + ' (m^3/s)
          ' + + params[1].seriesName + ' : ' + -params[1].value + ' (mm)'; + } + }, + legend: { + data:['流量','降雨量'], + x: 'left' + }, + dataZoom : { + show : true, + realtime : true, + start : 0, + end : 100 + }, + xAxis : [ + { + type : 'category', + boundaryGap : false, + axisLine: {onZero: false}, + data : [ + '2009/6/12 2:00', '2009/6/12 3:00', '2009/6/12 4:00', '2009/6/12 5:00', '2009/6/12 6:00', '2009/6/12 7:00', '2009/6/12 8:00', '2009/6/12 9:00', '2009/6/12 10:00', '2009/6/12 11:00', '2009/6/12 12:00', '2009/6/12 13:00', '2009/6/12 14:00', '2009/6/12 15:00', '2009/6/12 16:00', '2009/6/12 17:00', '2009/6/12 18:00', '2009/6/12 19:00', '2009/6/12 20:00', '2009/6/12 21:00', '2009/6/12 22:00', '2009/6/12 23:00', + '2009/6/13 0:00', '2009/6/13 1:00', '2009/6/13 2:00', '2009/6/13 3:00', '2009/6/13 4:00', '2009/6/13 5:00', '2009/6/13 6:00', '2009/6/13 7:00', '2009/6/13 8:00', '2009/6/13 9:00', '2009/6/13 10:00', '2009/6/13 11:00', '2009/6/13 12:00', '2009/6/13 13:00', '2009/6/13 14:00', '2009/6/13 15:00', '2009/6/13 16:00', '2009/6/13 17:00', '2009/6/13 18:00', '2009/6/13 19:00', '2009/6/13 20:00', '2009/6/13 21:00', '2009/6/13 22:00', '2009/6/13 23:00', + '2009/6/14 0:00', '2009/6/14 1:00', '2009/6/14 2:00', '2009/6/14 3:00', '2009/6/14 4:00', '2009/6/14 5:00', '2009/6/14 6:00', '2009/6/14 7:00', '2009/6/14 8:00', '2009/6/14 9:00', '2009/6/14 10:00', '2009/6/14 11:00', '2009/6/14 12:00', '2009/6/14 13:00', '2009/6/14 14:00', '2009/6/14 15:00', '2009/6/14 16:00', '2009/6/14 17:00', '2009/6/14 18:00', '2009/6/14 19:00', '2009/6/14 20:00', '2009/6/14 21:00', '2009/6/14 22:00', '2009/6/14 23:00', + '2009/6/15 0:00', '2009/6/15 1:00', '2009/6/15 2:00', '2009/6/15 3:00', '2009/6/15 4:00', '2009/6/15 5:00', '2009/6/15 6:00', '2009/6/15 7:00', '2009/6/15 8:00', '2009/6/15 9:00', '2009/6/15 10:00', '2009/6/15 11:00', '2009/6/15 12:00', '2009/6/15 13:00', '2009/6/15 14:00', '2009/6/15 15:00', '2009/6/15 16:00', '2009/6/15 17:00', '2009/6/15 18:00', '2009/6/15 19:00', '2009/6/15 20:00', '2009/6/15 21:00', '2009/6/15 22:00', '2009/6/15 23:00', + '2009/6/15 0:00', '2009/6/16 1:00', '2009/6/16 2:00', '2009/6/16 3:00', '2009/6/16 4:00', '2009/6/16 5:00', '2009/6/16 6:00', '2009/6/16 7:00', '2009/6/16 8:00', '2009/6/16 9:00', '2009/6/16 10:00', '2009/6/16 11:00', '2009/6/16 12:00', '2009/6/16 13:00', '2009/6/16 14:00', '2009/6/16 15:00', '2009/6/16 16:00', '2009/6/16 17:00', '2009/6/16 18:00', '2009/6/16 19:00', '2009/6/16 20:00', '2009/6/16 21:00', '2009/6/16 22:00', '2009/6/16 23:00', + '2009/6/15 0:00', '2009/6/17 1:00', '2009/6/17 2:00', '2009/6/17 3:00', '2009/6/17 4:00', '2009/6/17 5:00', '2009/6/17 6:00', '2009/6/17 7:00', '2009/6/17 8:00', '2009/6/17 9:00', '2009/6/17 10:00', '2009/6/17 11:00', '2009/6/17 12:00', '2009/6/17 13:00', '2009/6/17 14:00', '2009/6/17 15:00', '2009/6/17 16:00', '2009/6/17 17:00', '2009/6/17 18:00', '2009/6/17 19:00', '2009/6/17 20:00', '2009/6/17 21:00', '2009/6/17 22:00', '2009/6/17 23:00', + '2009/6/18 0:00', '2009/6/18 1:00', '2009/6/18 2:00', '2009/6/18 3:00', '2009/6/18 4:00', '2009/6/18 5:00', '2009/6/18 6:00', '2009/6/18 7:00', '2009/6/18 8:00', '2009/6/18 9:00', '2009/6/18 10:00', '2009/6/18 11:00', '2009/6/18 12:00', '2009/6/18 13:00', '2009/6/18 14:00', '2009/6/18 15:00', '2009/6/18 16:00', '2009/6/18 17:00', '2009/6/18 18:00', '2009/6/18 19:00', '2009/6/18 20:00', '2009/6/18 21:00', '2009/6/18 22:00', '2009/6/18 23:00', + '2009/6/15 0:00', '2009/6/19 1:00', '2009/6/19 2:00', '2009/6/19 3:00', '2009/6/19 4:00', '2009/6/19 5:00', '2009/6/19 6:00', '2009/6/19 7:00', '2009/6/19 8:00', '2009/6/19 9:00', '2009/6/19 10:00', '2009/6/19 11:00', '2009/6/19 12:00', '2009/6/19 13:00', '2009/6/19 14:00', '2009/6/19 15:00', '2009/6/19 16:00', '2009/6/19 17:00', '2009/6/19 18:00', '2009/6/19 19:00', '2009/6/19 20:00', '2009/6/19 21:00', '2009/6/19 22:00', '2009/6/19 23:00', + '2009/6/20 0:00', '2009/6/20 1:00', '2009/6/20 2:00', '2009/6/20 3:00', '2009/6/20 4:00', '2009/6/20 5:00', '2009/6/20 6:00', '2009/6/20 7:00', '2009/6/20 8:00', '2009/6/20 9:00', '2009/6/20 10:00', '2009/6/20 11:00', '2009/6/20 12:00', '2009/6/20 13:00', '2009/6/20 14:00', '2009/6/20 15:00', '2009/6/20 16:00', '2009/6/20 17:00', '2009/6/20 18:00', '2009/6/20 19:00', '2009/6/20 20:00', '2009/6/20 21:00', '2009/6/20 22:00', '2009/6/20 23:00', + '2009/6/21 0:00', '2009/6/21 1:00', '2009/6/21 2:00', '2009/6/21 3:00', '2009/6/21 4:00', '2009/6/21 5:00', '2009/6/21 6:00', '2009/6/21 7:00', '2009/6/21 8:00', '2009/6/21 9:00', '2009/6/21 10:00', '2009/6/21 11:00', '2009/6/21 12:00', '2009/6/21 13:00', '2009/6/21 14:00', '2009/6/21 15:00', '2009/6/21 16:00', '2009/6/21 17:00', '2009/6/21 18:00', '2009/6/21 19:00', '2009/6/21 20:00', '2009/6/21 21:00', '2009/6/21 22:00', '2009/6/21 23:00', + '2009/6/22 0:00', '2009/6/22 1:00', '2009/6/22 2:00', '2009/6/22 3:00', '2009/6/22 4:00', '2009/6/22 5:00', '2009/6/22 6:00', '2009/6/22 7:00', '2009/6/22 8:00', '2009/6/22 9:00', '2009/6/22 10:00', '2009/6/22 11:00', '2009/6/22 12:00', '2009/6/22 13:00', '2009/6/22 14:00', '2009/6/22 15:00', '2009/6/22 16:00', '2009/6/22 17:00', '2009/6/22 18:00', '2009/6/22 19:00', '2009/6/22 20:00', '2009/6/22 21:00', '2009/6/22 22:00', '2009/6/22 23:00', + '2009/6/23 0:00', '2009/6/23 1:00', '2009/6/23 2:00', '2009/6/23 3:00', '2009/6/23 4:00', '2009/6/23 5:00', '2009/6/23 6:00', '2009/6/23 7:00', '2009/6/23 8:00', '2009/6/23 9:00', '2009/6/23 10:00', '2009/6/23 11:00', '2009/6/23 12:00', '2009/6/23 13:00', '2009/6/23 14:00', '2009/6/23 15:00', '2009/6/23 16:00', '2009/6/23 17:00', '2009/6/23 18:00', '2009/6/23 19:00', '2009/6/23 20:00', '2009/6/23 21:00', '2009/6/23 22:00', '2009/6/23 23:00', + '2009/6/24 0:00', '2009/6/24 1:00', '2009/6/24 2:00', '2009/6/24 3:00', '2009/6/24 4:00', '2009/6/24 5:00', '2009/6/24 6:00', '2009/6/24 7:00', '2009/6/24 8:00', '2009/6/24 9:00', '2009/6/24 10:00', '2009/6/24 11:00', '2009/6/24 12:00', '2009/6/24 13:00', '2009/6/24 14:00', '2009/6/24 15:00', '2009/6/24 16:00', '2009/6/24 17:00', '2009/6/24 18:00', '2009/6/24 19:00', '2009/6/24 20:00', '2009/6/24 21:00', '2009/6/24 22:00', '2009/6/24 23:00', + '2009/6/25 0:00', '2009/6/25 1:00', '2009/6/25 2:00', '2009/6/25 3:00', '2009/6/25 4:00', '2009/6/25 5:00', '2009/6/25 6:00', '2009/6/25 7:00', '2009/6/25 8:00', '2009/6/25 9:00', '2009/6/25 10:00', '2009/6/25 11:00', '2009/6/25 12:00', '2009/6/25 13:00', '2009/6/25 14:00', '2009/6/25 15:00', '2009/6/25 16:00', '2009/6/25 17:00', '2009/6/25 18:00', '2009/6/25 19:00', '2009/6/25 20:00', '2009/6/25 21:00', '2009/6/25 22:00', '2009/6/25 23:00', + '2009/6/26 0:00', '2009/6/26 1:00', '2009/6/26 2:00', '2009/6/26 3:00', '2009/6/26 4:00', '2009/6/26 5:00', '2009/6/26 6:00', '2009/6/26 7:00', '2009/6/26 8:00', '2009/6/26 9:00', '2009/6/26 10:00', '2009/6/26 11:00', '2009/6/26 12:00', '2009/6/26 13:00', '2009/6/26 14:00', '2009/6/26 15:00', '2009/6/26 16:00', '2009/6/26 17:00', '2009/6/26 18:00', '2009/6/26 19:00', '2009/6/26 20:00', '2009/6/26 21:00', '2009/6/26 22:00', '2009/6/26 23:00', + '2009/6/27 0:00', '2009/6/27 1:00', '2009/6/27 2:00', '2009/6/27 3:00', '2009/6/27 4:00', '2009/6/27 5:00', '2009/6/27 6:00', '2009/6/27 7:00', '2009/6/27 8:00', '2009/6/27 9:00', '2009/6/27 10:00', '2009/6/27 11:00', '2009/6/27 12:00', '2009/6/27 13:00', '2009/6/27 14:00', '2009/6/27 15:00', '2009/6/27 16:00', '2009/6/27 17:00', '2009/6/27 18:00', '2009/6/27 19:00', '2009/6/27 20:00', '2009/6/27 21:00', '2009/6/27 22:00', '2009/6/27 23:00', + '2009/6/28 0:00', '2009/6/28 1:00', '2009/6/28 2:00', '2009/6/28 3:00', '2009/6/28 4:00', '2009/6/28 5:00', '2009/6/28 6:00', '2009/6/28 7:00', '2009/6/28 8:00', '2009/6/28 9:00', '2009/6/28 10:00', '2009/6/28 11:00', '2009/6/28 12:00', '2009/6/28 13:00', '2009/6/28 14:00', '2009/6/28 15:00', '2009/6/28 16:00', '2009/6/28 17:00', '2009/6/28 18:00', '2009/6/28 19:00', '2009/6/28 20:00', '2009/6/28 21:00', '2009/6/28 22:00', '2009/6/28 23:00', + '2009/6/29 0:00', '2009/6/29 1:00', '2009/6/29 2:00', '2009/6/29 3:00', '2009/6/29 4:00', '2009/6/29 5:00', '2009/6/29 6:00', '2009/6/29 7:00', '2009/6/29 8:00', '2009/6/29 9:00', '2009/6/29 10:00', '2009/6/29 11:00', '2009/6/29 12:00', '2009/6/29 13:00', '2009/6/29 14:00', '2009/6/29 15:00', '2009/6/29 16:00', '2009/6/29 17:00', '2009/6/29 18:00', '2009/6/29 19:00', '2009/6/29 20:00', '2009/6/29 21:00', '2009/6/29 22:00', '2009/6/29 23:00', + '2009/6/30 0:00', '2009/6/30 1:00', '2009/6/30 2:00', '2009/6/30 3:00', '2009/6/30 4:00', '2009/6/30 5:00', '2009/6/30 6:00', '2009/6/30 7:00', '2009/6/30 8:00', '2009/6/30 9:00', '2009/6/30 10:00', '2009/6/30 11:00', '2009/6/30 12:00', '2009/6/30 13:00', '2009/6/30 14:00', '2009/6/30 15:00', '2009/6/30 16:00', '2009/6/30 17:00', '2009/6/30 18:00', '2009/6/30 19:00', '2009/6/30 20:00', '2009/6/30 21:00', '2009/6/30 22:00', '2009/6/30 23:00', + '2009/7/1 0:00', '2009/7/1 1:00', '2009/7/1 2:00', '2009/7/1 3:00', '2009/7/1 4:00', '2009/7/1 5:00', '2009/7/1 6:00', '2009/7/1 7:00', '2009/7/1 8:00', '2009/7/1 9:00', '2009/7/1 10:00', '2009/7/1 11:00', '2009/7/1 12:00', '2009/7/1 13:00', '2009/7/1 14:00', '2009/7/1 15:00', '2009/7/1 16:00', '2009/7/1 17:00', '2009/7/1 18:00', '2009/7/1 19:00', '2009/7/1 20:00', '2009/7/1 21:00', '2009/7/1 22:00', '2009/7/1 23:00', + '2009/7/2 0:00', '2009/7/2 1:00', '2009/7/2 2:00', '2009/7/2 3:00', '2009/7/2 4:00', '2009/7/2 5:00', '2009/7/2 6:00', '2009/7/2 7:00', '2009/7/2 8:00', '2009/7/2 9:00', '2009/7/2 10:00', '2009/7/2 11:00', '2009/7/2 12:00', '2009/7/2 13:00', '2009/7/2 14:00', '2009/7/2 15:00', '2009/7/2 16:00', '2009/7/2 17:00', '2009/7/2 18:00', '2009/7/2 19:00', '2009/7/2 20:00', '2009/7/2 21:00', '2009/7/2 22:00', '2009/7/2 23:00', + '2009/7/3 0:00', '2009/7/3 1:00', '2009/7/3 2:00', '2009/7/3 3:00', '2009/7/3 4:00', '2009/7/3 5:00', '2009/7/3 6:00', '2009/7/3 7:00', '2009/7/3 8:00', '2009/7/3 9:00', '2009/7/3 10:00', '2009/7/3 11:00', '2009/7/3 12:00', '2009/7/3 13:00', '2009/7/3 14:00', '2009/7/3 15:00', '2009/7/3 16:00', '2009/7/3 17:00', '2009/7/3 18:00', '2009/7/3 19:00', '2009/7/3 20:00', '2009/7/3 21:00', '2009/7/3 22:00', '2009/7/3 23:00', + '2009/7/4 0:00', '2009/7/4 1:00', '2009/7/4 2:00', '2009/7/4 3:00', '2009/7/4 4:00', '2009/7/4 5:00', '2009/7/4 6:00', '2009/7/4 7:00', '2009/7/4 8:00', '2009/7/4 9:00', '2009/7/4 10:00', '2009/7/4 11:00', '2009/7/4 12:00', '2009/7/4 13:00', '2009/7/4 14:00', '2009/7/4 15:00', '2009/7/4 16:00', '2009/7/4 17:00', '2009/7/4 18:00', '2009/7/4 19:00', '2009/7/4 20:00', '2009/7/4 21:00', '2009/7/4 22:00', '2009/7/4 23:00', + '2009/7/5 0:00', '2009/7/5 1:00', '2009/7/5 2:00', '2009/7/5 3:00', '2009/7/5 4:00', '2009/7/5 5:00', '2009/7/5 6:00', '2009/7/5 7:00', '2009/7/5 8:00', '2009/7/5 9:00', '2009/7/5 10:00', '2009/7/5 11:00', '2009/7/5 12:00', '2009/7/5 13:00', '2009/7/5 14:00', '2009/7/5 15:00', '2009/7/5 16:00', '2009/7/5 17:00', '2009/7/5 18:00', '2009/7/5 19:00', '2009/7/5 20:00', '2009/7/5 21:00', '2009/7/5 22:00', '2009/7/5 23:00', + '2009/7/6 0:00', '2009/7/6 1:00', '2009/7/6 2:00', '2009/7/6 3:00', '2009/7/6 4:00', '2009/7/6 5:00', '2009/7/6 6:00', '2009/7/6 7:00', '2009/7/6 8:00', '2009/7/6 9:00', '2009/7/6 10:00', '2009/7/6 11:00', '2009/7/6 12:00', '2009/7/6 13:00', '2009/7/6 14:00', '2009/7/6 15:00', '2009/7/6 16:00', '2009/7/6 17:00', '2009/7/6 18:00', '2009/7/6 19:00', '2009/7/6 20:00', '2009/7/6 21:00', '2009/7/6 22:00', '2009/7/6 23:00', + '2009/7/7 0:00', '2009/7/7 1:00', '2009/7/7 2:00', '2009/7/7 3:00', '2009/7/7 4:00', '2009/7/7 5:00', '2009/7/7 6:00', '2009/7/7 7:00', '2009/7/7 8:00', '2009/7/7 9:00', '2009/7/7 10:00', '2009/7/7 11:00', '2009/7/7 12:00', '2009/7/7 13:00', '2009/7/7 14:00', '2009/7/7 15:00', '2009/7/7 16:00', '2009/7/7 17:00', '2009/7/7 18:00', '2009/7/7 19:00', '2009/7/7 20:00', '2009/7/7 21:00', '2009/7/7 22:00', '2009/7/7 23:00', + '2009/7/8 0:00', '2009/7/8 1:00', '2009/7/8 2:00', '2009/7/8 3:00', '2009/7/8 4:00', '2009/7/8 5:00', '2009/7/8 6:00', '2009/7/8 7:00', '2009/7/8 8:00', '2009/7/8 9:00', '2009/7/8 10:00', '2009/7/8 11:00', '2009/7/8 12:00', '2009/7/8 13:00', '2009/7/8 14:00', '2009/7/8 15:00', '2009/7/8 16:00', '2009/7/8 17:00', '2009/7/8 18:00', '2009/7/8 19:00', '2009/7/8 20:00', '2009/7/8 21:00', '2009/7/8 22:00', '2009/7/8 23:00', + '2009/7/9 0:00', '2009/7/9 1:00', '2009/7/9 2:00', '2009/7/9 3:00', '2009/7/9 4:00', '2009/7/9 5:00', '2009/7/9 6:00', '2009/7/9 7:00', '2009/7/9 8:00', '2009/7/9 9:00', '2009/7/9 10:00', '2009/7/9 11:00', '2009/7/9 12:00', '2009/7/9 13:00', '2009/7/9 14:00', '2009/7/9 15:00', '2009/7/9 16:00', '2009/7/9 17:00', '2009/7/9 18:00', '2009/7/9 19:00', '2009/7/9 20:00', '2009/7/9 21:00', '2009/7/9 22:00', '2009/7/9 23:00', + '2009/7/10 0:00', '2009/7/10 1:00', '2009/7/10 2:00', '2009/7/10 3:00', '2009/7/10 4:00', '2009/7/10 5:00', '2009/7/10 6:00', '2009/7/10 7:00', '2009/7/10 8:00', '2009/7/10 9:00', '2009/7/10 10:00', '2009/7/10 11:00', '2009/7/10 12:00', '2009/7/10 13:00', '2009/7/10 14:00', '2009/7/10 15:00', '2009/7/10 16:00', '2009/7/10 17:00', '2009/7/10 18:00', '2009/7/10 19:00', '2009/7/10 20:00', '2009/7/10 21:00', '2009/7/10 22:00', '2009/7/10 23:00', + '2009/7/11 0:00', '2009/7/11 1:00', '2009/7/11 2:00', '2009/7/11 3:00', '2009/7/11 4:00', '2009/7/11 5:00', '2009/7/11 6:00', '2009/7/11 7:00', '2009/7/11 8:00', '2009/7/11 9:00', '2009/7/11 10:00', '2009/7/11 11:00', '2009/7/11 12:00', '2009/7/11 13:00', '2009/7/11 14:00', '2009/7/11 15:00', '2009/7/11 16:00', '2009/7/11 17:00', '2009/7/11 18:00', '2009/7/11 19:00', '2009/7/11 20:00', '2009/7/11 21:00', '2009/7/11 22:00', '2009/7/11 23:00', + '2009/7/12 0:00', '2009/7/12 1:00', '2009/7/12 2:00', '2009/7/12 3:00', '2009/7/12 4:00', '2009/7/12 5:00', '2009/7/12 6:00', '2009/7/12 7:00', '2009/7/12 8:00', '2009/7/12 9:00', '2009/7/12 10:00', '2009/7/12 11:00', '2009/7/12 12:00', '2009/7/12 13:00', '2009/7/12 14:00', '2009/7/12 15:00', '2009/7/12 16:00', '2009/7/12 17:00', '2009/7/12 18:00', '2009/7/12 19:00', '2009/7/12 20:00', '2009/7/12 21:00', '2009/7/12 22:00', '2009/7/12 23:00', + '2009/7/13 0:00', '2009/7/13 1:00', '2009/7/13 2:00', '2009/7/13 3:00', '2009/7/13 4:00', '2009/7/13 5:00', '2009/7/13 6:00', '2009/7/13 7:00', '2009/7/13 8:00', '2009/7/13 9:00', '2009/7/13 10:00', '2009/7/13 11:00', '2009/7/13 12:00', '2009/7/13 13:00', '2009/7/13 14:00', '2009/7/13 15:00', '2009/7/13 16:00', '2009/7/13 17:00', '2009/7/13 18:00', '2009/7/13 19:00', '2009/7/13 20:00', '2009/7/13 21:00', '2009/7/13 22:00', '2009/7/13 23:00', + '2009/7/14 0:00', '2009/7/14 1:00', '2009/7/14 2:00', '2009/7/14 3:00', '2009/7/14 4:00', '2009/7/14 5:00', '2009/7/14 6:00', '2009/7/14 7:00', '2009/7/14 8:00', '2009/7/14 9:00', '2009/7/14 10:00', '2009/7/14 11:00', '2009/7/14 12:00', '2009/7/14 13:00', '2009/7/14 14:00', '2009/7/14 15:00', '2009/7/14 16:00', '2009/7/14 17:00', '2009/7/14 18:00', '2009/7/14 19:00', '2009/7/14 20:00', '2009/7/14 21:00', '2009/7/14 22:00', '2009/7/14 23:00', + '2009/7/15 0:00', '2009/7/15 1:00', '2009/7/15 2:00', '2009/7/15 3:00', '2009/7/15 4:00', '2009/7/15 5:00', '2009/7/15 6:00', '2009/7/15 7:00', '2009/7/15 8:00', '2009/7/15 9:00', '2009/7/15 10:00', '2009/7/15 11:00', '2009/7/15 12:00', '2009/7/15 13:00', '2009/7/15 14:00', '2009/7/15 15:00', '2009/7/15 16:00', '2009/7/15 17:00', '2009/7/15 18:00', '2009/7/15 19:00', '2009/7/15 20:00', '2009/7/15 21:00', '2009/7/15 22:00', '2009/7/15 23:00', + '2009/7/16 0:00', '2009/7/16 1:00', '2009/7/16 2:00', '2009/7/16 3:00', '2009/7/16 4:00', '2009/7/16 5:00', '2009/7/16 6:00', '2009/7/16 7:00', '2009/7/16 8:00', '2009/7/16 9:00', '2009/7/16 10:00', '2009/7/16 11:00', '2009/7/16 12:00', '2009/7/16 13:00', '2009/7/16 14:00', '2009/7/16 15:00', '2009/7/16 16:00', '2009/7/16 17:00', '2009/7/16 18:00', '2009/7/16 19:00', '2009/7/16 20:00', '2009/7/16 21:00', '2009/7/16 22:00', '2009/7/16 23:00', + '2009/7/17 0:00', '2009/7/17 1:00', '2009/7/17 2:00', '2009/7/17 3:00', '2009/7/17 4:00', '2009/7/17 5:00', '2009/7/17 6:00', '2009/7/17 7:00', '2009/7/17 8:00', '2009/7/17 9:00', '2009/7/17 10:00', '2009/7/17 11:00', '2009/7/17 12:00', '2009/7/17 13:00', '2009/7/17 14:00', '2009/7/17 15:00', '2009/7/17 16:00', '2009/7/17 17:00', '2009/7/17 18:00', '2009/7/17 19:00', '2009/7/17 20:00', '2009/7/17 21:00', '2009/7/17 22:00', '2009/7/17 23:00', + '2009/7/18 0:00', '2009/7/18 1:00', '2009/7/18 2:00', '2009/7/18 3:00', '2009/7/18 4:00', '2009/7/18 5:00', '2009/7/18 6:00', '2009/7/18 7:00', '2009/7/18 8:00', '2009/7/18 9:00', '2009/7/18 10:00', '2009/7/18 11:00', '2009/7/18 12:00', '2009/7/18 13:00', '2009/7/18 14:00', '2009/7/18 15:00', '2009/7/18 16:00', '2009/7/18 17:00', '2009/7/18 18:00', '2009/7/18 19:00', '2009/7/18 20:00', '2009/7/18 21:00', '2009/7/18 22:00', '2009/7/18 23:00', + '2009/7/19 0:00', '2009/7/19 1:00', '2009/7/19 2:00', '2009/7/19 3:00', '2009/7/19 4:00', '2009/7/19 5:00', '2009/7/19 6:00', '2009/7/19 7:00', '2009/7/19 8:00', '2009/7/19 9:00', '2009/7/19 10:00', '2009/7/19 11:00', '2009/7/19 12:00', '2009/7/19 13:00', '2009/7/19 14:00', '2009/7/19 15:00', '2009/7/19 16:00', '2009/7/19 17:00', '2009/7/19 18:00', '2009/7/19 19:00', '2009/7/19 20:00', '2009/7/19 21:00', '2009/7/19 22:00', '2009/7/19 23:00', + '2009/7/20 0:00', '2009/7/20 1:00', '2009/7/20 2:00', '2009/7/20 3:00', '2009/7/20 4:00', '2009/7/20 5:00', '2009/7/20 6:00', '2009/7/20 7:00', '2009/7/20 8:00', '2009/7/20 9:00', '2009/7/20 10:00', '2009/7/20 11:00', '2009/7/20 12:00', '2009/7/20 13:00', '2009/7/20 14:00', '2009/7/20 15:00', '2009/7/20 16:00', '2009/7/20 17:00', '2009/7/20 18:00', '2009/7/20 19:00', '2009/7/20 20:00', '2009/7/20 21:00', '2009/7/20 22:00', '2009/7/20 23:00', + '2009/7/21 0:00', '2009/7/21 1:00', '2009/7/21 2:00', '2009/7/21 3:00', '2009/7/21 4:00', '2009/7/21 5:00', '2009/7/21 6:00', '2009/7/21 7:00', '2009/7/21 8:00', '2009/7/21 9:00', '2009/7/21 10:00', '2009/7/21 11:00', '2009/7/21 12:00', '2009/7/21 13:00', '2009/7/21 14:00', '2009/7/21 15:00', '2009/7/21 16:00', '2009/7/21 17:00', '2009/7/21 18:00', '2009/7/21 19:00', '2009/7/21 20:00', '2009/7/21 21:00', '2009/7/21 22:00', '2009/7/21 23:00', + '2009/7/22 0:00', '2009/7/22 1:00', '2009/7/22 2:00', '2009/7/22 3:00', '2009/7/22 4:00', '2009/7/22 5:00', '2009/7/22 6:00', '2009/7/22 7:00', '2009/7/22 8:00', '2009/7/22 9:00', '2009/7/22 10:00', '2009/7/22 11:00', '2009/7/22 12:00', '2009/7/22 13:00', '2009/7/22 14:00', '2009/7/22 15:00', '2009/7/22 16:00', '2009/7/22 17:00', '2009/7/22 18:00', '2009/7/22 19:00', '2009/7/22 20:00', '2009/7/22 21:00', '2009/7/22 22:00', '2009/7/22 23:00', + '2009/7/23 0:00', '2009/7/23 1:00', '2009/7/23 2:00', '2009/7/23 3:00', '2009/7/23 4:00', '2009/7/23 5:00', '2009/7/23 6:00', '2009/7/23 7:00', '2009/7/23 8:00', '2009/7/23 9:00', '2009/7/23 10:00', '2009/7/23 11:00', '2009/7/23 12:00', '2009/7/23 13:00', '2009/7/23 14:00', '2009/7/23 15:00', '2009/7/23 16:00', '2009/7/23 17:00', '2009/7/23 18:00', '2009/7/23 19:00', '2009/7/23 20:00', '2009/7/23 21:00', '2009/7/23 22:00', '2009/7/23 23:00', + '2009/7/24 0:00', '2009/7/24 1:00', '2009/7/24 2:00', '2009/7/24 3:00', '2009/7/24 4:00', '2009/7/24 5:00', '2009/7/24 6:00', '2009/7/24 7:00', '2009/7/24 8:00', '2009/7/24 9:00', '2009/7/24 10:00', '2009/7/24 11:00', '2009/7/24 12:00', '2009/7/24 13:00', '2009/7/24 14:00', '2009/7/24 15:00', '2009/7/24 16:00', '2009/7/24 17:00', '2009/7/24 18:00', '2009/7/24 19:00', '2009/7/24 20:00', '2009/7/24 21:00', '2009/7/24 22:00', '2009/7/24 23:00', + '2009/7/25 0:00', '2009/7/25 1:00', '2009/7/25 2:00', '2009/7/25 3:00', '2009/7/25 4:00', '2009/7/25 5:00', '2009/7/25 6:00', '2009/7/25 7:00', '2009/7/25 8:00', '2009/7/25 9:00', '2009/7/25 10:00', '2009/7/25 11:00', '2009/7/25 12:00', '2009/7/25 13:00', '2009/7/25 14:00', '2009/7/25 15:00', '2009/7/25 16:00', '2009/7/25 17:00', '2009/7/25 18:00', '2009/7/25 19:00', '2009/7/25 20:00', '2009/7/25 21:00', '2009/7/25 22:00', '2009/7/25 23:00', + '2009/7/26 0:00', '2009/7/26 1:00', '2009/7/26 2:00', '2009/7/26 3:00', '2009/7/26 4:00', '2009/7/26 5:00', '2009/7/26 6:00', '2009/7/26 7:00', '2009/7/26 8:00', '2009/7/26 9:00', '2009/7/26 10:00', '2009/7/26 11:00', '2009/7/26 12:00', '2009/7/26 13:00', '2009/7/26 14:00', '2009/7/26 15:00', '2009/7/26 16:00', '2009/7/26 17:00', '2009/7/26 18:00', '2009/7/26 19:00', '2009/7/26 20:00', '2009/7/26 21:00', '2009/7/26 22:00', '2009/7/26 23:00', + '2009/7/27 0:00', '2009/7/27 1:00', '2009/7/27 2:00', '2009/7/27 3:00', '2009/7/27 4:00', '2009/7/27 5:00', '2009/7/27 6:00', '2009/7/27 7:00', '2009/7/27 8:00', '2009/7/27 9:00', '2009/7/27 10:00', '2009/7/27 11:00', '2009/7/27 12:00', '2009/7/27 13:00', '2009/7/27 14:00', '2009/7/27 15:00', '2009/7/27 16:00', '2009/7/27 17:00', '2009/7/27 18:00', '2009/7/27 19:00', '2009/7/27 20:00', '2009/7/27 21:00', '2009/7/27 22:00', '2009/7/27 23:00', + '2009/7/28 0:00', '2009/7/28 1:00', '2009/7/28 2:00', '2009/7/28 3:00', '2009/7/28 4:00', '2009/7/28 5:00', '2009/7/28 6:00', '2009/7/28 7:00', '2009/7/28 8:00', '2009/7/28 9:00', '2009/7/28 10:00', '2009/7/28 11:00', '2009/7/28 12:00', '2009/7/28 13:00', '2009/7/28 14:00', '2009/7/28 15:00', '2009/7/28 16:00', '2009/7/28 17:00', '2009/7/28 18:00', '2009/7/28 19:00', '2009/7/28 20:00', '2009/7/28 21:00', '2009/7/28 22:00', '2009/7/28 23:00', + '2009/7/29 0:00', '2009/7/29 1:00', '2009/7/29 2:00', '2009/7/29 3:00', '2009/7/29 4:00', '2009/7/29 5:00', '2009/7/29 6:00', '2009/7/29 7:00', '2009/7/29 8:00', '2009/7/29 9:00', '2009/7/29 10:00', '2009/7/29 11:00', '2009/7/29 12:00', '2009/7/29 13:00', '2009/7/29 14:00', '2009/7/29 15:00', '2009/7/29 16:00', '2009/7/29 17:00', '2009/7/29 18:00', '2009/7/29 19:00', '2009/7/29 20:00', '2009/7/29 21:00', '2009/7/29 22:00', '2009/7/29 23:00', + '2009/7/30 0:00', '2009/7/30 1:00', '2009/7/30 2:00', '2009/7/30 3:00', '2009/7/30 4:00', '2009/7/30 5:00', '2009/7/30 6:00', '2009/7/30 7:00', '2009/7/30 8:00', '2009/7/30 9:00', '2009/7/30 10:00', '2009/7/30 11:00', '2009/7/30 12:00', '2009/7/30 13:00', '2009/7/30 14:00', '2009/7/30 15:00', '2009/7/30 16:00', '2009/7/30 17:00', '2009/7/30 18:00', '2009/7/30 19:00', '2009/7/30 20:00', '2009/7/30 21:00', '2009/7/30 22:00', '2009/7/30 23:00', + '2009/7/31 0:00', '2009/7/31 1:00', '2009/7/31 2:00', '2009/7/31 3:00', '2009/7/31 4:00', '2009/7/31 5:00', '2009/7/31 6:00', '2009/7/31 7:00', '2009/7/31 8:00', '2009/7/31 9:00', '2009/7/31 10:00', '2009/7/31 11:00', '2009/7/31 12:00', '2009/7/31 13:00', '2009/7/31 14:00', '2009/7/31 15:00', '2009/7/31 16:00', '2009/7/31 17:00', '2009/7/31 18:00', '2009/7/31 19:00', '2009/7/31 20:00', '2009/7/31 21:00', '2009/7/31 22:00', '2009/7/31 23:00', + '2009/8/1 0:00', '2009/8/1 1:00', '2009/8/1 2:00', '2009/8/1 3:00', '2009/8/1 4:00', '2009/8/1 5:00', '2009/8/1 6:00', '2009/8/1 7:00', '2009/8/1 8:00', '2009/8/1 9:00', '2009/8/1 10:00', '2009/8/1 11:00', '2009/8/1 12:00', '2009/8/1 13:00', '2009/8/1 14:00', '2009/8/1 15:00', '2009/8/1 16:00', '2009/8/1 17:00', '2009/8/1 18:00', '2009/8/1 19:00', '2009/8/1 20:00', '2009/8/1 21:00', '2009/8/1 22:00', '2009/8/1 23:00', '2009/8/2 0:00', '2009/8/2 1:00', '2009/8/2 2:00', '2009/8/2 3:00', '2009/8/2 4:00', '2009/8/2 5:00', '2009/8/2 6:00', '2009/8/2 7:00', '2009/8/2 8:00', '2009/8/2 9:00', '2009/8/2 10:00', '2009/8/2 11:00', '2009/8/2 12:00', '2009/8/2 13:00', '2009/8/2 14:00', '2009/8/2 15:00', '2009/8/2 16:00', '2009/8/2 17:00', '2009/8/2 18:00', '2009/8/2 19:00', '2009/8/2 20:00', '2009/8/2 21:00', '2009/8/2 22:00', '2009/8/2 23:00', '2009/8/3 0:00', '2009/8/3 1:00', '2009/8/3 2:00', '2009/8/3 3:00', '2009/8/3 4:00', '2009/8/3 5:00', '2009/8/3 6:00', '2009/8/3 7:00', '2009/8/3 8:00', '2009/8/3 9:00', '2009/8/3 10:00', '2009/8/3 11:00', '2009/8/3 12:00', '2009/8/3 13:00', '2009/8/3 14:00', '2009/8/3 15:00', '2009/8/3 16:00', '2009/8/3 17:00', '2009/8/3 18:00', '2009/8/3 19:00', '2009/8/3 20:00', '2009/8/3 21:00', '2009/8/3 22:00', '2009/8/3 23:00', '2009/8/4 0:00', '2009/8/4 1:00', '2009/8/4 2:00', '2009/8/4 3:00', '2009/8/4 4:00', '2009/8/4 5:00', '2009/8/4 6:00', '2009/8/4 7:00', '2009/8/4 8:00', '2009/8/4 9:00', '2009/8/4 10:00', '2009/8/4 11:00', '2009/8/4 12:00', '2009/8/4 13:00', '2009/8/4 14:00', '2009/8/4 15:00', '2009/8/4 16:00', '2009/8/4 17:00', '2009/8/4 18:00', '2009/8/4 19:00', '2009/8/4 20:00', '2009/8/4 21:00', '2009/8/4 22:00', '2009/8/4 23:00', '2009/8/5 0:00', '2009/8/5 1:00', '2009/8/5 2:00', '2009/8/5 3:00', '2009/8/5 4:00', '2009/8/5 5:00', '2009/8/5 6:00', '2009/8/5 7:00', '2009/8/5 8:00', '2009/8/5 9:00', '2009/8/5 10:00', '2009/8/5 11:00', '2009/8/5 12:00', '2009/8/5 13:00', '2009/8/5 14:00', '2009/8/5 15:00', '2009/8/5 16:00', '2009/8/5 17:00', '2009/8/5 18:00', '2009/8/5 19:00', '2009/8/5 20:00', '2009/8/5 21:00', '2009/8/5 22:00', '2009/8/5 23:00', '2009/8/6 0:00', '2009/8/6 1:00', '2009/8/6 2:00', '2009/8/6 3:00', '2009/8/6 4:00', '2009/8/6 5:00', '2009/8/6 6:00', '2009/8/6 7:00', '2009/8/6 8:00', '2009/8/6 9:00', '2009/8/6 10:00', '2009/8/6 11:00', '2009/8/6 12:00', '2009/8/6 13:00', '2009/8/6 14:00', '2009/8/6 15:00', '2009/8/6 16:00', '2009/8/6 17:00', '2009/8/6 18:00', '2009/8/6 19:00', '2009/8/6 20:00', '2009/8/6 21:00', '2009/8/6 22:00', '2009/8/6 23:00', '2009/8/7 0:00', '2009/8/7 1:00', '2009/8/7 2:00', '2009/8/7 3:00', '2009/8/7 4:00', '2009/8/7 5:00', '2009/8/7 6:00', '2009/8/7 7:00', '2009/8/7 8:00', '2009/8/7 9:00', '2009/8/7 10:00', '2009/8/7 11:00', '2009/8/7 12:00', '2009/8/7 13:00', '2009/8/7 14:00', '2009/8/7 15:00', '2009/8/7 16:00', '2009/8/7 17:00', '2009/8/7 18:00', '2009/8/7 19:00', '2009/8/7 20:00', '2009/8/7 21:00', '2009/8/7 22:00', '2009/8/7 23:00', '2009/8/8 0:00', '2009/8/8 1:00', '2009/8/8 2:00', '2009/8/8 3:00', '2009/8/8 4:00', '2009/8/8 5:00', '2009/8/8 6:00', '2009/8/8 7:00', '2009/8/8 8:00', '2009/8/8 9:00', '2009/8/8 10:00', '2009/8/8 11:00', '2009/8/8 12:00', '2009/8/8 13:00', '2009/8/8 14:00', '2009/8/8 15:00', '2009/8/8 16:00', '2009/8/8 17:00', '2009/8/8 18:00', '2009/8/8 19:00', '2009/8/8 20:00', '2009/8/8 21:00', '2009/8/8 22:00', '2009/8/8 23:00', '2009/8/9 0:00', '2009/8/9 1:00', '2009/8/9 2:00', '2009/8/9 3:00', '2009/8/9 4:00', '2009/8/9 5:00', '2009/8/9 6:00', '2009/8/9 7:00', '2009/8/9 8:00', '2009/8/9 9:00', '2009/8/9 10:00', '2009/8/9 11:00', '2009/8/9 12:00', '2009/8/9 13:00', '2009/8/9 14:00', '2009/8/9 15:00', '2009/8/9 16:00', '2009/8/9 17:00', '2009/8/9 18:00', '2009/8/9 19:00', '2009/8/9 20:00', '2009/8/9 21:00', '2009/8/9 22:00', '2009/8/9 23:00', '2009/8/10 0:00', '2009/8/10 1:00', '2009/8/10 2:00', '2009/8/10 3:00', '2009/8/10 4:00', '2009/8/10 5:00', '2009/8/10 6:00', '2009/8/10 7:00', '2009/8/10 8:00', '2009/8/10 9:00', '2009/8/10 10:00', '2009/8/10 11:00', '2009/8/10 12:00', '2009/8/10 13:00', '2009/8/10 14:00', '2009/8/10 15:00', '2009/8/10 16:00', '2009/8/10 17:00', '2009/8/10 18:00', '2009/8/10 19:00', '2009/8/10 20:00', '2009/8/10 21:00', '2009/8/10 22:00', '2009/8/10 23:00', '2009/8/11 0:00', '2009/8/11 1:00', '2009/8/11 2:00', '2009/8/11 3:00', '2009/8/11 4:00', '2009/8/11 5:00', '2009/8/11 6:00', '2009/8/11 7:00', '2009/8/11 8:00', '2009/8/11 9:00', '2009/8/11 10:00', '2009/8/11 11:00', '2009/8/11 12:00', '2009/8/11 13:00', '2009/8/11 14:00', '2009/8/11 15:00', '2009/8/11 16:00', '2009/8/11 17:00', '2009/8/11 18:00', '2009/8/11 19:00', '2009/8/11 20:00', '2009/8/11 21:00', '2009/8/11 22:00', '2009/8/11 23:00', '2009/8/12 0:00', '2009/8/12 1:00', '2009/8/12 2:00', '2009/8/12 3:00', '2009/8/12 4:00', '2009/8/12 5:00', '2009/8/12 6:00', '2009/8/12 7:00', '2009/8/12 8:00', '2009/8/12 9:00', '2009/8/12 10:00', '2009/8/12 11:00', '2009/8/12 12:00', '2009/8/12 13:00', '2009/8/12 14:00', '2009/8/12 15:00', '2009/8/12 16:00', '2009/8/12 17:00', '2009/8/12 18:00', '2009/8/12 19:00', '2009/8/12 20:00', '2009/8/12 21:00', '2009/8/12 22:00', '2009/8/12 23:00', '2009/8/13 0:00', '2009/8/13 1:00', '2009/8/13 2:00', '2009/8/13 3:00', '2009/8/13 4:00', '2009/8/13 5:00', '2009/8/13 6:00', '2009/8/13 7:00', '2009/8/13 8:00', '2009/8/13 9:00', '2009/8/13 10:00', '2009/8/13 11:00', '2009/8/13 12:00', '2009/8/13 13:00', '2009/8/13 14:00', '2009/8/13 15:00', '2009/8/13 16:00', '2009/8/13 17:00', '2009/8/13 18:00', '2009/8/13 19:00', '2009/8/13 20:00', '2009/8/13 21:00', '2009/8/13 22:00', '2009/8/13 23:00', '2009/8/14 0:00', '2009/8/14 1:00', '2009/8/14 2:00', '2009/8/14 3:00', '2009/8/14 4:00', '2009/8/14 5:00', '2009/8/14 6:00', '2009/8/14 7:00', '2009/8/14 8:00', '2009/8/14 9:00', '2009/8/14 10:00', '2009/8/14 11:00', '2009/8/14 12:00', '2009/8/14 13:00', '2009/8/14 14:00', '2009/8/14 15:00', '2009/8/14 16:00', '2009/8/14 17:00', '2009/8/14 18:00', '2009/8/14 19:00', '2009/8/14 20:00', '2009/8/14 21:00', '2009/8/14 22:00', '2009/8/14 23:00', '2009/8/15 0:00', '2009/8/15 1:00', '2009/8/15 2:00', '2009/8/15 3:00', '2009/8/15 4:00', '2009/8/15 5:00', '2009/8/15 6:00', '2009/8/15 7:00', '2009/8/15 8:00', '2009/8/15 9:00', '2009/8/15 10:00', '2009/8/15 11:00', '2009/8/15 12:00', '2009/8/15 13:00', '2009/8/15 14:00', '2009/8/15 15:00', '2009/8/15 16:00', '2009/8/15 17:00', '2009/8/15 18:00', '2009/8/15 19:00', '2009/8/15 20:00', '2009/8/15 21:00', '2009/8/15 22:00', '2009/8/15 23:00', '2009/8/16 0:00', '2009/8/16 1:00', '2009/8/16 2:00', '2009/8/16 3:00', '2009/8/16 4:00', '2009/8/16 5:00', '2009/8/16 6:00', '2009/8/16 7:00', '2009/8/16 8:00', '2009/8/16 9:00', '2009/8/16 10:00', '2009/8/16 11:00', '2009/8/16 12:00', '2009/8/16 13:00', '2009/8/16 14:00', '2009/8/16 15:00', '2009/8/16 16:00', '2009/8/16 17:00', '2009/8/16 18:00', '2009/8/16 19:00', '2009/8/16 20:00', '2009/8/16 21:00', '2009/8/16 22:00', '2009/8/16 23:00', '2009/8/17 0:00', '2009/8/17 1:00', '2009/8/17 2:00', '2009/8/17 3:00', '2009/8/17 4:00', '2009/8/17 5:00', '2009/8/17 6:00', '2009/8/17 7:00', '2009/8/17 8:00', '2009/8/17 9:00', '2009/8/17 10:00', '2009/8/17 11:00', '2009/8/17 12:00', '2009/8/17 13:00', '2009/8/17 14:00', '2009/8/17 15:00', '2009/8/17 16:00', '2009/8/17 17:00', '2009/8/17 18:00', '2009/8/17 19:00', '2009/8/17 20:00', '2009/8/17 21:00', '2009/8/17 22:00', '2009/8/17 23:00', '2009/8/18 0:00', '2009/8/18 1:00', '2009/8/18 2:00', '2009/8/18 3:00', '2009/8/18 4:00', '2009/8/18 5:00', '2009/8/18 6:00', '2009/8/18 7:00', '2009/8/18 8:00', '2009/8/18 9:00', '2009/8/18 10:00', '2009/8/18 11:00', '2009/8/18 12:00', '2009/8/18 13:00', '2009/8/18 14:00', '2009/8/18 15:00', '2009/8/18 16:00', '2009/8/18 17:00', '2009/8/18 18:00', '2009/8/18 19:00', '2009/8/18 20:00', '2009/8/18 21:00', '2009/8/18 22:00', '2009/8/18 23:00', '2009/8/19 0:00', '2009/8/19 1:00', '2009/8/19 2:00', '2009/8/19 3:00', '2009/8/19 4:00', '2009/8/19 5:00', '2009/8/19 6:00', '2009/8/19 7:00', '2009/8/19 8:00', '2009/8/19 9:00', '2009/8/19 10:00', '2009/8/19 11:00', '2009/8/19 12:00', '2009/8/19 13:00', '2009/8/19 14:00', '2009/8/19 15:00', '2009/8/19 16:00', '2009/8/19 17:00', '2009/8/19 18:00', '2009/8/19 19:00', '2009/8/19 20:00', '2009/8/19 21:00', '2009/8/19 22:00', '2009/8/19 23:00', '2009/8/20 0:00', '2009/8/20 1:00', '2009/8/20 2:00', '2009/8/20 3:00', '2009/8/20 4:00', '2009/8/20 5:00', '2009/8/20 6:00', '2009/8/20 7:00', '2009/8/20 8:00', '2009/8/20 9:00', '2009/8/20 10:00', '2009/8/20 11:00', '2009/8/20 12:00', '2009/8/20 13:00', '2009/8/20 14:00', '2009/8/20 15:00', '2009/8/20 16:00', '2009/8/20 17:00', '2009/8/20 18:00', '2009/8/20 19:00', '2009/8/20 20:00', '2009/8/20 21:00', '2009/8/20 22:00', '2009/8/20 23:00', '2009/8/21 0:00', '2009/8/21 1:00', '2009/8/21 2:00', '2009/8/21 3:00', '2009/8/21 4:00', '2009/8/21 5:00', '2009/8/21 6:00', '2009/8/21 7:00', '2009/8/21 8:00', '2009/8/21 9:00', '2009/8/21 10:00', '2009/8/21 11:00', '2009/8/21 12:00', '2009/8/21 13:00', '2009/8/21 14:00', '2009/8/21 15:00', '2009/8/21 16:00', '2009/8/21 17:00', '2009/8/21 18:00', '2009/8/21 19:00', '2009/8/21 20:00', '2009/8/21 21:00', '2009/8/21 22:00', '2009/8/21 23:00', '2009/8/22 0:00', '2009/8/22 1:00', '2009/8/22 2:00', '2009/8/22 3:00', '2009/8/22 4:00', '2009/8/22 5:00', '2009/8/22 6:00', '2009/8/22 7:00', '2009/8/22 8:00', '2009/8/22 9:00', '2009/8/22 10:00', '2009/8/22 11:00', '2009/8/22 12:00', '2009/8/22 13:00', '2009/8/22 14:00', '2009/8/22 15:00', '2009/8/22 16:00', '2009/8/22 17:00', '2009/8/22 18:00', '2009/8/22 19:00', '2009/8/22 20:00', '2009/8/22 21:00', '2009/8/22 22:00', '2009/8/22 23:00', '2009/8/23 0:00', '2009/8/23 1:00', '2009/8/23 2:00', '2009/8/23 3:00', '2009/8/23 4:00', '2009/8/23 5:00', '2009/8/23 6:00', '2009/8/23 7:00', '2009/8/23 8:00', '2009/8/23 9:00', '2009/8/23 10:00', '2009/8/23 11:00', '2009/8/23 12:00', '2009/8/23 13:00', '2009/8/23 14:00', '2009/8/23 15:00', '2009/8/23 16:00', '2009/8/23 17:00', '2009/8/23 18:00', '2009/8/23 19:00', '2009/8/23 20:00', '2009/8/23 21:00', '2009/8/23 22:00', '2009/8/23 23:00', '2009/8/24 0:00', '2009/8/24 1:00', '2009/8/24 2:00', '2009/8/24 3:00', '2009/8/24 4:00', '2009/8/24 5:00', '2009/8/24 6:00', '2009/8/24 7:00', '2009/8/24 8:00', '2009/8/24 9:00', '2009/8/24 10:00', '2009/8/24 11:00', '2009/8/24 12:00', '2009/8/24 13:00', '2009/8/24 14:00', '2009/8/24 15:00', '2009/8/24 16:00', '2009/8/24 17:00', '2009/8/24 18:00', '2009/8/24 19:00', '2009/8/24 20:00', '2009/8/24 21:00', '2009/8/24 22:00', '2009/8/24 23:00', '2009/8/25 0:00', '2009/8/25 1:00', '2009/8/25 2:00', '2009/8/25 3:00', '2009/8/25 4:00', '2009/8/25 5:00', '2009/8/25 6:00', '2009/8/25 7:00', '2009/8/25 8:00', '2009/8/25 9:00', '2009/8/25 10:00', '2009/8/25 11:00', '2009/8/25 12:00', '2009/8/25 13:00', '2009/8/25 14:00', '2009/8/25 15:00', '2009/8/25 16:00', '2009/8/25 17:00', '2009/8/25 18:00', '2009/8/25 19:00', '2009/8/25 20:00', '2009/8/25 21:00', '2009/8/25 22:00', '2009/8/25 23:00', '2009/8/26 0:00', '2009/8/26 1:00', '2009/8/26 2:00', '2009/8/26 3:00', '2009/8/26 4:00', '2009/8/26 5:00', '2009/8/26 6:00', '2009/8/26 7:00', '2009/8/26 8:00', '2009/8/26 9:00', '2009/8/26 10:00', '2009/8/26 11:00', '2009/8/26 12:00', '2009/8/26 13:00', '2009/8/26 14:00', '2009/8/26 15:00', '2009/8/26 16:00', '2009/8/26 17:00', '2009/8/26 18:00', '2009/8/26 19:00', '2009/8/26 20:00', '2009/8/26 21:00', '2009/8/26 22:00', '2009/8/26 23:00', '2009/8/27 0:00', '2009/8/27 1:00', '2009/8/27 2:00', '2009/8/27 3:00', '2009/8/27 4:00', '2009/8/27 5:00', '2009/8/27 6:00', '2009/8/27 7:00', '2009/8/27 8:00', '2009/8/27 9:00', '2009/8/27 10:00', '2009/8/27 11:00', '2009/8/27 12:00', '2009/8/27 13:00', '2009/8/27 14:00', '2009/8/27 15:00', '2009/8/27 16:00', '2009/8/27 17:00', '2009/8/27 18:00', '2009/8/27 19:00', '2009/8/27 20:00', '2009/8/27 21:00', '2009/8/27 22:00', '2009/8/27 23:00', '2009/8/28 0:00', '2009/8/28 1:00', '2009/8/28 2:00', '2009/8/28 3:00', '2009/8/28 4:00', '2009/8/28 5:00', '2009/8/28 6:00', '2009/8/28 7:00', '2009/8/28 8:00', '2009/8/28 9:00', '2009/8/28 10:00', '2009/8/28 11:00', '2009/8/28 12:00', '2009/8/28 13:00', '2009/8/28 14:00', '2009/8/28 15:00', '2009/8/28 16:00', '2009/8/28 17:00', '2009/8/28 18:00', '2009/8/28 19:00', '2009/8/28 20:00', '2009/8/28 21:00', '2009/8/28 22:00', '2009/8/28 23:00', '2009/8/29 0:00', '2009/8/29 1:00', '2009/8/29 2:00', '2009/8/29 3:00', '2009/8/29 4:00', '2009/8/29 5:00', '2009/8/29 6:00', '2009/8/29 7:00', '2009/8/29 8:00', '2009/8/29 9:00', '2009/8/29 10:00', '2009/8/29 11:00', '2009/8/29 12:00', '2009/8/29 13:00', '2009/8/29 14:00', '2009/8/29 15:00', '2009/8/29 16:00', '2009/8/29 17:00', '2009/8/29 18:00', '2009/8/29 19:00', '2009/8/29 20:00', '2009/8/29 21:00', '2009/8/29 22:00', '2009/8/29 23:00', '2009/8/30 0:00', '2009/8/30 1:00', '2009/8/30 2:00', '2009/8/30 3:00', '2009/8/30 4:00', '2009/8/30 5:00', '2009/8/30 6:00', '2009/8/30 7:00', '2009/8/30 8:00', '2009/8/30 9:00', '2009/8/30 10:00', '2009/8/30 11:00', '2009/8/30 12:00', '2009/8/30 13:00', '2009/8/30 14:00', '2009/8/30 15:00', '2009/8/30 16:00', '2009/8/30 17:00', '2009/8/30 18:00', '2009/8/30 19:00', '2009/8/30 20:00', '2009/8/30 21:00', '2009/8/30 22:00', '2009/8/30 23:00', '2009/8/31 0:00', '2009/8/31 1:00', '2009/8/31 2:00', '2009/8/31 3:00', '2009/8/31 4:00', '2009/8/31 5:00', '2009/8/31 6:00', '2009/8/31 7:00', '2009/8/31 8:00', '2009/8/31 9:00', '2009/8/31 10:00', '2009/8/31 11:00', '2009/8/31 12:00', '2009/8/31 13:00', '2009/8/31 14:00', '2009/8/31 15:00', '2009/8/31 16:00', '2009/8/31 17:00', '2009/8/31 18:00', '2009/8/31 19:00', '2009/8/31 20:00', '2009/8/31 21:00', '2009/8/31 22:00', '2009/8/31 23:00', + '2009/9/1 0:00', '2009/9/1 1:00', '2009/9/1 2:00', '2009/9/1 3:00', '2009/9/1 4:00', '2009/9/1 5:00', '2009/9/1 6:00', '2009/9/1 7:00', '2009/9/1 8:00', '2009/9/1 9:00', '2009/9/1 10:00', '2009/9/1 11:00', '2009/9/1 12:00', '2009/9/1 13:00', '2009/9/1 14:00', '2009/9/1 15:00', '2009/9/1 16:00', '2009/9/1 17:00', '2009/9/1 18:00', '2009/9/1 19:00', '2009/9/1 20:00', '2009/9/1 21:00', '2009/9/1 22:00', '2009/9/1 23:00', '2009/9/2 0:00', '2009/9/2 1:00', '2009/9/2 2:00', '2009/9/2 3:00', '2009/9/2 4:00', '2009/9/2 5:00', '2009/9/2 6:00', '2009/9/2 7:00', '2009/9/2 8:00', '2009/9/2 9:00', '2009/9/2 10:00', '2009/9/2 11:00', '2009/9/2 12:00', '2009/9/2 13:00', '2009/9/2 14:00', '2009/9/2 15:00', '2009/9/2 16:00', '2009/9/2 17:00', '2009/9/2 18:00', '2009/9/2 19:00', '2009/9/2 20:00', '2009/9/2 21:00', '2009/9/2 22:00', '2009/9/2 23:00', '2009/9/3 0:00', '2009/9/3 1:00', '2009/9/3 2:00', '2009/9/3 3:00', '2009/9/3 4:00', '2009/9/3 5:00', '2009/9/3 6:00', '2009/9/3 7:00', '2009/9/3 8:00', '2009/9/3 9:00', '2009/9/3 10:00', '2009/9/3 11:00', '2009/9/3 12:00', '2009/9/3 13:00', '2009/9/3 14:00', '2009/9/3 15:00', '2009/9/3 16:00', '2009/9/3 17:00', '2009/9/3 18:00', '2009/9/3 19:00', '2009/9/3 20:00', '2009/9/3 21:00', '2009/9/3 22:00', '2009/9/3 23:00', '2009/9/4 0:00', '2009/9/4 1:00', '2009/9/4 2:00', '2009/9/4 3:00', '2009/9/4 4:00', '2009/9/4 5:00', '2009/9/4 6:00', '2009/9/4 7:00', '2009/9/4 8:00', '2009/9/4 9:00', '2009/9/4 10:00', '2009/9/4 11:00', '2009/9/4 12:00', '2009/9/4 13:00', '2009/9/4 14:00', '2009/9/4 15:00', '2009/9/4 16:00', '2009/9/4 17:00', '2009/9/4 18:00', '2009/9/4 19:00', '2009/9/4 20:00', '2009/9/4 21:00', '2009/9/4 22:00', '2009/9/4 23:00', '2009/9/5 0:00', '2009/9/5 1:00', '2009/9/5 2:00', '2009/9/5 3:00', '2009/9/5 4:00', '2009/9/5 5:00', '2009/9/5 6:00', '2009/9/5 7:00', '2009/9/5 8:00', '2009/9/5 9:00', '2009/9/5 10:00', '2009/9/5 11:00', '2009/9/5 12:00', '2009/9/5 13:00', '2009/9/5 14:00', '2009/9/5 15:00', '2009/9/5 16:00', '2009/9/5 17:00', '2009/9/5 18:00', '2009/9/5 19:00', '2009/9/5 20:00', '2009/9/5 21:00', '2009/9/5 22:00', '2009/9/5 23:00', '2009/9/6 0:00', '2009/9/6 1:00', '2009/9/6 2:00', '2009/9/6 3:00', '2009/9/6 4:00', '2009/9/6 5:00', '2009/9/6 6:00', '2009/9/6 7:00', '2009/9/6 8:00', '2009/9/6 9:00', '2009/9/6 10:00', '2009/9/6 11:00', '2009/9/6 12:00', '2009/9/6 13:00', '2009/9/6 14:00', '2009/9/6 15:00', '2009/9/6 16:00', '2009/9/6 17:00', '2009/9/6 18:00', '2009/9/6 19:00', '2009/9/6 20:00', '2009/9/6 21:00', '2009/9/6 22:00', '2009/9/6 23:00', '2009/9/7 0:00', '2009/9/7 1:00', '2009/9/7 2:00', '2009/9/7 3:00', '2009/9/7 4:00', '2009/9/7 5:00', '2009/9/7 6:00', '2009/9/7 7:00', '2009/9/7 8:00', '2009/9/7 9:00', '2009/9/7 10:00', '2009/9/7 11:00', '2009/9/7 12:00', '2009/9/7 13:00', '2009/9/7 14:00', '2009/9/7 15:00', '2009/9/7 16:00', '2009/9/7 17:00', '2009/9/7 18:00', '2009/9/7 19:00', '2009/9/7 20:00', '2009/9/7 21:00', '2009/9/7 22:00', '2009/9/7 23:00', '2009/9/8 0:00', '2009/9/8 1:00', '2009/9/8 2:00', '2009/9/8 3:00', '2009/9/8 4:00', '2009/9/8 5:00', '2009/9/8 6:00', '2009/9/8 7:00', '2009/9/8 8:00', '2009/9/8 9:00', '2009/9/8 10:00', '2009/9/8 11:00', '2009/9/8 12:00', '2009/9/8 13:00', '2009/9/8 14:00', '2009/9/8 15:00', '2009/9/8 16:00', '2009/9/8 17:00', '2009/9/8 18:00', '2009/9/8 19:00', '2009/9/8 20:00', '2009/9/8 21:00', '2009/9/8 22:00', '2009/9/8 23:00', '2009/9/9 0:00', '2009/9/9 1:00', '2009/9/9 2:00', '2009/9/9 3:00', '2009/9/9 4:00', '2009/9/9 5:00', '2009/9/9 6:00', '2009/9/9 7:00', '2009/9/9 8:00', '2009/9/9 9:00', '2009/9/9 10:00', '2009/9/9 11:00', '2009/9/9 12:00', '2009/9/9 13:00', '2009/9/9 14:00', '2009/9/9 15:00', '2009/9/9 16:00', '2009/9/9 17:00', '2009/9/9 18:00', '2009/9/9 19:00', '2009/9/9 20:00', '2009/9/9 21:00', '2009/9/9 22:00', '2009/9/9 23:00', '2009/9/10 0:00', '2009/9/10 1:00', '2009/9/10 2:00', '2009/9/10 3:00', '2009/9/10 4:00', '2009/9/10 5:00', '2009/9/10 6:00', '2009/9/10 7:00', '2009/9/10 8:00', '2009/9/10 9:00', '2009/9/10 10:00', '2009/9/10 11:00', '2009/9/10 12:00', '2009/9/10 13:00', '2009/9/10 14:00', '2009/9/10 15:00', '2009/9/10 16:00', '2009/9/10 17:00', '2009/9/10 18:00', '2009/9/10 19:00', '2009/9/10 20:00', '2009/9/10 21:00', '2009/9/10 22:00', '2009/9/10 23:00', '2009/9/11 0:00', '2009/9/11 1:00', '2009/9/11 2:00', '2009/9/11 3:00', '2009/9/11 4:00', '2009/9/11 5:00', '2009/9/11 6:00', '2009/9/11 7:00', '2009/9/11 8:00', '2009/9/11 9:00', '2009/9/11 10:00', '2009/9/11 11:00', '2009/9/11 12:00', '2009/9/11 13:00', '2009/9/11 14:00', '2009/9/11 15:00', '2009/9/11 16:00', '2009/9/11 17:00', '2009/9/11 18:00', '2009/9/11 19:00', '2009/9/11 20:00', '2009/9/11 21:00', '2009/9/11 22:00', '2009/9/11 23:00', '2009/9/12 0:00', '2009/9/12 1:00', '2009/9/12 2:00', '2009/9/12 3:00', '2009/9/12 4:00', '2009/9/12 5:00', '2009/9/12 6:00', '2009/9/12 7:00', '2009/9/12 8:00', '2009/9/12 9:00', '2009/9/12 10:00', '2009/9/12 11:00', '2009/9/12 12:00', '2009/9/12 13:00', '2009/9/12 14:00', '2009/9/12 15:00', '2009/9/12 16:00', '2009/9/12 17:00', '2009/9/12 18:00', '2009/9/12 19:00', '2009/9/12 20:00', '2009/9/12 21:00', '2009/9/12 22:00', '2009/9/12 23:00', '2009/9/13 0:00', '2009/9/13 1:00', '2009/9/13 2:00', '2009/9/13 3:00', '2009/9/13 4:00', '2009/9/13 5:00', '2009/9/13 6:00', '2009/9/13 7:00', '2009/9/13 8:00', '2009/9/13 9:00', '2009/9/13 10:00', '2009/9/13 11:00', '2009/9/13 12:00', '2009/9/13 13:00', '2009/9/13 14:00', '2009/9/13 15:00', '2009/9/13 16:00', '2009/9/13 17:00', '2009/9/13 18:00', '2009/9/13 19:00', '2009/9/13 20:00', '2009/9/13 21:00', '2009/9/13 22:00', '2009/9/13 23:00', '2009/9/14 0:00', '2009/9/14 1:00', '2009/9/14 2:00', '2009/9/14 3:00', '2009/9/14 4:00', '2009/9/14 5:00', '2009/9/14 6:00', '2009/9/14 7:00', '2009/9/14 8:00', '2009/9/14 9:00', '2009/9/14 10:00', '2009/9/14 11:00', '2009/9/14 12:00', '2009/9/14 13:00', '2009/9/14 14:00', '2009/9/14 15:00', '2009/9/14 16:00', '2009/9/14 17:00', '2009/9/14 18:00', '2009/9/14 19:00', '2009/9/14 20:00', '2009/9/14 21:00', '2009/9/14 22:00', '2009/9/14 23:00', '2009/9/15 0:00', '2009/9/15 1:00', '2009/9/15 2:00', '2009/9/15 3:00', '2009/9/15 4:00', '2009/9/15 5:00', '2009/9/15 6:00', '2009/9/15 7:00', '2009/9/15 8:00', '2009/9/15 9:00', '2009/9/15 10:00', '2009/9/15 11:00', '2009/9/15 12:00', '2009/9/15 13:00', '2009/9/15 14:00', '2009/9/15 15:00', '2009/9/15 16:00', '2009/9/15 17:00', '2009/9/15 18:00', '2009/9/15 19:00', '2009/9/15 20:00', '2009/9/15 21:00', '2009/9/15 22:00', '2009/9/15 23:00', '2009/9/16 0:00', '2009/9/16 1:00', '2009/9/16 2:00', '2009/9/16 3:00', '2009/9/16 4:00', '2009/9/16 5:00', '2009/9/16 6:00', '2009/9/16 7:00', '2009/9/16 8:00', '2009/9/16 9:00', '2009/9/16 10:00', '2009/9/16 11:00', '2009/9/16 12:00', '2009/9/16 13:00', '2009/9/16 14:00', '2009/9/16 15:00', '2009/9/16 16:00', '2009/9/16 17:00', '2009/9/16 18:00', '2009/9/16 19:00', '2009/9/16 20:00', '2009/9/16 21:00', '2009/9/16 22:00', '2009/9/16 23:00', '2009/9/17 0:00', '2009/9/17 1:00', '2009/9/17 2:00', '2009/9/17 3:00', '2009/9/17 4:00', '2009/9/17 5:00', '2009/9/17 6:00', '2009/9/17 7:00', '2009/9/17 8:00', '2009/9/17 9:00', '2009/9/17 10:00', '2009/9/17 11:00', '2009/9/17 12:00', '2009/9/17 13:00', '2009/9/17 14:00', '2009/9/17 15:00', '2009/9/17 16:00', '2009/9/17 17:00', '2009/9/17 18:00', '2009/9/17 19:00', '2009/9/17 20:00', '2009/9/17 21:00', '2009/9/17 22:00', '2009/9/17 23:00', '2009/9/18 0:00', '2009/9/18 1:00', '2009/9/18 2:00', '2009/9/18 3:00', '2009/9/18 4:00', '2009/9/18 5:00', '2009/9/18 6:00', '2009/9/18 7:00', '2009/9/18 8:00', '2009/9/18 9:00', '2009/9/18 10:00', '2009/9/18 11:00', '2009/9/18 12:00', '2009/9/18 13:00', '2009/9/18 14:00', '2009/9/18 15:00', '2009/9/18 16:00', '2009/9/18 17:00', '2009/9/18 18:00', '2009/9/18 19:00', '2009/9/18 20:00', '2009/9/18 21:00', '2009/9/18 22:00', '2009/9/18 23:00', '2009/9/19 0:00', '2009/9/19 1:00', '2009/9/19 2:00', '2009/9/19 3:00', '2009/9/19 4:00', '2009/9/19 5:00', '2009/9/19 6:00', '2009/9/19 7:00', '2009/9/19 8:00', '2009/9/19 9:00', '2009/9/19 10:00', '2009/9/19 11:00', '2009/9/19 12:00', '2009/9/19 13:00', '2009/9/19 14:00', '2009/9/19 15:00', '2009/9/19 16:00', '2009/9/19 17:00', '2009/9/19 18:00', '2009/9/19 19:00', '2009/9/19 20:00', '2009/9/19 21:00', '2009/9/19 22:00', '2009/9/19 23:00', '2009/9/20 0:00', '2009/9/20 1:00', '2009/9/20 2:00', '2009/9/20 3:00', '2009/9/20 4:00', '2009/9/20 5:00', '2009/9/20 6:00', '2009/9/20 7:00', '2009/9/20 8:00', '2009/9/20 9:00', '2009/9/20 10:00', '2009/9/20 11:00', '2009/9/20 12:00', '2009/9/20 13:00', '2009/9/20 14:00', '2009/9/20 15:00', '2009/9/20 16:00', '2009/9/20 17:00', '2009/9/20 18:00', '2009/9/20 19:00', '2009/9/20 20:00', '2009/9/20 21:00', '2009/9/20 22:00', '2009/9/20 23:00', '2009/9/21 0:00', '2009/9/21 1:00', '2009/9/21 2:00', '2009/9/21 3:00', '2009/9/21 4:00', '2009/9/21 5:00', '2009/9/21 6:00', '2009/9/21 7:00', '2009/9/21 8:00', '2009/9/21 9:00', '2009/9/21 10:00', '2009/9/21 11:00', '2009/9/21 12:00', '2009/9/21 13:00', '2009/9/21 14:00', '2009/9/21 15:00', '2009/9/21 16:00', '2009/9/21 17:00', '2009/9/21 18:00', '2009/9/21 19:00', '2009/9/21 20:00', '2009/9/21 21:00', '2009/9/21 22:00', '2009/9/21 23:00', '2009/9/22 0:00', '2009/9/22 1:00', '2009/9/22 2:00', '2009/9/22 3:00', '2009/9/22 4:00', '2009/9/22 5:00', '2009/9/22 6:00', '2009/9/22 7:00', '2009/9/22 8:00', '2009/9/22 9:00', '2009/9/22 10:00', '2009/9/22 11:00', '2009/9/22 12:00', '2009/9/22 13:00', '2009/9/22 14:00', '2009/9/22 15:00', '2009/9/22 16:00', '2009/9/22 17:00', '2009/9/22 18:00', '2009/9/22 19:00', '2009/9/22 20:00', '2009/9/22 21:00', '2009/9/22 22:00', '2009/9/22 23:00', '2009/9/23 0:00', '2009/9/23 1:00', '2009/9/23 2:00', '2009/9/23 3:00', '2009/9/23 4:00', '2009/9/23 5:00', '2009/9/23 6:00', '2009/9/23 7:00', '2009/9/23 8:00', '2009/9/23 9:00', '2009/9/23 10:00', '2009/9/23 11:00', '2009/9/23 12:00', '2009/9/23 13:00', '2009/9/23 14:00', '2009/9/23 15:00', '2009/9/23 16:00', '2009/9/23 17:00', '2009/9/23 18:00', '2009/9/23 19:00', '2009/9/23 20:00', '2009/9/23 21:00', '2009/9/23 22:00', '2009/9/23 23:00', '2009/9/24 0:00', '2009/9/24 1:00', '2009/9/24 2:00', '2009/9/24 3:00', '2009/9/24 4:00', '2009/9/24 5:00', '2009/9/24 6:00', '2009/9/24 7:00', '2009/9/24 8:00', '2009/9/24 9:00', '2009/9/24 10:00', '2009/9/24 11:00', '2009/9/24 12:00', '2009/9/24 13:00', '2009/9/24 14:00', '2009/9/24 15:00', '2009/9/24 16:00', '2009/9/24 17:00', '2009/9/24 18:00', '2009/9/24 19:00', '2009/9/24 20:00', '2009/9/24 21:00', '2009/9/24 22:00', '2009/9/24 23:00', '2009/9/25 0:00', '2009/9/25 1:00', '2009/9/25 2:00', '2009/9/25 3:00', '2009/9/25 4:00', '2009/9/25 5:00', '2009/9/25 6:00', '2009/9/25 7:00', '2009/9/25 8:00', '2009/9/25 9:00', '2009/9/25 10:00', '2009/9/25 11:00', '2009/9/25 12:00', '2009/9/25 13:00', '2009/9/25 14:00', '2009/9/25 15:00', '2009/9/25 16:00', '2009/9/25 17:00', '2009/9/25 18:00', '2009/9/25 19:00', '2009/9/25 20:00', '2009/9/25 21:00', '2009/9/25 22:00', '2009/9/25 23:00', '2009/9/26 0:00', '2009/9/26 1:00', '2009/9/26 2:00', '2009/9/26 3:00', '2009/9/26 4:00', '2009/9/26 5:00', '2009/9/26 6:00', '2009/9/26 7:00', '2009/9/26 8:00', '2009/9/26 9:00', '2009/9/26 10:00', '2009/9/26 11:00', '2009/9/26 12:00', '2009/9/26 13:00', '2009/9/26 14:00', '2009/9/26 15:00', '2009/9/26 16:00', '2009/9/26 17:00', '2009/9/26 18:00', '2009/9/26 19:00', '2009/9/26 20:00', '2009/9/26 21:00', '2009/9/26 22:00', '2009/9/26 23:00', '2009/9/27 0:00', '2009/9/27 1:00', '2009/9/27 2:00', '2009/9/27 3:00', '2009/9/27 4:00', '2009/9/27 5:00', '2009/9/27 6:00', '2009/9/27 7:00', '2009/9/27 8:00', '2009/9/27 9:00', '2009/9/27 10:00', '2009/9/27 11:00', '2009/9/27 12:00', '2009/9/27 13:00', '2009/9/27 14:00', '2009/9/27 15:00', '2009/9/27 16:00', '2009/9/27 17:00', '2009/9/27 18:00', '2009/9/27 19:00', '2009/9/27 20:00', '2009/9/27 21:00', '2009/9/27 22:00', '2009/9/27 23:00', '2009/9/28 0:00', '2009/9/28 1:00', '2009/9/28 2:00', '2009/9/28 3:00', '2009/9/28 4:00', '2009/9/28 5:00', '2009/9/28 6:00', '2009/9/28 7:00', '2009/9/28 8:00', '2009/9/28 9:00', '2009/9/28 10:00', '2009/9/28 11:00', '2009/9/28 12:00', '2009/9/28 13:00', '2009/9/28 14:00', '2009/9/28 15:00', '2009/9/28 16:00', '2009/9/28 17:00', '2009/9/28 18:00', '2009/9/28 19:00', '2009/9/28 20:00', '2009/9/28 21:00', '2009/9/28 22:00', '2009/9/28 23:00', '2009/9/29 0:00', '2009/9/29 1:00', '2009/9/29 2:00', '2009/9/29 3:00', '2009/9/29 4:00', '2009/9/29 5:00', '2009/9/29 6:00', '2009/9/29 7:00', '2009/9/29 8:00', '2009/9/29 9:00', '2009/9/29 10:00', '2009/9/29 11:00', '2009/9/29 12:00', '2009/9/29 13:00', '2009/9/29 14:00', '2009/9/29 15:00', '2009/9/29 16:00', '2009/9/29 17:00', '2009/9/29 18:00', '2009/9/29 19:00', '2009/9/29 20:00', '2009/9/29 21:00', '2009/9/29 22:00', '2009/9/29 23:00', '2009/9/30 0:00', '2009/9/30 1:00', '2009/9/30 2:00', '2009/9/30 3:00', '2009/9/30 4:00', '2009/9/30 5:00', '2009/9/30 6:00', '2009/9/30 7:00', '2009/9/30 8:00', '2009/9/30 9:00', '2009/9/30 10:00', '2009/9/30 11:00', '2009/9/30 12:00', '2009/9/30 13:00', '2009/9/30 14:00', '2009/9/30 15:00', '2009/9/30 16:00', '2009/9/30 17:00', '2009/9/30 18:00', '2009/9/30 19:00', '2009/9/30 20:00', '2009/9/30 21:00', '2009/9/30 22:00', '2009/9/30 23:00', + '2009/10/1 0:00', '2009/10/1 1:00', '2009/10/1 2:00', '2009/10/1 3:00', '2009/10/1 4:00', '2009/10/1 5:00', '2009/10/1 6:00', '2009/10/1 7:00', '2009/10/1 8:00', '2009/10/1 9:00', '2009/10/1 10:00', '2009/10/1 11:00', '2009/10/1 12:00', '2009/10/1 13:00', '2009/10/1 14:00', '2009/10/1 15:00', '2009/10/1 16:00', '2009/10/1 17:00', '2009/10/1 18:00', '2009/10/1 19:00', '2009/10/1 20:00', '2009/10/1 21:00', '2009/10/1 22:00', '2009/10/1 23:00', '2009/10/2 0:00', '2009/10/2 1:00', '2009/10/2 2:00', '2009/10/2 3:00', '2009/10/2 4:00', '2009/10/2 5:00', '2009/10/2 6:00', '2009/10/2 7:00', '2009/10/2 8:00', '2009/10/2 9:00', '2009/10/2 10:00', '2009/10/2 11:00', '2009/10/2 12:00', '2009/10/2 13:00', '2009/10/2 14:00', '2009/10/2 15:00', '2009/10/2 16:00', '2009/10/2 17:00', '2009/10/2 18:00', '2009/10/2 19:00', '2009/10/2 20:00', '2009/10/2 21:00', '2009/10/2 22:00', '2009/10/2 23:00', '2009/10/3 0:00', '2009/10/3 1:00', '2009/10/3 2:00', '2009/10/3 3:00', '2009/10/3 4:00', '2009/10/3 5:00', '2009/10/3 6:00', '2009/10/3 7:00', '2009/10/3 8:00', '2009/10/3 9:00', '2009/10/3 10:00', '2009/10/3 11:00', '2009/10/3 12:00', '2009/10/3 13:00', '2009/10/3 14:00', '2009/10/3 15:00', '2009/10/3 16:00', '2009/10/3 17:00', '2009/10/3 18:00', '2009/10/3 19:00', '2009/10/3 20:00', '2009/10/3 21:00', '2009/10/3 22:00', '2009/10/3 23:00', '2009/10/4 0:00', '2009/10/4 1:00', '2009/10/4 2:00', '2009/10/4 3:00', '2009/10/4 4:00', '2009/10/4 5:00', '2009/10/4 6:00', '2009/10/4 7:00', '2009/10/4 8:00', '2009/10/4 9:00', '2009/10/4 10:00', '2009/10/4 11:00', '2009/10/4 12:00', '2009/10/4 13:00', '2009/10/4 14:00', '2009/10/4 15:00', '2009/10/4 16:00', '2009/10/4 17:00', '2009/10/4 18:00', '2009/10/4 19:00', '2009/10/4 20:00', '2009/10/4 21:00', '2009/10/4 22:00', '2009/10/4 23:00', '2009/10/5 0:00', '2009/10/5 1:00', '2009/10/5 2:00', '2009/10/5 3:00', '2009/10/5 4:00', '2009/10/5 5:00', '2009/10/5 6:00', '2009/10/5 7:00', '2009/10/5 8:00', '2009/10/5 9:00', '2009/10/5 10:00', '2009/10/5 11:00', '2009/10/5 12:00', '2009/10/5 13:00', '2009/10/5 14:00', '2009/10/5 15:00', '2009/10/5 16:00', '2009/10/5 17:00', '2009/10/5 18:00', '2009/10/5 19:00', '2009/10/5 20:00', '2009/10/5 21:00', '2009/10/5 22:00', '2009/10/5 23:00', '2009/10/6 0:00', '2009/10/6 1:00', '2009/10/6 2:00', '2009/10/6 3:00', '2009/10/6 4:00', '2009/10/6 5:00', '2009/10/6 6:00', '2009/10/6 7:00', '2009/10/6 8:00', '2009/10/6 9:00', '2009/10/6 10:00', '2009/10/6 11:00', '2009/10/6 12:00', '2009/10/6 13:00', '2009/10/6 14:00', '2009/10/6 15:00', '2009/10/6 16:00', '2009/10/6 17:00', '2009/10/6 18:00', '2009/10/6 19:00', '2009/10/6 20:00', '2009/10/6 21:00', '2009/10/6 22:00', '2009/10/6 23:00', '2009/10/7 0:00', '2009/10/7 1:00', '2009/10/7 2:00', '2009/10/7 3:00', '2009/10/7 4:00', '2009/10/7 5:00', '2009/10/7 6:00', '2009/10/7 7:00', '2009/10/7 8:00', '2009/10/7 9:00', '2009/10/7 10:00', '2009/10/7 11:00', '2009/10/7 12:00', '2009/10/7 13:00', '2009/10/7 14:00', '2009/10/7 15:00', '2009/10/7 16:00', '2009/10/7 17:00', '2009/10/7 18:00', '2009/10/7 19:00', '2009/10/7 20:00', '2009/10/7 21:00', '2009/10/7 22:00', '2009/10/7 23:00', '2009/10/8 0:00', '2009/10/8 1:00', '2009/10/8 2:00', '2009/10/8 3:00', '2009/10/8 4:00', '2009/10/8 5:00', '2009/10/8 6:00', '2009/10/8 7:00', '2009/10/8 8:00', '2009/10/8 9:00', '2009/10/8 10:00', '2009/10/8 11:00', '2009/10/8 12:00', '2009/10/8 13:00', '2009/10/8 14:00', '2009/10/8 15:00', '2009/10/8 16:00', '2009/10/8 17:00', '2009/10/8 18:00', '2009/10/8 19:00', '2009/10/8 20:00', '2009/10/8 21:00', '2009/10/8 22:00', '2009/10/8 23:00', '2009/10/9 0:00', '2009/10/9 1:00', '2009/10/9 2:00', '2009/10/9 3:00', '2009/10/9 4:00', '2009/10/9 5:00', '2009/10/9 6:00', '2009/10/9 7:00', '2009/10/9 8:00', '2009/10/9 9:00', '2009/10/9 10:00', '2009/10/9 11:00', '2009/10/9 12:00', '2009/10/9 13:00', '2009/10/9 14:00', '2009/10/9 15:00', '2009/10/9 16:00', '2009/10/9 17:00', '2009/10/9 18:00', '2009/10/9 19:00', '2009/10/9 20:00', '2009/10/9 21:00', '2009/10/9 22:00', '2009/10/9 23:00', '2009/10/10 0:00', '2009/10/10 1:00', '2009/10/10 2:00', '2009/10/10 3:00', '2009/10/10 4:00', '2009/10/10 5:00', '2009/10/10 6:00', '2009/10/10 7:00', '2009/10/10 8:00', '2009/10/10 9:00', '2009/10/10 10:00', '2009/10/10 11:00', '2009/10/10 12:00', '2009/10/10 13:00', '2009/10/10 14:00', '2009/10/10 15:00', '2009/10/10 16:00', '2009/10/10 17:00', '2009/10/10 18:00', '2009/10/10 19:00', '2009/10/10 20:00', '2009/10/10 21:00', '2009/10/10 22:00', '2009/10/10 23:00', '2009/10/11 0:00', '2009/10/11 1:00', '2009/10/11 2:00', '2009/10/11 3:00', '2009/10/11 4:00', '2009/10/11 5:00', '2009/10/11 6:00', '2009/10/11 7:00', '2009/10/11 8:00', '2009/10/11 9:00', '2009/10/11 10:00', '2009/10/11 11:00', '2009/10/11 12:00', '2009/10/11 13:00', '2009/10/11 14:00', '2009/10/11 15:00', '2009/10/11 16:00', '2009/10/11 17:00', '2009/10/11 18:00', '2009/10/11 19:00', '2009/10/11 20:00', '2009/10/11 21:00', '2009/10/11 22:00', '2009/10/11 23:00', '2009/10/12 0:00', '2009/10/12 1:00', '2009/10/12 2:00', '2009/10/12 3:00', '2009/10/12 4:00', '2009/10/12 5:00', '2009/10/12 6:00', '2009/10/12 7:00', '2009/10/12 8:00', '2009/10/12 9:00', '2009/10/12 10:00', '2009/10/12 11:00', '2009/10/12 12:00', '2009/10/12 13:00', '2009/10/12 14:00', '2009/10/12 15:00', '2009/10/12 16:00', '2009/10/12 17:00', '2009/10/12 18:00', '2009/10/12 19:00', '2009/10/12 20:00', '2009/10/12 21:00', '2009/10/12 22:00', '2009/10/12 23:00', '2009/10/13 0:00', '2009/10/13 1:00', '2009/10/13 2:00', '2009/10/13 3:00', '2009/10/13 4:00', '2009/10/13 5:00', '2009/10/13 6:00', '2009/10/13 7:00', '2009/10/13 8:00', '2009/10/13 9:00', '2009/10/13 10:00', '2009/10/13 11:00', '2009/10/13 12:00', '2009/10/13 13:00', '2009/10/13 14:00', '2009/10/13 15:00', '2009/10/13 16:00', '2009/10/13 17:00', '2009/10/13 18:00', '2009/10/13 19:00', '2009/10/13 20:00', '2009/10/13 21:00', '2009/10/13 22:00', '2009/10/13 23:00', '2009/10/14 0:00', '2009/10/14 1:00', '2009/10/14 2:00', '2009/10/14 3:00', '2009/10/14 4:00', '2009/10/14 5:00', '2009/10/14 6:00', '2009/10/14 7:00', '2009/10/14 8:00', '2009/10/14 9:00', '2009/10/14 10:00', '2009/10/14 11:00', '2009/10/14 12:00', '2009/10/14 13:00', '2009/10/14 14:00', '2009/10/14 15:00', '2009/10/14 16:00', '2009/10/14 17:00', '2009/10/14 18:00', '2009/10/14 19:00', '2009/10/14 20:00', '2009/10/14 21:00', '2009/10/14 22:00', '2009/10/14 23:00', '2009/10/15 0:00', '2009/10/15 1:00', '2009/10/15 2:00', '2009/10/15 3:00', '2009/10/15 4:00', '2009/10/15 5:00', '2009/10/15 6:00', '2009/10/15 7:00', '2009/10/15 8:00', '2009/10/15 9:00', '2009/10/15 10:00', '2009/10/15 11:00', '2009/10/15 12:00', '2009/10/15 13:00', '2009/10/15 14:00', '2009/10/15 15:00', '2009/10/15 16:00', '2009/10/15 17:00', '2009/10/15 18:00', '2009/10/15 19:00', '2009/10/15 20:00', '2009/10/15 21:00', '2009/10/15 22:00', '2009/10/15 23:00', '2009/10/16 0:00', '2009/10/16 1:00', '2009/10/16 2:00', '2009/10/16 3:00', '2009/10/16 4:00', '2009/10/16 5:00', '2009/10/16 6:00', '2009/10/16 7:00', '2009/10/16 8:00', '2009/10/16 9:00', '2009/10/16 10:00', '2009/10/16 11:00', '2009/10/16 12:00', '2009/10/16 13:00', '2009/10/16 14:00', '2009/10/16 15:00', '2009/10/16 16:00', '2009/10/16 17:00', '2009/10/16 18:00', '2009/10/16 19:00', '2009/10/16 20:00', '2009/10/16 21:00', '2009/10/16 22:00', '2009/10/16 23:00', '2009/10/17 0:00', '2009/10/17 1:00', '2009/10/17 2:00', '2009/10/17 3:00', '2009/10/17 4:00', '2009/10/17 5:00', '2009/10/17 6:00', '2009/10/17 7:00', '2009/10/17 8:00', '2009/10/17 9:00', '2009/10/17 10:00', '2009/10/17 11:00', '2009/10/17 12:00', '2009/10/17 13:00', '2009/10/17 14:00', '2009/10/17 15:00', '2009/10/17 16:00', '2009/10/17 17:00', '2009/10/17 18:00', '2009/10/17 19:00', '2009/10/17 20:00', '2009/10/17 21:00', '2009/10/17 22:00', '2009/10/17 23:00', '2009/10/18 0:00', '2009/10/18 1:00', '2009/10/18 2:00', '2009/10/18 3:00', '2009/10/18 4:00', '2009/10/18 5:00', '2009/10/18 6:00', '2009/10/18 7:00', '2009/10/18 8:00' + ] + } + ], + yAxis : [ + { + name : '流量(m^3/s)', + type : 'value', + max : 500 + }, + { + name : '降雨量(mm)', + type : 'value', + axisLabel : { + formatter: function(v){ + return - v; + } + } + } + ], + series : [ + { + name:'流量', + type:'line', + itemStyle: {normal: {areaStyle: {type: 'default'}}}, + data:[ + 0.97,0.96,0.96,0.95,0.95,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.93,0.92,0.91,0.9,0.89,0.88,0.87,0.87,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.87,0.88,0.9,0.93,0.96,0.99,1.03,1.06,1.1,1.14,1.17,1.2,1.23,1.26,1.29,1.33,1.36,1.4,1.43,1.45,1.48,1.49,1.51,1.51,1.5,1.49,1.47,1.44,1.41,1.37,1.34,1.3,1.27,1.24,1.22,1.2,1.19,1.18,1.16,1.15,1.14,1.13,1.12,1.11,1.11,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.09,1.09,1.08,1.07,1.06,1.05,1.04,1.03,1.03,1.02,1.01,1.01,1,0.99,0.98,0.97,0.96,0.96,0.95,0.95,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.93,0.92,0.91,0.9,0.89,0.88,0.87,0.87,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.85,0.84,0.83,0.82,0.81,0.8,0.8,0.79,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.77,0.75,0.73,0.71,0.68,0.65,0.63,0.61,0.59,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.57,0.57,0.57,0.56,0.55,0.55,0.54,0.54,0.53,0.52,0.52,0.51,0.51,0.5,0.5,0.49,0.48,0.48,0.47,0.47,0.47,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.46,0.52,0.67,0.9,1.19,1.52,1.87,2.22,2.55,2.84,3.07,3.22,3.28,3.28,3.28,3.28,3.28,3.28,3.28,3.28,3.28,3.28,3.28,3.28,3.28,3.24,3.13,2.97,2.77,2.54,2.3,2.05,1.82,1.62,1.46,1.35,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.31,1.3,1.26,1.21,1.14,1.06,0.97,0.89,0.81,0.74,0.69,0.65,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.63,0.63,0.62,0.62,0.61,0.6,0.59,0.59,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.59,0.61,0.63,0.65,0.68,0.71,0.73,0.75,0.77,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.77,0.75,0.73,0.71,0.68,0.65,0.63,0.61,0.59,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.59,0.59,0.6,0.61,0.62,0.62,0.63,0.63,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.65,0.66,0.68,0.69,0.71,0.73,0.74,0.76,0.77,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.79,0.81,0.82,0.84,0.86,0.88,0.9,0.92,0.93,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.94,0.93,0.92,0.91,0.9,0.89,0.88,0.87,0.87,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.85,0.84,0.82,0.8,0.78,0.76,0.75,0.73,0.72,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.72,0.73,0.74,0.76,0.78,0.79,0.82,0.84,0.86,0.89,0.91,0.94,0.97,1,1.02,1.05,1.08,1.11,1.14,1.17,1.19,1.22,1.25,1.27,1.29,1.31,1.33,1.35,1.36,1.38,1.39,1.39,1.4,1.4,1.4,1.39,1.37,1.35,1.32,1.29,1.26,1.22,1.18,1.14,1.1,1.05,1.01,0.97,0.93,0.89,0.85,0.82,0.78,0.76,0.74,0.72,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.72,0.73,0.74,0.75,0.77,0.78,0.8,0.82,0.84,0.87,0.89,0.92,0.94,0.97,0.99,1.02,1.05,1.08,1.1,1.13,1.16,1.18,1.21,1.23,1.26,1.28,1.3,1.32,1.34,1.35,1.37,1.38,1.39,1.4,1.41,1.41,1.42,1.42,1.43,1.43,1.43,1.44,1.44,1.44,1.44,1.45,1.45,1.45,1.46,1.46,1.46,1.47,1.47,1.48,1.48,1.49,1.5,1.51,1.54,1.62,1.73,1.88,2.05,2.24,2.45,2.67,2.89,3.11,3.31,3.51,3.69,3.86,4.03,4.18,4.33,4.48,4.62,4.76,4.89,5.02,5.16,5.29,5.43,5.57,5.71,5.86,6.02,6.18,6.36,6.54,6.73,6.93,7.15,7.38,7.62,7.88,8.16,8.46,8.77,9.11,9.46,9.84,10.24,10.67,11.12,11.6,12.3,13.66,16,38.43,82.21,146.6,218.7,226,225.23,223.08,219.78,212,199.82,184.6,168,151.65,137.21,126.31,119.94,115.52,112.06,108.92,105.44,101,94.56,86.36,77.67,69.76,63.9,60.38,57.41,54.84,52.57,50.56,48.71,46.97,45.25,43.48,41.6,39.5,37.19,34.81,32.46,30.27,28.36,26.85,25.86,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.5,25.27,24.65,23.7,22.52,21.17,19.75,18.33,16.98,15.8,14.85,14.23,14,14.02,14.08,14.17,14.29,14.44,14.61,14.8,15.01,15.23,15.47,15.71,15.95,16.19,16.43,16.67,16.89,17.1,17.29,17.46,17.61,17.73,17.82,17.88,17.9,17.63,16.88,15.75,14.33,12.71,10.98,9.23,7.56,6.05,4.81,3.92,3.47,3.28,3.1,2.93,2.76,2.61,2.46,2.32,2.19,2.07,1.96,1.85,1.75,1.66,1.58,1.51,1.44,1.39,1.34,1.29,1.26,1.23,1.22,1.2,1.2,1.2,1.2,1.2,1.2,1.21,1.21,1.21,1.21,1.22,1.22,1.22,1.23,1.23,1.23,1.24,1.24,1.25,1.25,1.25,1.26,1.26,1.27,1.27,1.27,1.28,1.28,1.28,1.29,1.29,1.29,1.29,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.29,1.29,1.29,1.29,1.28,1.28,1.28,1.27,1.27,1.26,1.25,1.25,1.24,1.23,1.23,1.22,1.21,1.2,1.16,1.06,0.95,0.83,0.74,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.69,0.68,0.68,0.68,0.68,0.68,0.68,0.67,0.67,0.67,0.67,0.67,0.67,0.67,0.66,0.66,0.66,0.66,0.66,0.66,0.66,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.65,0.66,0.68,0.69,0.71,0.73,0.74,0.76,0.77,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.78,0.8,0.86,0.95,1.08,1.25,1.46,1.7,1.97,2.28,2.63,3.01,3.42,3.87,4.35,4.86,5.4,5.98,6.59,7.92,10.49,14.04,18.31,23.04,27.98,32.87,37.45,41.46,44.64,46.74,47.5,46.86,45.16,42.77,40.04,37.33,35,32.74,30.21,27.7,25.5,23.9,23.2,23.06,22.94,22.84,22.77,22.72,22.7,22.8,23.23,23.95,24.91,26.04,27.3,28.76,30.7,33.39,37.12,42.15,48.77,65.22,252.1,257,237.32,221.19,212,208.67,206.89,205.2,202.15,189.82,172,165.3,160.49,156.8,153.44,149.62,144.6,138.27,131,123.11,114.9,106.69,98.79,91.5,85.13,80,75.53,71.03,66.65,62.54,58.85,55.73,53.31,51.75,51.2,56.53,68.25,80,91.01,102.03,109,112.37,115.29,117.68,119.48,120.61,121,119.45,115.57,110.52,105.47,101.58,100,99.97,99.94,99.92,99.9,99.88,99.86,99.85,99.84,99.83,99.82,99.81,99.81,99.8,99.8,99.8,122.15,163.65,186,182.96,175.15,164.56,153.18,143,136,131.37,126.98,122.81,118.85,115.09,111.52,108.13,104.9,101.83,98.9,96.11,93.44,90.87,88.41,86.04,83.74,81.51,79.33,77.2,75.1,73.02,70.95,68.88,66.8,64.87,63.14,61.4,59.53,57.67,56,54.6,53.36,52.2,51.05,49.85,48.5,46.87,44.92,42.74,40.42,38.04,35.69,33.46,31.44,29.72,28.38,27.51,27.2,27.2,27.2,27.2,27.2,27.2,27.2,27.2,27.2,27.2,27.2,27.2,27.2,27.14,26.97,26.7,26.35,25.95,25.49,25.02,24.53,24.04,23.58,23.16,22.8,22.46,22.11,21.75,21.39,21.03,20.69,20.36,20.05,19.78,19.54,19.35,19.2,19.09,19,18.92,18.85,18.79,18.74,18.68,18.62,18.56,18.49,18.4,18.3,18.17,18.02,17.83,17.63,17.41,17.18,16.93,16.68,16.43,16.18,15.93,15.7,15.47,15.22,14.97,14.71,14.45,14.18,13.93,13.68,13.44,13.21,13,12.8,12.62,12.46,12.31,12.16,12.03,11.89,11.76,11.62,11.48,11.33,11.17,11,10.81,10.59,10.36,10.12,9.86,9.61,9.36,9.12,8.89,8.68,8.5,8.35,8.21,8.08,7.94,7.81,7.68,7.56,7.46,7.36,7.29,7.23,7.19,7.18,7.51,8.42,9.81,11.58,13.63,15.86,18.16,20.44,22.58,24.49,26.06,27.2,28.08,28.95,29.81,30.65,31.48,32.28,33.07,33.82,34.55,35.25,35.92,36.56,37.15,37.71,38.23,38.7,39.13,39.5,39.83,40.1,40.31,40.47,40.57,40.6,40.49,40.16,39.64,38.94,38.09,37.1,36,34.79,33.51,32.17,30.79,29.39,27.99,26.6,25.25,23.96,22.75,21.63,20.63,19.76,19.04,18.49,18.14,18,17.97,17.95,17.94,17.92,17.91,17.9,17.89,17.88,17.87,17.85,17.83,17.8,17.7,17.46,17.13,16.7,16.21,15.68,15.13,14.57,14.04,13.56,13.14,12.8,12.52,12.27,12.02,11.79,11.57,11.37,11.16,10.97,10.78,10.59,10.39,10.2,10.01,9.81,9.63,9.44,9.26,9.08,8.9,8.73,8.56,8.39,8.22,8.06,7.9,7.73,7.57,7.41,7.25,7.09,6.94,6.79,6.65,6.52,6.4,6.28,6.17,6.08,5.98,5.9,5.81,5.73,5.65,5.57,5.49,5.41,5.32,5.23,5.14,5.04,4.94,4.84,4.74,4.63,4.53,4.43,4.33,4.23,4.13,4.03,3.93,3.81,3.69,3.57,3.45,3.33,3.22,3.12,3.04,2.98,2.93,2.92,2.92,2.92,2.92,2.92,2.92,2.92,2.92,2.92,2.92,2.92,2.92,2.92,2.9,2.86,2.8,2.71,2.62,2.52,2.42,2.33,2.24,2.18,2.14,2.12,2.12,2.12,2.12,2.12,2.12,2.12,2.12,2.12,2.12,2.12,2.12,2.12,2.1,2.06,2,1.91,1.82,1.71,1.61,1.5,1.4,1.32,1.25,1.2,1.16,1.13,1.1,1.06,1.03,1,0.97,0.93,0.9,0.87,0.85,0.82,0.79,0.77,0.74,0.72,0.69,0.67,0.65,0.63,0.61,0.59,0.58,0.56,0.54,0.53,0.52,0.51,0.5,0.49,0.48,0.48,0.47,0.47,0.46,0.46,0.47,0.48,0.5,0.53,0.56,0.59,0.62,0.64,0.67,0.69,0.7,0.71,0.71,0.71,0.71,0.7,0.7,0.7,0.69,0.69,0.69,0.68,0.68,0.67,0.67,0.67,0.66,0.66,0.65,0.65,0.65,0.65,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.64,0.65,0.65,0.65,0.66,0.66,0.67,0.68,0.69,0.69,0.7,0.71,0.73,0.74,0.75,0.76,0.78,0.8,0.81,0.83,0.85,0.87,0.89,0.92,0.94,0.97,0.99,1.02,1.05,1.08,1.11,1.15,1.18,1.32,1.66,2.21,2.97,3.94,5.11,6.5,8.1,9.9,11.92,14.15,16.6,22.3,22.8,24.48,30.38,35.74,42.4,57.14,94.04,112.9,123.4,130.4,130,119.4,120.7,116.8,118.1,119.4,124.8,143.5,204,294,319.2,328.4,365,350.8,347.6,347.6,325,331.6,319.2,308,308,308,308,296.8,300,281,278.4,270.6,271,253.6,233.5,219.2,207.8,205.9,204,189.6,178.8,173.4,160,154.4,146,145,140.5,130.4,126.2,116.8,112.9,106.5,101.6,98.51,82.67,67.3,80.05,76.12,72.3,71.02,69.78,67.3,67.3,68.54,57.6,71.02,66.06,59.12,57.14,55.16,55.16,52.19,52.19,51.2,48.56,44.16,43,45.92,49.44,44.16,36.48,35.74,35,32.36,37.22,32.36,32.36,32.36,33.68,32.36,31.7,35.74,29.72,32.36,30.38,29.72,28.4,28.4,28.4,27.28,25.6,25.04,23.92,22.3,21.8,21.8,21.8,22.8,21.8,25.6,22.8,22.8,17.8,16.04,16.04,16.04,16.04,16.04,16.04,16.04,16.04,16.04,16.04,15.02,14,14.03,14.11,14.25,14.45,14.72,15.06,15.46,15.95,16.51,17.15,17.87,18.69,19.59,20.59,21.69,22.88,24.18,25.59,27.1,28.73,30.48,32.34,34.33,36.44,38.69,41.06,43.57,46.22,49.01,51.95,55.04,58.27,61.66,65.21,68.92,72.8,88.09,104.9,105.7,110.3,111.6,110.3,106.5,105.7,103.3,100,97.02,98.8,91.07,83.98,88.09,81.36,78.74,77.43,77.43,73.5,74.81,72.63,68.58,66.4,68.54,69.78,67.3,64.82,61.1,59.12,56.15,53.18,50.32,49.44,44.16,36.5,42.4,37.96,37.22,33.68,36.48,35.74,35,35,37.22,37.22,39.44,32.6,34.54,36.48,35.74,34.34,33.68,33.02,31.04,29.72,29.72,29.72,26.16,25.6,29.72,18.3,22.3,21.3,21.8,21.8,20.3,20.8,25.04,25.04,25.6,25.6,25.04,25.6,25.04,25.6,23.92,25.04,21.3,21.8,22.3,21.8,20.8,16.1,20.3,18.3,13.22,19.3,19.3,18.3,14.4,13.86,13.36,12.9,12.48,12.1,11.75,11.43,11.15,10.9,10.67,10.48,10.31,10.16,10.04,9.93,9.85,9.78,9.73,9.69,9.67,9.65,9.65,12.08,8.67,11.7,11.38,10.65,9.84,9.32,9.07,8.85,8.66,8.49,8.35,8.22,8.1,7.98,7.86,7.74,7.61,7.47,7.31,7.14,6.96,6.78,6.58,6.39,6.19,5.99,5.78,5.58,5.39,5.2,5.01,4.83,4.67,4.51,4.37,4.24,4.12,4.02,3.95,3.89,3.85,3.84,4.41,5.77,7.39,8.75,9.32,9.18,9,8.94,8.88,8.83,8.78,8.73,8.68,8.64,8.6,8.56,8.53,8.5,8.47,8.45,8.42,8.4,8.39,8.37,8.36,8.35,8.35,8.34,8.34,8.67,9.65,9.62,9.53,9.4,9.21,8.98,8.7,8.4,8.06,7.69,7.3,6.89,6.47,6.03,5.59,5.14,4.7,4.26,3.83,3.42,3.02,2.65,2.3,1.98,1.7,1.45,1.25,1.09,0.99,0.94,0.92,0.91,0.89,0.87,0.85,0.84,0.82,0.81,0.79,0.78,0.77,0.75,0.74,0.73,0.72,0.71,0.7,0.69,0.68,0.67,0.66,0.65,0.64,0.64,0.63,0.63,0.62,0.62,0.61,0.61,0.61,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.61,0.61,0.61,0.61,0.61,0.61,0.62,0.62,0.62,0.62,0.63,0.63,0.63,0.63,0.63,0.64,0.64,0.64,0.64,0.64,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.64,0.63,0.62,0.6,0.59,0.57,0.55,0.54,0.53,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.51,0.51,0.51,0.5,0.5,0.49,0.48,0.47,0.47,0.46,0.45,0.45,0.44,0.43,0.42,0.42,0.41,0.41,0.41,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.41,0.42,0.43,0.44,0.46,0.48,0.5,0.53,0.55,0.58,0.61,0.64,0.67,0.7,0.73,0.77,0.8,0.83,0.87,0.9,0.93,0.96,0.99,1.02,1.05,1.08,1.1,1.12,1.14,1.16,1.17,1.18,1.19,1.2,1.2,1.2,1.19,1.17,1.15,1.12,1.09,1.06,1.02,0.98,0.94,0.9,0.86,0.82,0.78,0.74,0.7,0.66,0.63,0.6,0.57,0.55,0.53,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.51,0.51,0.5,0.5,0.49,0.49,0.48,0.47,0.47,0.47,0.46,0.46,0.45,0.45,0.45,0.44,0.44,0.44,0.43,0.43,0.43,0.42,0.42,0.42,0.41,0.41,0.41,0.41,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.41,0.42,0.42,0.42,0.42,0.42,0.42,0.42,0.42,0.42,0.43,0.43,0.43,0.43,0.43,0.43,0.44,0.44,0.44,0.44,0.44,0.44,0.45,0.45,0.45 + ] + }, + { + name:'降雨量', + type:'line', + yAxisIndex:1, + itemStyle: {normal: {areaStyle: {type: 'default'}}}, + data: (function(){ + var oriData = [ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.005,0.017,0.017,0.017,0.017,0.011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.021,0.026,0.03,0.036,0.036,0.195,0.221,0.019,0.013,0.017,0.03,0.03,0.03,0.046,0.045,0.038,0.084,0.045,0.045,0.037,0.034,0.035,0.036,0.044,0.052,0.048,0.109,0.033,0.029,0.04,0.042,0.042,0.042,0.073,0.076,0.062,0.066,0.066,0.075,0.096,0.128,0.121,0.128,0.14,0.226,0.143,0.097,0.018,0,0,0,0,0,0.018,0.047,0.054,0.054,0.054,0.036,0.185,0.009,0.038,0.061,0.077,0.091,0.126,0.69,0.182,0.349,0.231,0.146,0.128,0.167,0.1,0.075,0.071,0.071,0.117,0.01,0.002,0.002,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.005,0.026,0.038,0.038,0.038,0.076,0.086,0.109,0.213,0.276,0.288,0.297,0.642,1.799,1.236,2.138,0.921,0.497,0.685,0.828,0.41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.018,0.024,0.024,0.024,0.024,0.006,0.003,0.046,0.046,0.046,0.046,0.043,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.204,0.303,1.028,1.328,1.524,1.41,1.362,1.292,1.191,0.529,0.501,0.944,1.81,2.899,0.859,0.126,0.087,0.047,0,0,0,0,0.011,0.028,0.028,0.028,0.028,0.017,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.099,0.159,0.297,0.309,0.309,0.614,0.818,1.436,1.195,0.553,0.542,0.955,0.898,0.466,0.386,0.556,0.388,0.221,0.192,0.192,0.187,0.166,0.18,0.302,0.158,0.009,0.009,0.009,0.009,0.009,0.007,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.004,0.032,0.032,0.032,0.032,0.082,0.149,0.204,0.247,0.262,0.49,0.51,0.533,0.746,0.847,2.393,1.188,1.114,0.475,0.043,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.017,0.017,0.021,0.042,0.079,0.111,0.126,0.122,0.133,0.846,0.102,0.077,0.067,0.056,0.005,0,0,0,0,0,0,0,0,0,0,0,0,0,0.011,0.017,0.017,0.017,0.017,0.006,0,0,0,0,0,0.01,0.03,0.054,0.067,0.07,0.25,0.251,0.494,0.065,0.054,0.054,0.064,0.084,0.077,0.101,0.132,0.248,0.069,0.117,0.115,0.087,0.326,0.036,0.009,0.009,0.009,0.009,0.009,0.004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.02,0.039,0.04,0.04,0.04,0.229,0.079,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.023,0.069,0.082,0.082,0.082,0.503,0.774,0.038,0.012,0.012,0.012,0.016,0.02,0.028,0.051,0.06,0.064,0.19,0.15,0.164,0.139,0.13,0.085,0.031,0.023,0.022,0.007,0.005,0.005,0.001,0,0.02,0.048,0.048,0.053,0.056,0.036,0.008,0.008,0.004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.013,0.017,0.036,0.068,0.095,0.233,0.272,0.377,0.722,1.494,3.756,0.954,0.439,0.442,0.462,0.373,0.249,0.214,0.1,0.044,0.037,0.023,0.002,0,0,0,0,0,0,0.02,0.024,0.024,0.024,0.024,0.004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.008,0.017,0.017,0.045,0.186,0.308,0.241,0.241,0.893,4.067,4.494,5.015,3.494,2.057,1.411,0.718,0.407,0.313,0.339,1.537,1.105,0.218,0.136,0.03,0.005,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.037,0.448,1.2,1.309,1.309,1.425,1.223,0.471,0.767,0.423,0.273,0.412,0.646,0.481,0.239,0.131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.044,0.15,0.223,0.388,0.513,0.883,2.828,4.786,5.959,4.95,6.434,6.319,3.35,2.806,4.204,1.395,1.015,1.015,0.836,0.74,0.72,0.615,0.477,0.192,0.046,0.007,0.007,0.007,0.007,0.007,0.007,0.007,0.008,0.005,0.005,0.005,0.005,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.001,0.012,0.012,0.012,0.012,0.011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.002,0.012,0.028,0.028,0.028,0.138,0.092,0.082,0.082,0.096,0.719,0.155,0.042,0.047,0.129,0.021,0.021,0.014,0.009,0.029,0.067,0.088,0.095,0.095,0.138,0.091,0.032,0.025,0.025,0.003,0,0,0,0,0,0,0,0,0,0,0,0,0.002,0.045,0.228,0.297,0.325,0.339,0.581,1.244,0.796,0.517,0.227,0.053,0.006,0,0,0,0,0,0,0,0,0,0.003,0.005,0.005,0.005,0.005,0.081,0.129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.014,0.041,0.041,0.041,0.041,0.027,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.009,0.017,0.017,0.017,0.017,0.355,0.174,0.009,0.009,0.012,0.136,0.208,0.208,0.208,0.215,7.359,1.858,0.458,0.053,0.053,0.047,0.045,0.045,0.059,0.136,0.188,0.206,0.21,0.588,1.517,6.02,4.688,4.42,0.624,0.326,0.359,0.553,0.899,0.94,2.95,9.415,5.752,1.092,0.096,0.035,0.026,0.018,0.015,0.011,0.011,0.011,0,0,0,0,0,0,0,0,0,0,0,0.056,0.27,0.314,0.351,0.354,0.609,0.796,1.857,0.848,0.538,0.214,0.178,0.178,0.201,0.231,0.227,0.272,0.397,0.45,1.014,2.917,1.675,0.081,0.059,0.059,0.148,0.075,0.075,0.078,0.236,0.784,0.784,0.784,0.784,0.741,0.115,0.058,0.058,0.058,0.029,0.015,0.015,0.015,0.015,0.012,0.008,0.604,0.985,1.305,2.273,2.528,2.336,2.496,2.281,1.397,1.713,3.259,1.167,0.745,0.548,1.058,0.684,0.728,0.392,0.179,0.283,0.283,0.46,0.08,0.099,0.099,0.099,0.1,0.143,0.137,0.238,0.317,0.262,0.225,0.792,0.426,0.332,0.261,0.11,0.093,0.102,0.171,0.292,0.504,0.605,1.745,2.485,1.964,0.33,0.171,0.259,0.242,0.215,0.366,0.354,0.205,0.203,0.262,0.153,0.13,0.137,0.362,0.691,0.295,0.433,0.154,0.056,0.053,0.053,0.053,0.051,0.047,0.065,0.078,0.091,0.206,0.813,0.102,0.151,0.05,0.024,0.004,0.001,0,0,0,0.021,0.021,0.021,0.021,0.021,0.013,0.013,0.013,0.013,0.013,0.013,0.013,0.013,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.008,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.018,0.021,0.021,0.021,0.021,0.003,0,0,0,0,0,0,0,0,0,0.024,0.173,0.261,0.267,0.267,0.534,1.354,1.772,0.72,0.218,0.018,0.018,0.028,0.036,0.032,0.194,0.082,0.035,0.286,0.027,0.038,0.038,0.027,0.021,0.014,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.016,0.017,0.017,0.031,0.047,0.043,0.056,0.104,0.149,0.179,0.205,0.328,0.998,0.522,1.851,3.727,3.273,2.204,1.169,1.006,1.179,0.74,0.741,1.065,0.925,0.671,0.497,0.431,0.327,0.277,0.126,0.581,0.207,0.359,2.485,0.038,0.036,0.003,0.003,0.003,0.003,0.004,0.098,0.023,0.021,0.021,0.022,0.041,0.041,0.043,0.045,0.043,0.014,0.014,0.014,0.014,0.014,0.014,0.014,0.031,0.046,0.063,0.119,0.107,0.092,0.085,0.065,0.06,0.054,0.042,0.039,0.046,0.044,0.028,0.028,0.02,0.013,0.013,0.013,0.013,0.016,0.032,0.031,0.031,0.031,0.028,0.011,0.011,0.011,0.011,0.011,0.023,0.024,0.024,0.024,0.019,0.015,0.015,0.015,0.015,0.015,0.015,0.013,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.001,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.011,0.017,0.024,0.026,0.061,0.172,0.206,0.213,0.267,0.511,0.668,0.157,0.017,0.017,0.017,0.046,0.054,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.001,0.017,0.017,0.017,0.017,0.016,0,0,0,0,0,0,0,0,0,0.01,0.017,0.017,0.017,0.017,0.012,0.017,0.017,0.017,0.017,0.012,0,0,0,0,0,0.003,0.031,0.066,0.093,0.112,0.122,0.202,0.068,0.041,0.022,0.011,0,0,0,0,0,0,0,0,0,0,0,0.002,0.005,0.012,0.021,0.021,0.019,0.033,0.03,0.026,0.026,0.034,0.095,0.024,0.024,0.024,0.023,0.019,0.018,0.018,0.018,0.011,0.03,0.045,0.044,0.044,0.044,0.022,0.009,0.024,0.033,0.033,0.033,0.024,0.009,0,0,0,0,0,0,0.003,0.017,0.017,0.017,0.017,0.014,0,0,0,0,0,0.032,0.032,0.032,0.032,0.032,0.005,0.008,0.009,0.014,0.014,0.009,0.005,0.004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.007,0.009,0.009,0.009,0.009,0.043,0.063,0.084,0.098,0.101,0.213,0.334,0.383,0.43,0.448,0.511,0.801,0.835,1.642,1.614,1.496,1.496,1.476,1.068,0.481,0.22,0.119,0.099,0.07,0.072,0.063,0.076,0.14,0.205,0.28,0.297,0.3,0.479,0.877,1.098,1.611,1.629,1.686,1.686,1.631,1.528,1.862,1.703,1.531,2.196,0.395,0.416,0.453,0.728,0.917,0.986,1.17,2.171,3.011,2.909,3.301,1.377,0.778,0.799,0.947,1.039,0.879,0.76,1.372,1.674,1.674,1.68,1.823,1.793,1.162,0.783,0.216,0.152,0.152,0.152,0.049,0,0,0,0.117,0.127,0.127,0.127,0.127,0.127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.003,0.005,0.005,0.005,0.005,0.003,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.309,0.364,0.364,0.364,0.364,0.063,0.01,0.01,0.01,0.012,0.015,0.015,0.11,0.55,0.824,0.825,0.829,1.39,1.429,1.342,1.43,1.636,1.717,2.135,2.203,3.191,3.022,1.589,0.86,0.807,0.645,0.595,0.588,0.557,0.552,1.271,0.708,0.677,0.629,0.714,0.203,0.133,0.061,0.062,0.018,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.001,0.072,0.29,0.438,0.53,0.557,0.873,1.039,1.04,0.208,0.049,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.03,0.039,0.039,0.039,0.039,0.098,0.008,0.007,0.007,0.007,0.007,0.007,0.007,0.007,0.007,0.007,0.056,0.062,0.065,0.065,0.065,0.047,0.216,0.256,0.315,0.4,0.502,0.449,0.47,0.571,0.814,1.153,0.774,0.202,0.086,0.075,0.071,0.032,0.019,0.003,0.004,0.004,0.004,0.004,0.004,0.004,0.007,0.072,0.153,0.256,0.306,0.404,0.698,0.733,0.823,0.715,0.563,0.404,0.293,0.217,0.213,0.202,0.202,0.294,0.704,0.797,1.359,1.101,0.72,0.514,0.539,0.434,0.389,0.387,0.386,0.375,0.369,0.319,0.239,0.183,0.136,0.062,0.052,0.096,0.119,0.119,0.114,0.127,0.132,0.139,0.169,0.191,0.278,0.254,0.214,0.237,0.221,0.143,0.129,0.125,0.109,0.1,0.087,0.06,0.038,0.029,0.029,0.028,0.048,0.053,0.053,0.111,0.125,0.102,0.097,0.097,0.039,0.02,0.02,0.02,0.014,0.004,0.031,0.043,0.047,0.052,0.08,0.144,0.182,0.176,0.171,0.149,0.112,0.025,0,0,0,0,0,0,0,0.016,0.031,0.031,0.031,0.031,0.015,0,0,0,0,0,0.005,0.005,0.005,0.005,0.005,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.005,0.005,0.005,0.005,0.005,0.001,0,0,0 + ]; + var len = oriData.length; + while(len--) { + oriData[len] *= -1; + } + return oriData; + })() + } + ] + } + ] + ,elemarea = $('#LAY-index-area').children('div') + ,renderarea = function(index){ + echarea[index] = echarts.init(elemarea[index], layui.echartsTheme); + echarea[index].setOption(area[index]); + window.onresize = echarea[index].resize; + }; + if(!elemarea[0]) return; + renderarea(0); + + //对数轴 + var echlogline = [], logline = [ + { + title: { + text: "对数轴示例", + x: "center" + }, + tooltip: { + trigger: "item", + formatter: "{a}
          {b} : {c}" + }, + legend: { + x: 'left', + data: ["2的指数", "3的指数"] + }, + xAxis: [ + { + type: "category", + name: "x", + splitLine: {show: false}, + data: ["一", "二", "三", "四", "五", "六", "七", "八", "九"] + } + ], + yAxis: [ + { + type: "log", + name: "y" + } + ], + calculable: true, + series: [ + { + name: "3的指数", + type: "line", + data: [1, 3, 9, 27, 81, 247, 741, 2223, 3339] + }, + { + name: "2的指数", + type: "line", + data: [1, 2, 4, 8, 16, 32, 64, 128, 256] + } + ] + } + ] + ,elemlogline = $('#LAY-index-logline').children('div') + ,renderlogline = function(index){ + echlogline[index] = echarts.init(elemlogline[index], layui.echartsTheme); + echlogline[index].setOption(logline[index]); + window.onresize = echlogline[index].resize; + }; + if(!elemlogline[0]) return; + renderlogline(0); + }); + + + //柱状图 + layui.use(['echarts'], function(){ + var $ = layui.$ + ,echarts = layui.echarts; + + //标准柱状图 + var echnormcol = [], normcol = [ + { + title : { + text: '某地区蒸发量和降水量', + subtext: '纯属虚构' + }, + tooltip : { + trigger: 'axis' + }, + legend: { + data:['蒸发量','降水量'] + }, + calculable : true, + xAxis : [ + { + type : 'category', + data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] + } + ], + yAxis : [ + { + type : 'value' + } + ], + series : [ + { + name:'蒸发量', + type:'bar', + data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3], + markPoint : { + data : [ + {type : 'max', name: '最大值'}, + {type : 'min', name: '最小值'} + ] + }, + markLine : { + data : [{type : 'average', name: '平均值'}] + } + }, + { + name:'降水量', + type:'bar', + data:[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3], + markPoint : { + data : [ + {name : '年最高', value : 182.2, xAxis: 7, yAxis: 183, symbolSize:18}, + {name : '年最低', value : 2.3, xAxis: 11, yAxis: 3} + ] + }, + markLine : { + data : [ + {type : 'average', name : '平均值'} + ] + } + } + ] + } + ] + ,elemNormcol = $('#LAY-index-normcol').children('div') + ,renderNormcol = function(index){ + echnormcol[index] = echarts.init(elemNormcol[index], layui.echartsTheme); + echnormcol[index].setOption(normcol[index]); + window.onresize = echnormcol[index].resize; + }; + if(!elemNormcol[0]) return; + renderNormcol(0); + + //堆积柱状图 + var echheapcol = [], heapcol = [ + { + tooltip : { + trigger: 'axis', + axisPointer : { // 坐标轴指示器,坐标轴触发有效 + type : 'shadow' // 默认为直线,可选为:'line' | 'shadow' + } + }, + legend: { + data:['直接访问','邮件营销','联盟广告','视频广告','搜索引擎','百度','谷歌','必应','其他'] + }, + calculable : true, + xAxis : [ + { + type : 'category', + data : ['周一','周二','周三','周四','周五','周六','周日'] + } + ], + yAxis : [ + { + type : 'value' + } + ], + series : [ + { + name:'直接访问', + type:'bar', + data:[320, 332, 301, 334, 390, 330, 320] + }, + { + name:'邮件营销', + type:'bar', + stack: '广告', + data:[120, 132, 101, 134, 90, 230, 210] + }, + { + name:'联盟广告', + type:'bar', + stack: '广告', + data:[220, 182, 191, 234, 290, 330, 310] + }, + { + name:'视频广告', + type:'bar', + stack: '广告', + data:[150, 232, 201, 154, 190, 330, 410] + }, + { + name:'搜索引擎', + type:'bar', + data:[862, 1018, 964, 1026, 1679, 1600, 1570], + markLine : { + itemStyle:{ + normal:{ + lineStyle:{ + type: 'dashed' + } + } + }, + data : [ + [{type : 'min'}, {type : 'max'}] + ] + } + }, + { + name:'百度', + type:'bar', + barWidth : 5, + stack: '搜索引擎', + data:[620, 732, 701, 734, 1090, 1130, 1120] + }, + { + name:'谷歌', + type:'bar', + stack: '搜索引擎', + data:[120, 132, 101, 134, 290, 230, 220] + }, + { + name:'必应', + type:'bar', + stack: '搜索引擎', + data:[60, 72, 71, 74, 190, 130, 110] + }, + { + name:'其他', + type:'bar', + stack: '搜索引擎', + data:[62, 82, 91, 84, 109, 110, 120] + } + ] + } + ] + ,elemHeapcol = $('#LAY-index-heapcol').children('div') + ,renderHeapcol = function(index){ + echheapcol[index] = echarts.init(elemHeapcol[index], layui.echartsTheme); + echheapcol[index].setOption(heapcol[index]); + window.onresize = echheapcol[index].resize; + }; + if(!elemHeapcol[0]) return; + renderHeapcol(0); + + //不等距柱形图 + var echdiffcol = [], diffcol = [ + { + title : { + text: '双数值柱形图', + subtext: '纯属虚构' + }, + tooltip : { + trigger: 'axis', + axisPointer:{ + show: true, + type : 'cross', + lineStyle: { + type : 'dashed', + width : 1 + } + }, + formatter : function (params) { + return params.seriesName + ' : [ ' + params.value[0] + ', ' + params.value[1] + ' ]'; + } + }, + legend: { + data:['数据1','数据2'] + }, + calculable : true, + xAxis : [ + { + type : 'value' + } + ], + yAxis : [ + { + type : 'value', + axisLine: { + lineStyle: { + color: '#dc143c' + } + } + } + ], + series : [ + { + name:'数据1', + type:'bar', + data:[ + [1.5, 10], [5, 7], [8, 8], [12, 6], [11, 12], [16, 9], [14, 6], [17, 4], [19, 9] + ], + markPoint : { + data : [ + // 纵轴,默认 + {type : 'max', name: '最大值',symbol: 'emptyCircle', itemStyle:{normal:{color:'#dc143c',label:{position:'top'}}}}, + {type : 'min', name: '最小值',symbol: 'emptyCircle', itemStyle:{normal:{color:'#dc143c',label:{position:'bottom'}}}}, + // 横轴 + {type : 'max', name: '最大值', valueIndex: 0, symbol: 'emptyCircle', itemStyle:{normal:{color:'#1e90ff',label:{position:'right'}}}}, + {type : 'min', name: '最小值', valueIndex: 0, symbol: 'emptyCircle', itemStyle:{normal:{color:'#1e90ff',label:{position:'left'}}}} + ] + }, + markLine : { + data : [ + // 纵轴,默认 + {type : 'max', name: '最大值', itemStyle:{normal:{color:'#dc143c'}}}, + {type : 'min', name: '最小值', itemStyle:{normal:{color:'#dc143c'}}}, + {type : 'average', name : '平均值', itemStyle:{normal:{color:'#dc143c'}}}, + // 横轴 + {type : 'max', name: '最大值', valueIndex: 0, itemStyle:{normal:{color:'#1e90ff'}}}, + {type : 'min', name: '最小值', valueIndex: 0, itemStyle:{normal:{color:'#1e90ff'}}}, + {type : 'average', name : '平均值', valueIndex: 0, itemStyle:{normal:{color:'#1e90ff'}}} + ] + } + }, + { + name:'数据2', + type:'bar', + barHeight:10, + data:[ + [1, 2], [2, 3], [4, 4], [7, 5], [11, 11], [18, 15] + ] + } + ] + } + ] + ,elemDiffcol = $('#LAY-index-diffcol').children('div') + ,renderDiffcol = function(index){ + echdiffcol[index] = echarts.init(elemDiffcol[index], layui.echartsTheme); + echdiffcol[index].setOption(diffcol[index]); + window.onresize = echdiffcol[index].resize; + }; + if(!elemDiffcol[0]) return; + renderDiffcol(0); + + //彩虹柱形图 + var echcolorline = [], colorline = [ + { + title: { + x: 'center', + text: 'ECharts例子个数统计', + subtext: 'Rainbow bar example', + link: 'http://echarts.baidu.com/doc/example.html' + }, + tooltip: { + trigger: 'item' + }, + calculable: true, + grid: { + borderWidth: 0, + y: 80, + y2: 60 + }, + xAxis: [ + { + type: 'category', + show: false, + data: ['Line', 'Bar', 'Scatter', 'K', 'Pie', 'Radar', 'Chord', 'Force', 'Map', 'Gauge', 'Funnel'] + } + ], + yAxis: [ + { + type: 'value', + show: false + } + ], + series: [ + { + name: 'ECharts例子个数统计', + type: 'bar', + itemStyle: { + normal: { + color: function(params) { + // build a color map as your need. + var colorList = [ + '#C1232B','#B5C334','#FCCE10','#E87C25','#27727B', + '#FE8463','#9BCA63','#FAD860','#F3A43B','#60C0DD', + '#D7504B','#C6E579','#F4E001','#F0805A','#26C0C0' + ]; + return colorList[params.dataIndex] + }, + label: { + show: true, + position: 'top', + formatter: '{b}\n{c}' + } + } + }, + data: [12,21,10,4,12,5,6,5,25,23,7], + markPoint: { + tooltip: { + trigger: 'item', + backgroundColor: 'rgba(0,0,0,0)', + formatter: function(params){ + return ''; + } + }, + data: [ + {xAxis:0, y: 350, name:'Line', symbolSize:20}, + {xAxis:1, y: 350, name:'Bar', symbolSize:20}, + {xAxis:2, y: 350, name:'Scatter', symbolSize:20}, + {xAxis:3, y: 350, name:'K', symbolSize:20}, + {xAxis:4, y: 350, name:'Pie', symbolSize:20}, + {xAxis:5, y: 350, name:'Radar', symbolSize:20}, + {xAxis:6, y: 350, name:'Chord', symbolSize:20}, + {xAxis:7, y: 350, name:'Force', symbolSize:20}, + {xAxis:8, y: 350, name:'Map', symbolSize:20}, + {xAxis:9, y: 350, name:'Gauge', symbolSize:20}, + {xAxis:10, y: 350, name:'Funnel', symbolSize:20}, + ] + } + } + ] + } + ] + ,elemColorline = $('#LAY-index-colorline').children('div') + ,renderColorline = function(index){ + echcolorline[index] = echarts.init(elemColorline[index], layui.echartsTheme); + echcolorline[index].setOption(colorline[index]); + window.onresize = echcolorline[index].resize; + }; + if(!elemColorline[0]) return; + renderColorline(0); + + //标准条形图 + var echnormbar = [], normbar = [ + { + title : { + text: '世界人口总量', + subtext: '数据来自网络' + }, + tooltip : { + trigger: 'axis' + }, + legend: { + data:['2011年', '2012年'] + }, + calculable : true, + xAxis : [ + { + type : 'value', + boundaryGap : [0, 0.01] + } + ], + yAxis : [ + { + type : 'category', + data : ['巴西','印尼','美国','印度','中国','世界人口(万)'] + } + ], + series : [ + { + name:'2011年', + type:'bar', + data:[18203, 23489, 29034, 104970, 131744, 630230] + }, + { + name:'2012年', + type:'bar', + data:[19325, 23438, 31000, 121594, 134141, 681807] + } + ] + } + ] + ,elemNormbar = $('#LAY-index-normbar').children('div') + ,renderNormbar = function(index){ + echnormbar[index] = echarts.init(elemNormbar[index], layui.echartsTheme); + echnormbar[index].setOption(normbar[index]); + window.onresize = echnormbar[index].resize; + }; + if(!elemNormbar[0]) return; + renderNormbar(0); + + //堆积条形图 + var echheapbar = [], heapbar = [ + { + tooltip : { + trigger: 'axis', + axisPointer : { // 坐标轴指示器,坐标轴触发有效 + type : 'shadow' // 默认为直线,可选为:'line' | 'shadow' + } + }, + legend: { + data:['直接访问', '邮件营销','联盟广告','视频广告','搜索引擎'] + }, + calculable : true, + xAxis : [ + { + type : 'value' + } + ], + yAxis : [ + { + type : 'category', + data : ['周一','周二','周三','周四','周五','周六','周日'] + } + ], + series : [ + { + name:'直接访问', + type:'bar', + stack: '总量', + itemStyle : { normal: {label : {show: true, position: 'insideRight'}}}, + data:[320, 302, 301, 334, 390, 330, 320] + }, + { + name:'邮件营销', + type:'bar', + stack: '总量', + itemStyle : { normal: {label : {show: true, position: 'insideRight'}}}, + data:[120, 132, 101, 134, 90, 230, 210] + }, + { + name:'联盟广告', + type:'bar', + stack: '总量', + itemStyle : { normal: {label : {show: true, position: 'insideRight'}}}, + data:[220, 182, 191, 234, 290, 330, 310] + }, + { + name:'视频广告', + type:'bar', + stack: '总量', + itemStyle : { normal: {label : {show: true, position: 'insideRight'}}}, + data:[150, 212, 201, 154, 190, 330, 410] + }, + { + name:'搜索引擎', + type:'bar', + stack: '总量', + itemStyle : { normal: {label : {show: true, position: 'insideRight'}}}, + data:[820, 832, 901, 934, 1290, 1330, 1320] + } + ] + } + ] + ,elemheapbar = $('#LAY-index-heapbar').children('div') + ,renderheapbar = function(index){ + echheapbar[index] = echarts.init(elemheapbar[index], layui.echartsTheme); + echheapbar[index].setOption(heapbar[index]); + window.onresize = echheapbar[index].resize; + }; + if(!elemheapbar[0]) return; + renderheapbar(0); + + //旋风条形图 + var echwindline = [], labelRight = {normal: {label : {position: 'right'}}}, windline = [ + { + title: { + text: '交错正负轴标签', + subtext: 'From ExcelHome', + sublink: 'http://e.weibo.com/1341556070/AjwF2AgQm' + }, + tooltip : { + trigger: 'axis', + axisPointer : { // 坐标轴指示器,坐标轴触发有效 + type : 'shadow' // 默认为直线,可选为:'line' | 'shadow' + } + }, + grid: { + y: 80, + y2: 30 + }, + xAxis : [ + { + type : 'value', + position: 'top', + splitLine: {lineStyle:{type:'dashed'}}, + } + ], + yAxis : [ + { + type : 'category', + axisLine: {show: false}, + axisLabel: {show: false}, + axisTick: {show: false}, + splitLine: {show: false}, + data : ['ten', 'nine', 'eight', 'seven', 'six', 'five', 'four', 'three', 'two', 'one'] + } + ], + series : [ + { + name:'生活费', + type:'bar', + stack: '总量', + itemStyle : { normal: { + color: 'orange', + borderRadius: 5, + label : { + show: true, + position: 'left', + formatter: '{b}' + } + }}, + data:[ + {value:-0.07, itemStyle:labelRight}, + {value:-0.09, itemStyle:labelRight}, + 0.2, 0.44, + {value:-0.23, itemStyle:labelRight}, + 0.08, + {value:-0.17, itemStyle:labelRight}, + 0.47, + {value:-0.36, itemStyle:labelRight}, + 0.18 + ] + } + ] + } + ] + ,elemwindline = $('#LAY-index-windline').children('div') + ,renderwindline = function(index){ + echwindline[index] = echarts.init(elemwindline[index], layui.echartsTheme); + echwindline[index].setOption(windline[index]); + window.onresize = echwindline[index].resize; + }; + if(!elemwindline[0]) return; + renderwindline(0); + }); + + + //地图 + layui.use(['echarts'], function(){ + var $ = layui.$ + ,echarts = layui.echarts; + + var echplat = [], plat = [ + { + title : { + text: '2011全国GDP(亿元)', + subtext: '数据来自国家统计局' + }, + tooltip : { + trigger: 'item' + }, + dataRange: { + orient: 'horizontal', + min: 0, + max: 55000, + text:['高','低'], // 文本,默认为数值文本 + splitNumber:0 + }, + series : [ + { + name: '2011全国GDP分布', + type: 'map', + mapType: 'china', + mapLocation: { + x: 'center' + }, + selectedMode : 'multiple', + itemStyle:{ + normal:{label:{show:true}}, + emphasis:{label:{show:true}} + }, + data:[ + {name:'西藏', value:605.83}, + {name:'青海', value:1670.44}, + {name:'宁夏', value:2102.21}, + {name:'海南', value:2522.66}, + {name:'甘肃', value:5020.37}, + {name:'贵州', value:5701.84}, + {name:'新疆', value:6610.05}, + {name:'云南', value:8893.12}, + {name:'重庆', value:10011.37}, + {name:'吉林', value:10568.83}, + {name:'山西', value:11237.55}, + {name:'天津', value:11307.28}, + {name:'江西', value:11702.82}, + {name:'广西', value:11720.87}, + {name:'陕西', value:12512.3}, + {name:'黑龙江', value:12582}, + {name:'内蒙古', value:14359.88}, + {name:'安徽', value:15300.65}, + {name:'北京', value:16251.93, selected:true}, + {name:'福建', value:17560.18}, + {name:'上海', value:19195.69, selected:true}, + {name:'湖北', value:19632.26}, + {name:'湖南', value:19669.56}, + {name:'四川', value:21026.68}, + {name:'辽宁', value:22226.7}, + {name:'河北', value:24515.76}, + {name:'河南', value:26931.03}, + {name:'浙江', value:32318.85}, + {name:'山东', value:45361.85}, + {name:'江苏', value:49110.27}, + {name:'广东', value:53210.28, selected:true} + ] + } + ] + } + ] + ,elemplat = $('#LAY-index-plat').children('div') + ,renderplat = function(index){ + echplat[index] = echarts.init(elemplat[index], layui.echartsTheme); + echplat[index].setOption(plat[index]); + window.onresize = echplat[index].resize; + }; + if(!elemplat[0]) return; + renderplat(0); + }); + + exports('senior', {}) + }); \ No newline at end of file diff --git a/public/panel/modules/set.js b/public/panel/modules/set.js index c1a2f924..2ef03ba3 100644 --- a/public/panel/modules/set.js +++ b/public/panel/modules/set.js @@ -1,152 +1,152 @@ -/** - * set - */ - -layui.define(['form', 'upload'], function(exports){ - var $ = layui.$ - ,layer = layui.layer - ,laytpl = layui.laytpl - ,setter = layui.setter - ,view = layui.view - ,admin = layui.admin - ,form = layui.form - ,upload = layui.upload; - - var $body = $('body'); - - form.render(); - - //自定义验证 - form.verify({ - nickname: function(value, item){ //value:表单的值、item:表单的DOM对象 - if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){ - return '用户名不能有特殊字符'; - } - if(/(^\_)|(\__)|(\_+$)/.test(value)){ - return '用户名首尾不能出现下划线\'_\''; - } - if(/^\d+\d+\d$/.test(value)){ - return '用户名不能全为数字'; - } - } - - //我们既支持上述函数式的方式,也支持下述数组的形式 - //数组的两个值分别代表:[正则匹配、匹配不符时的提示文字] - ,pass: [ - /^[\S]{6,12}$/ - ,'密码必须6到12位,且不能出现空格' - ] - - //确认密码 - ,repass: function(value){ - if(value !== $('#LAY_password').val()){ - return '两次密码输入不一致'; - } - } - }); - - //网站设置 - form.on('submit(set_website)', function(obj){ - layer.alert(layui.util.escape(JSON.stringify(obj.field))); - - //提交修改 - /* - admin.req({ - url: '' - ,data: obj.field - ,success: function(){ - - } - }); - */ - return false; - }); - - //邮件服务 - form.on('submit(set_system_email)', function(obj){ - layer.alert(layui.util.escape(JSON.stringify(obj.field))); - - //提交修改 - /* - admin.req({ - url: '' - ,data: obj.field - ,success: function(){ - - } - }); - */ - return false; - }); - - - //设置我的资料 - form.on('submit(setmyinfo)', function(obj){ - layer.alert(layui.util.escape(JSON.stringify(obj.field))); - - //提交修改 - /* - admin.req({ - url: '' - ,data: obj.field - ,success: function(){ - - } - }); - */ - return false; - }); - - //上传头像 - var avatarSrc = $('#LAY_avatarSrc'); - upload.render({ - url: '/api/upload/' - ,elem: '#LAY_avatarUpload' - ,done: function(res){ - if(res.status == 0){ - avatarSrc.val(res.url); - } else { - layer.msg(res.msg, {icon: 5}); - } - } - }); - - //查看头像 - admin.events.avartatPreview = function(othis){ - var src = avatarSrc.val(); - layer.photos({ - photos: { - "title": "查看头像" //相册标题 - ,"data": [{ - "src": src //原图地址 - }] - } - ,shade: 0.01 - ,closeBtn: 1 - ,anim: 5 - }); - }; - - - // 设置密码 - form.on('submit(setmypass)', function(obj){ - var field = obj.field; // 获得表单字段 - - layer.msg('ok'); - - // 提交修改 - /* - admin.req({ - url: '' - ,data: obj.field - ,success: function(){ - - } - }); - */ - return false; - }); - - // 输出接口 - exports('set', {}); +/** + * set + */ + +layui.define(['form', 'upload'], function(exports){ + var $ = layui.$ + ,layer = layui.layer + ,laytpl = layui.laytpl + ,setter = layui.setter + ,view = layui.view + ,admin = layui.admin + ,form = layui.form + ,upload = layui.upload; + + var $body = $('body'); + + form.render(); + + //自定义验证 + form.verify({ + nickname: function(value, item){ //value:表单的值、item:表单的DOM对象 + if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){ + return '用户名不能有特殊字符'; + } + if(/(^\_)|(\__)|(\_+$)/.test(value)){ + return '用户名首尾不能出现下划线\'_\''; + } + if(/^\d+\d+\d$/.test(value)){ + return '用户名不能全为数字'; + } + } + + //我们既支持上述函数式的方式,也支持下述数组的形式 + //数组的两个值分别代表:[正则匹配、匹配不符时的提示文字] + ,pass: [ + /^[\S]{6,12}$/ + ,'密码必须6到12位,且不能出现空格' + ] + + //确认密码 + ,repass: function(value){ + if(value !== $('#LAY_password').val()){ + return '两次密码输入不一致'; + } + } + }); + + //网站设置 + form.on('submit(set_website)', function(obj){ + layer.alert(layui.util.escape(JSON.stringify(obj.field))); + + //提交修改 + /* + admin.req({ + url: '' + ,data: obj.field + ,success: function(){ + + } + }); + */ + return false; + }); + + //邮件服务 + form.on('submit(set_system_email)', function(obj){ + layer.alert(layui.util.escape(JSON.stringify(obj.field))); + + //提交修改 + /* + admin.req({ + url: '' + ,data: obj.field + ,success: function(){ + + } + }); + */ + return false; + }); + + + //设置我的资料 + form.on('submit(setmyinfo)', function(obj){ + layer.alert(layui.util.escape(JSON.stringify(obj.field))); + + //提交修改 + /* + admin.req({ + url: '' + ,data: obj.field + ,success: function(){ + + } + }); + */ + return false; + }); + + //上传头像 + var avatarSrc = $('#LAY_avatarSrc'); + upload.render({ + url: '/api/upload/' + ,elem: '#LAY_avatarUpload' + ,done: function(res){ + if(res.status == 0){ + avatarSrc.val(res.url); + } else { + layer.msg(res.msg, {icon: 5}); + } + } + }); + + //查看头像 + admin.events.avartatPreview = function(othis){ + var src = avatarSrc.val(); + layer.photos({ + photos: { + "title": "查看头像" //相册标题 + ,"data": [{ + "src": src //原图地址 + }] + } + ,shade: 0.01 + ,closeBtn: 1 + ,anim: 5 + }); + }; + + + // 设置密码 + form.on('submit(setmypass)', function(obj){ + var field = obj.field; // 获得表单字段 + + layer.msg('ok'); + + // 提交修改 + /* + admin.req({ + url: '' + ,data: obj.field + ,success: function(){ + + } + }); + */ + return false; + }); + + // 输出接口 + exports('set', {}); }); \ No newline at end of file diff --git a/public/panel/modules/user.js b/public/panel/modules/user.js index 6f038a6c..0d8aa2a9 100644 --- a/public/panel/modules/user.js +++ b/public/panel/modules/user.js @@ -1,47 +1,47 @@ -/** - * user demo - */ - -layui.define('form', function(exports){ - var $ = layui.$ - ,layer = layui.layer - ,laytpl = layui.laytpl - ,setter = layui.setter - ,view = layui.view - ,admin = layui.admin - ,form = layui.form; - - var $body = $('body'); - - //自定义验证 - form.verify({ - nickname: function(value, item){ //value:表单的值、item:表单的DOM对象 - if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){ - return '用户名不能有特殊字符'; - } - if(/(^\_)|(\__)|(\_+$)/.test(value)){ - return '用户名首尾不能出现下划线\'_\''; - } - if(/^\d+\d+\d$/.test(value)){ - return '用户名不能全为数字'; - } - } - - //我们既支持上述函数式的方式,也支持下述数组的形式 - //数组的两个值分别代表:[正则匹配、匹配不符时的提示文字] - ,pass: [ - /^[\S]{6,12}$/ - ,'密码必须6到12位,且不能出现空格' - ] - }); - - - //更换图形验证码 - $body.on('click', '#LAY-user-get-vercode', function(){ - var othis = $(this); - this.src = 'https://www.oschina.net/action/user/captcha?t='+ new Date().getTime() - }); - - //对外暴露的接口 - exports('user', {}); +/** + * user demo + */ + +layui.define('form', function(exports){ + var $ = layui.$ + ,layer = layui.layer + ,laytpl = layui.laytpl + ,setter = layui.setter + ,view = layui.view + ,admin = layui.admin + ,form = layui.form; + + var $body = $('body'); + + //自定义验证 + form.verify({ + nickname: function(value, item){ //value:表单的值、item:表单的DOM对象 + if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){ + return '用户名不能有特殊字符'; + } + if(/(^\_)|(\__)|(\_+$)/.test(value)){ + return '用户名首尾不能出现下划线\'_\''; + } + if(/^\d+\d+\d$/.test(value)){ + return '用户名不能全为数字'; + } + } + + //我们既支持上述函数式的方式,也支持下述数组的形式 + //数组的两个值分别代表:[正则匹配、匹配不符时的提示文字] + ,pass: [ + /^[\S]{6,12}$/ + ,'密码必须6到12位,且不能出现空格' + ] + }); + + + //更换图形验证码 + $body.on('click', '#LAY-user-get-vercode', function(){ + var othis = $(this); + this.src = 'https://www.oschina.net/action/user/captcha?t='+ new Date().getTime() + }); + + //对外暴露的接口 + exports('user', {}); }); \ No newline at end of file diff --git a/public/panel/modules/useradmin.js b/public/panel/modules/useradmin.js index 040a9ccd..96c29ba0 100644 --- a/public/panel/modules/useradmin.js +++ b/public/panel/modules/useradmin.js @@ -1,179 +1,179 @@ -/** - * useradmin demo - */ - - -layui.define(['table', 'form'], function(exports){ - var $ = layui.$ - ,admin = layui.admin - ,view = layui.view - ,table = layui.table - ,form = layui.form; - - //用户管理 - table.render({ - elem: '#LAY-user-manage' - ,url: './res/json/useradmin/webuser.js' //模拟接口 - ,cols: [[ - {type: 'checkbox', fixed: 'left'} - ,{field: 'id', width: 100, title: 'ID', sort: true} - ,{field: 'username', title: '用户名', minWidth: 100} - ,{field: 'avatar', title: '头像', width: 100, templet: '#imgTpl'} - ,{field: 'phone', title: '手机'} - ,{field: 'email', title: '邮箱'} - ,{field: 'sex', width: 80, title: '性别'} - ,{field: 'ip', title: 'IP'} - ,{field: 'jointime', title: '加入时间', sort: true} - ,{title: '操作', width: 150, align:'center', fixed: 'right', toolbar: '#table-useradmin-webuser'} - ]] - ,page: true - ,limit: 30 - ,height: 'full-320' - ,text: '对不起,加载出现异常!' - }); - - //工具条 - table.on('tool(LAY-user-manage)', function(obj){ - var data = obj.data; - if(obj.event === 'del'){ - layer.prompt({ - formType: 1 - ,title: '敏感操作,请验证口令' - }, function(value, index){ - layer.close(index); - - layer.confirm('真的删除行么', function(index){ - obj.del(); - layer.close(index); - }); - }); - } else if(obj.event === 'edit'){ - admin.popup({ - title: '编辑用户' - ,area: ['500px', '450px'] - ,id: 'LAY-popup-user-add' - ,success: function(layero, index){ - view(this.id).render('user/user/userform', data).done(function(){ - form.render(null, 'layuiadmin-form-useradmin'); - - //提交 - form.on('submit(LAY-user-front-submit)', function(data){ - var field = data.field; //获取提交的字段 - - //提交 Ajax 成功后,关闭当前弹层并重载表格 - //$.ajax({}); - layui.table.reload('LAY-user-manage'); //重载表格 - layer.close(index); //执行关闭 - }); - }); - } - }); - } - }); - - //管理员管理 - table.render({ - elem: '#LAY-user-back-manage' - ,url: './res/json/useradmin/mangadmin.js' //模拟接口 - ,cols: [[ - {type: 'checkbox', fixed: 'left'} - ,{field: 'id', width: 80, title: 'ID', sort: true} - ,{field: 'loginname', title: '登录名'} - ,{field: 'telphone', title: '手机'} - ,{field: 'email', title: '邮箱'} - ,{field: 'role', title: '角色'} - ,{field: 'jointime', title: '加入时间', sort: true} - ,{field: 'check', title:'审核状态', templet: '#buttonTpl', minWidth: 80, align: 'center'} - ,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-useradmin-admin'} - ]] - ,text: '对不起,加载出现异常!' - }); - - //工具条 - table.on('tool(LAY-user-back-manage)', function(obj){ - var data = obj.data; - if(obj.event === 'del'){ - layer.prompt({ - formType: 1 - ,title: '敏感操作,请验证口令' - }, function(value, index){ - layer.close(index); - layer.confirm('确定删除此管理员?', function(index){ - console.log(obj) - obj.del(); - layer.close(index); - }); - }); - }else if(obj.event === 'edit'){ - admin.popup({ - title: '编辑管理员' - ,area: ['420px', '450px'] - ,id: 'LAY-popup-user-add' - ,success: function(layero, index){ - view(this.id).render('user/administrators/adminform', data).done(function(){ - form.render(null, 'layuiadmin-form-admin'); - - //提交 - form.on('submit(LAY-user-back-submit)', function(data){ - var field = data.field; //获取提交的字段 - - //提交 Ajax 成功后,关闭当前弹层并重载表格 - //$.ajax({}); - layui.table.reload('LAY-user-back-manage'); //重载表格 - layer.close(index); //执行关闭 - }); - }); - } - }); - } - }); - - //角色管理 - table.render({ - elem: '#LAY-user-back-role' - ,url: './res/json/useradmin/role.js' //模拟接口 - ,cols: [[ - {type: 'checkbox', fixed: 'left'} - ,{field: 'id', width: 80, title: 'ID', sort: true} - ,{field: 'rolename', title: '角色名'} - ,{field: 'limits', title: '拥有权限'} - ,{field: 'descr', title: '具体描述'} - ,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-useradmin-admin'} - ]] - ,text: '对不起,加载出现异常!' - }); - - //工具条 - table.on('tool(LAY-user-back-role)', function(obj){ - var data = obj.data; - if(obj.event === 'del'){ - layer.confirm('确定删除此角色?', function(index){ - obj.del(); - layer.close(index); - }); - }else if(obj.event === 'edit'){ - admin.popup({ - title: '添加新角色' - ,area: ['500px', '480px'] - ,id: 'LAY-popup-user-add' - ,success: function(layero, index){ - view(this.id).render('user/administrators/roleform', data).done(function(){ - form.render(null, 'layuiadmin-form-role'); - - //提交 - form.on('submit(LAY-user-role-submit)', function(data){ - var field = data.field; //获取提交的字段 - - //提交 Ajax 成功后,关闭当前弹层并重载表格 - //$.ajax({}); - layui.table.reload('LAY-user-back-role'); //重载表格 - layer.close(index); //执行关闭 - }); - }); - } - }); - } - }); - - exports('useradmin', {}) +/** + * useradmin demo + */ + + +layui.define(['table', 'form'], function(exports){ + var $ = layui.$ + ,admin = layui.admin + ,view = layui.view + ,table = layui.table + ,form = layui.form; + + //用户管理 + table.render({ + elem: '#LAY-user-manage' + ,url: './res/json/useradmin/webuser.js' //模拟接口 + ,cols: [[ + {type: 'checkbox', fixed: 'left'} + ,{field: 'id', width: 100, title: 'ID', sort: true} + ,{field: 'username', title: '用户名', minWidth: 100} + ,{field: 'avatar', title: '头像', width: 100, templet: '#imgTpl'} + ,{field: 'phone', title: '手机'} + ,{field: 'email', title: '邮箱'} + ,{field: 'sex', width: 80, title: '性别'} + ,{field: 'ip', title: 'IP'} + ,{field: 'jointime', title: '加入时间', sort: true} + ,{title: '操作', width: 150, align:'center', fixed: 'right', toolbar: '#table-useradmin-webuser'} + ]] + ,page: true + ,limit: 30 + ,height: 'full-320' + ,text: '对不起,加载出现异常!' + }); + + //工具条 + table.on('tool(LAY-user-manage)', function(obj){ + var data = obj.data; + if(obj.event === 'del'){ + layer.prompt({ + formType: 1 + ,title: '敏感操作,请验证口令' + }, function(value, index){ + layer.close(index); + + layer.confirm('真的删除行么', function(index){ + obj.del(); + layer.close(index); + }); + }); + } else if(obj.event === 'edit'){ + admin.popup({ + title: '编辑用户' + ,area: ['500px', '450px'] + ,id: 'LAY-popup-user-add' + ,success: function(layero, index){ + view(this.id).render('user/user/userform', data).done(function(){ + form.render(null, 'layuiadmin-form-useradmin'); + + //提交 + form.on('submit(LAY-user-front-submit)', function(data){ + var field = data.field; //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-user-manage'); //重载表格 + layer.close(index); //执行关闭 + }); + }); + } + }); + } + }); + + //管理员管理 + table.render({ + elem: '#LAY-user-back-manage' + ,url: './res/json/useradmin/mangadmin.js' //模拟接口 + ,cols: [[ + {type: 'checkbox', fixed: 'left'} + ,{field: 'id', width: 80, title: 'ID', sort: true} + ,{field: 'loginname', title: '登录名'} + ,{field: 'telphone', title: '手机'} + ,{field: 'email', title: '邮箱'} + ,{field: 'role', title: '角色'} + ,{field: 'jointime', title: '加入时间', sort: true} + ,{field: 'check', title:'审核状态', templet: '#buttonTpl', minWidth: 80, align: 'center'} + ,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-useradmin-admin'} + ]] + ,text: '对不起,加载出现异常!' + }); + + //工具条 + table.on('tool(LAY-user-back-manage)', function(obj){ + var data = obj.data; + if(obj.event === 'del'){ + layer.prompt({ + formType: 1 + ,title: '敏感操作,请验证口令' + }, function(value, index){ + layer.close(index); + layer.confirm('确定删除此管理员?', function(index){ + console.log(obj) + obj.del(); + layer.close(index); + }); + }); + }else if(obj.event === 'edit'){ + admin.popup({ + title: '编辑管理员' + ,area: ['420px', '450px'] + ,id: 'LAY-popup-user-add' + ,success: function(layero, index){ + view(this.id).render('user/administrators/adminform', data).done(function(){ + form.render(null, 'layuiadmin-form-admin'); + + //提交 + form.on('submit(LAY-user-back-submit)', function(data){ + var field = data.field; //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-user-back-manage'); //重载表格 + layer.close(index); //执行关闭 + }); + }); + } + }); + } + }); + + //角色管理 + table.render({ + elem: '#LAY-user-back-role' + ,url: './res/json/useradmin/role.js' //模拟接口 + ,cols: [[ + {type: 'checkbox', fixed: 'left'} + ,{field: 'id', width: 80, title: 'ID', sort: true} + ,{field: 'rolename', title: '角色名'} + ,{field: 'limits', title: '拥有权限'} + ,{field: 'descr', title: '具体描述'} + ,{title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-useradmin-admin'} + ]] + ,text: '对不起,加载出现异常!' + }); + + //工具条 + table.on('tool(LAY-user-back-role)', function(obj){ + var data = obj.data; + if(obj.event === 'del'){ + layer.confirm('确定删除此角色?', function(index){ + obj.del(); + layer.close(index); + }); + }else if(obj.event === 'edit'){ + admin.popup({ + title: '添加新角色' + ,area: ['500px', '480px'] + ,id: 'LAY-popup-user-add' + ,success: function(layero, index){ + view(this.id).render('user/administrators/roleform', data).done(function(){ + form.render(null, 'layuiadmin-form-role'); + + //提交 + form.on('submit(LAY-user-role-submit)', function(data){ + var field = data.field; //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-user-back-role'); //重载表格 + layer.close(index); //执行关闭 + }); + }); + } + }); + } + }); + + exports('useradmin', {}) }); \ No newline at end of file diff --git a/public/panel/modules/workorder.js b/public/panel/modules/workorder.js index 0bc07ea8..7675a9b7 100644 --- a/public/panel/modules/workorder.js +++ b/public/panel/modules/workorder.js @@ -1,65 +1,65 @@ -/** - * workorder demo - */ - - -layui.define(['table', 'form', 'element'], function(exports){ - var $ = layui.$ - ,admin = layui.admin - ,view = layui.view - ,table = layui.table - ,form = layui.form - ,element = layui.element; - - table.render({ - elem: '#LAY-app-workorder' - ,url: './res/json/workorder/demo.js' //模拟接口 - ,cols: [[ - {type: 'numbers', fixed: 'left'} - ,{field: 'orderid', width: 100, title: '工单号', sort: true} - ,{field: 'attr', width: 100, title: '业务性质'} - ,{field: 'title', width: 100, title: '工单标题', width: 300} - ,{field: 'progress', title: '进度', width: 200, align: 'center', templet: '#progressTpl'} - ,{field: 'submit', width: 100, title: '提交者'} - ,{field: 'accept', width: 100, title: '受理人员'} - ,{field: 'state', title: '工单状态', templet: '#buttonTpl', minWidth: 80, align: 'center'} - ,{title: '操作', align: 'center', fixed: 'right', toolbar: '#table-system-order'} - ]] - ,page: true - ,limit: 10 - ,limits: [10, 15, 20, 25, 30] - ,text: '对不起,加载出现异常!' - ,done: function(){ - element.render('progress'); - } - }); - - //工具条 - table.on('tool(LAY-app-workorder)', function(obj){ - var data = obj.data; - if(obj.event === 'edit'){ - admin.popup({ - title: '编辑工单' - ,area: ['450px', '450px'] - ,id: 'LAY-popup-workorder-add' - ,success: function(layero, index){ - view(this.id).render('app/workorder/listform').done(function(){ - form.render(null, 'layuiadmin-form-workorder'); - - //提交 - form.on('submit(LAY-app-workorder-submit)', function(data){ - var field = data.field; //获取提交的字段 - - //提交 Ajax 成功后,关闭当前弹层并重载表格 - //$.ajax({}); - layui.table.reload('LAY-app-workorder'); //重载表格 - layer.close(index); //执行关闭 - }); - }); - } - }); - } - }); - - exports('workorder', {}) +/** + * workorder demo + */ + + +layui.define(['table', 'form', 'element'], function(exports){ + var $ = layui.$ + ,admin = layui.admin + ,view = layui.view + ,table = layui.table + ,form = layui.form + ,element = layui.element; + + table.render({ + elem: '#LAY-app-workorder' + ,url: './res/json/workorder/demo.js' //模拟接口 + ,cols: [[ + {type: 'numbers', fixed: 'left'} + ,{field: 'orderid', width: 100, title: '工单号', sort: true} + ,{field: 'attr', width: 100, title: '业务性质'} + ,{field: 'title', width: 100, title: '工单标题', width: 300} + ,{field: 'progress', title: '进度', width: 200, align: 'center', templet: '#progressTpl'} + ,{field: 'submit', width: 100, title: '提交者'} + ,{field: 'accept', width: 100, title: '受理人员'} + ,{field: 'state', title: '工单状态', templet: '#buttonTpl', minWidth: 80, align: 'center'} + ,{title: '操作', align: 'center', fixed: 'right', toolbar: '#table-system-order'} + ]] + ,page: true + ,limit: 10 + ,limits: [10, 15, 20, 25, 30] + ,text: '对不起,加载出现异常!' + ,done: function(){ + element.render('progress'); + } + }); + + //工具条 + table.on('tool(LAY-app-workorder)', function(obj){ + var data = obj.data; + if(obj.event === 'edit'){ + admin.popup({ + title: '编辑工单' + ,area: ['450px', '450px'] + ,id: 'LAY-popup-workorder-add' + ,success: function(layero, index){ + view(this.id).render('app/workorder/listform').done(function(){ + form.render(null, 'layuiadmin-form-workorder'); + + //提交 + form.on('submit(LAY-app-workorder-submit)', function(data){ + var field = data.field; //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-app-workorder'); //重载表格 + layer.close(index); //执行关闭 + }); + }); + } + }); + } + }); + + exports('workorder', {}) }); \ No newline at end of file diff --git a/public/panel/style/template.css b/public/panel/style/template.css index 2bb6b5fc..490599c6 100644 --- a/public/panel/style/template.css +++ b/public/panel/style/template.css @@ -1,179 +1,179 @@ -/** - * admin.templte.css - */ - -/******************************** - - 模板开始 - -*******************************/ - - -/* 产品版本选择面板 */ -.layadmin-panel-selection{width: 768px; margin: 30px auto;} -.layadmin-panel-selection .layui-panel-window{padding: 30px 50px; border-top-color: #ddd; text-align: center;} -.layadmin-panel-selection .layui-panel-window h2{padding-bottom: 15px; font-size: 18px;} -.layadmin-panel-selection .layui-panel-window ul{margin-top: 15px; text-align: left;} -.layadmin-panel-selection .layui-btn-container{margin-top: 30px;} -.layadmin-panel-selection .layui-btn-container .layui-btn{width: 100%;} - -/* 通讯录面板 */ -.layadmin-maillist-fluid .layadmin-contact-box{padding:20px;background-color: #fff; - border: 1px solid #e7eaec;overflow: hidden;} -.layadmin-maillist-fluid .layadmin-text-center{text-align: center;} -.layadmin-maillist-fluid .layadmin-text-center img{max-width: 80%;border-radius: 50%;margin-top: 5px;} -.layadmin-maillist-fluid .layadmin-font-blod{font-weight: 600;} -.layadmin-maillist-fluid .layadmin-maillist-img{margin-top: 5px;} -.layadmin-maillist-fluid .layadmin-title{margin:5px 0 10px 0;} -.layadmin-maillist-fluid .layadmin-textimg{line-height: 25px;margin-bottom: 10px;} -.layadmin-maillist-fluid .layadmin-address{line-height: 1.5;margin-bottom: 20px;} -.layadmin-maillist-fluid .layadmin-padding-left20{padding-left: 20px;} - -/* 个人主页 */ -.layadmin-homepage-shadow{box-shadow: 0 1px 1px rgba(0,0,0,.05);background-color: #fff;border-bottom: 1px solid rgba(0,0,0,0.17);border-radius: 0;border: 1px solid #e7ecf3;} -.layadmin-homepage-panel{margin-bottom: 15px;} -.layadmin-homepage-panel .text-center{text-align: center;} -.layadmin-homepage-information{padding: 15px; border-bottom: 1px solid #e9e9e9;} -.layadmin-homepage-pad-ver{ padding-top: 15px;padding-bottom: 15px;} -.layadmin-homepage-pad-img{box-shadow: 0 0 0 4px rgba(0,0,0,0.1);border-radius: 50%;} -.layadmin-homepage-font{font-weight: 600;color: #2b425b;font-size: 1.2em;} -.layadmin-homepage-min-font{margin:5px 0 10px 0;font-size: 0.9em;color: #afb9c3;} -.layadmin-homepage-pad-ver a{line-height: 1.1em;font-size: 1.3em;vertical-align: middle; cursor: pointer;background-color: transparent;color: inherit;padding: 6px 12px;} -.layadmin-homepage-pad-ver a:hover{background: #5FB878; color:#fff;} - -.layadmin-homepage-about{padding: 15px;font-weight: 600;color: #2b425b;} -.layadmin-homepage-list-group{font-size: 0.9em;line-height: 1.25;margin-bottom: 5px;} -.layadmin-homepage-list-group li{ padding: 5px 15px;border: 1px solid #ddd;margin-bottom: -1px;border-width: 1px 0;border-radius: 0; background-color: transparent;border-color: transparent;color: inherit;} -.layadmin-homepage-list-group li i{font-size: 1.333em;line-height: 1.095em;vertical-align: middle; margin-right: 4px;} -.layadmin-homepage-list-group li a.color{color:#337ab7;} -.layadmin-homepage-pad-hor{ padding-left: 15px; padding-right: 15px;border-bottom: 15px;color: #758697; text-indent:20px;} -.layadmin-homepage-list-inline{margin-left: 15px;margin-right: 15px;padding-bottom: 20px} -.layadmin-homepage-list-inline a{display: inline-block;} -.layadmin-homepage-list-inline .layui-btn{font-size: .9em;line-height: 1.42857;vertical-align: middle;height: auto;padding:4px 7px;margin-left: 0px;margin:0 10px 10px 0;} - -/* 左侧个人信息区域 */ -.layadmin-homepage-text-center{text-align: center;margin-bottom: 15px;} -.layadmin-homepage-padding15{padding:15px;margin-bottom: 15px;} -.layadmin-homepage-padding8{padding: 0 8px;} -.layadmin-homepage-paddingmb{margin-bottom: 15px;margin: 0 -7.5px;} -.layadmin-homepage-content{margin-left: 15px;padding: 0;} -.layadmin-homepage-content .new-section-xs{margin: 12px 0;color: inherit;border: 0!important;height: 0px;box-sizing: content-box;} -.layadmin-homepage-content .h4{font-size: 16px;font-weight: 600;color: #2b425b;} -.layadmin-homepage-content small{color: #afb9c3} -.layadmin-homepage-text-center .layui-icon{color:#FFB800;padding-right:5px;} -.layadmin-homepage-padding15 .layui-col-sm5 a{font-size: 11px;height: auto;line-height: 1.5;padding:5px 10px;float: right;} -.layadmin-homepage-padding15 .layui-btn-normal{margin:0 15px;} -.layadmin-homepage-list-imgtxt .layui-col-sm10,.layadmin-homepage-list-imgtxt .layui-col-sm2{background: none} -.layadmin-homepage-list-imgtxt .panel-body{padding: 15px 20px 25px;overflow: hidden;margin-bottom: 15px;} -.layadmin-homepage-list-imgtxt .panel-body .media-left{display: block;float: left;vertical-align: top;padding-right: 10px;} -.layadmin-homepage-list-imgtxt .panel-body .media-left img{border-radius: 50%;} -.layadmin-homepage-list-imgtxt .media-body{width: auto;display: block;overflow: hidden;} -.layadmin-homepage-list-imgtxt .media-body .pad-btm{padding-bottom: 15px;} -.layadmin-homepage-list-imgtxt .media-body .pad-btm p:first-child{padding-bottom: 5px;} -.layadmin-homepage-list-imgtxt .media-body .min-font{margin-bottom: 10px;} -.layadmin-homepage-list-imgtxt .media-body .min-font .layui-breadcrumb a{font-size: 11px;} -.layui-breadcrumb span[lay-separator]{margin:0 5px;} -.layadmin-homepage-list-imgtxt .media-body .pad-btm .fontColor a{font-weight: 600;color: #337ab7;} -.layadmin-homepage-list-imgtxt .media-body .pad-btm .fontColor span{color: #758697;font-weight: 600;} -.layadmin-homepage-list-imgtxt .media-body .h-img{display: block;max-width: 100%;height: auto;margin-top: 10px;} -.layadmin-homepage-list-imgtxt .img-xs{width: 32px;height: 32px;border-radius: 50%;} -.layadmin-homepage-list-imgtxt .media-body .media{margin-top: 15px;overflow: hidden;} -.layadmin-homepage-list-imgtxt .media-body .media .media-right{float: right;padding-top: 10px;} -.layadmin-homepage-list-imgtxt .media-body .media .media-right .list-inline{margin-bottom: 10px;} -.layadmin-homepage-list-imgtxt .media-body .media .list-inline li{padding:0 5px;display: inline-block;} -.layadmin-homepage-list-imgtxt .media-body .media .media-right .list-inline li span{font-weight: 600;} -.layadmin-homepage-list-imgtxt .media-body .media .media-left{display: block;overflow: hidden;width: auto;} -.layadmin-homepage-list-imgtxt .media-body .media .media-left .font-blod{font-weight: 700;color: #758697;} -.layadmin-homepage-list-imgtxt .media-body .media-list{padding-top: 15px;margin-top: 15px;border-top: 1px solid #e9e9e9;} -.layadmin-homepage-list-imgtxt .media-body .media-list .media-item{padding-bottom: 15px;margin-top: 15px;} -.layadmin-homepage-list-imgtxt .media-body .media-list .media-item-left{display:inline-block;padding-right: 10px;margin-bottom: 5px;} -.layadmin-homepage-list-imgtxt .media-body .media-list .media-item-left img{display: block;float: left;} -.layadmin-homepage-list-imgtxt .media-body .media-list .media-text{overflow: hidden;width: auto;display: inline-block;} -.layadmin-homepage-list-imgtxt .media-body .media-list .media-text a{margin-right: 10px;font-weight: 600;display: inline-block;} -.layadmin-homepage-list-imgtxt .media-body .media-list .media-text div:nth-child(2){margin-top: 5px;} -.layadmin-homepage-list-imgtxt .media-body .media-list .layui-btn{height: 24px;line-height: 24px;font-size: 12px;padding:0 20px;margin-bottom: 10px;} -.layadmin-homepage-list-imgtxt .media-body .media-list .layui-btn{height: 24px;line-height: 24px;font-size: 12px;padding:0 20px;margin-bottom: 10px;} - -/* 个人内容区域 */ - -.homepage-top .layui-card-body img{width: 100%} -.homepage-top .layui-card-body .margin-top10{margin-top: 10px;} -.homepage-top .layui-card-body .layui-btn{width: 100%;display: block;} -.homepage-top{padding-bottom: 20px;} -.layadmin-privateletterlist-item{position: relative;display: block;padding: 10px 15px;} -.homepage-bottom .layui-card-body{padding:0;} -.homepage-bottom .layui-card-body img{width: 32px;height: 32px;border-radius: 50%;margin-top: 10px;} -.homepage-bottom .layui-card-body .meida-left{display: table-cell;padding-right: 10px;} -.homepage-bottom .layui-card-body .meida-right{display: table-cell;vertical-align: top;} -.homepage-bottom .layui-card-body a:hover{background: #F2F2F2;} -.homepage-bottom .layui-card-body{background: #fff;} -.layui-card-header .panel-title .layui-icon{position: relative;left: 0;right: 0px;} - -/* 右侧信息栏 */ -.layadmin-cmdlist-fluid{padding-bottom: 60px;} -.cmdlist-container{background: #fff;border:1px solid transparent;} -.cmdlist-container:hover{border:1px solid #e8e8e8;} -.cmdlist-container img{width: 100%;} -.cmdlist-text{padding:20px;} -.cmdlist-text .info{height: 40px;font-size: 14px;line-height: 20px;width: 100%;overflow: hidden;color: #5F5F5F;margin-bottom:10px;} -.cmdlist-text .price{font-size: 14px;} -.cmdlist-text .price b{margin-right: 20px;} -.cmdlist-text .price p{display: inline-block;} -.cmdlist-text .flow{text-align: right;float: right;} -#demo0{text-align: center;} - -/* 商品列表 */ -.layadmin-message-fluid .layui-col-md12{background: #fff;height: auto;padding-bottom: 50px;} -.layadmin-message-fluid .layui-input-block{margin-left: 0;} -.layadmin-message-fluid .layui-form{padding:45px 40px 0 40px;} -.layadmin-message-fluid .layui-form-label{text-align: left;font-size: 18px;padding-left: 10px;} -.layadmin-message-fluid .layui-textarea{min-height: 100px;font-size: 16px;} -.layadmin-message-fluid .layui-input-right{float: right;} -.layadmin-messag-icon{overflow: hidden;float: left;} -.layadmin-messag-icon .layui-icon{font-size: 24px;line-height: 30px;margin-right: 15px;color: #C4CBCF;} -.layadmin-messag-icon{margin-top: 4px;} -.message-content{padding:0 40px;} -.message-content .media-body{margin-bottom: 60px;} -.message-content .media-body .pad-btm{padding-bottom: 0;} -.message-content .media-left{float: left;margin-right: 10px;} -.message-content .media-left img{border-radius: 50%;} -.message-text{padding-top: 10px;} -.message-content-btn{text-align: center;} -.message-content .layui-btn{height: auto;line-height: 26px; padding: 5px 30px; font-size: 16px;} - -/* 搜索结果页面 */ -.layadmin-serach-main .layui-card-header{height: auto; line-height: 24px; padding: 15px;} -.layadmin-serach-list{margin-bottom: 10px; padding: 10px 0; border-bottom: 1px solid #f6f6f6;} -.layadmin-serach-list h3{padding: 10px 0;} -.layadmin-serach-list h3 .layui-badge{top: -2px;} -.layadmin-serach-list p{color: #5F5F5F;} -.layadmin-serach-list li{margin-bottom: 20px; padding-bottom: 20px; clear: both;} -.layui-serachlist-cover{float: left; margin-right: 15px;} -.layui-serachlist-cover img{width: 90px; height: 90px;} - - -/* 用户列表开始 */ -.layadmin-caller{background: #fff;padding: 30px;} -.layadmin-caller em{font-style: normal;} -.layadmin-caller .caller-fl{float: left;} -.layadmin-caller .caller-fr{float: right;} -.layadmin-caller .caller-seach{position: relative;padding-bottom:40px;} -.layadmin-caller .caller-seach .caller-icon{font-size: 18px;position: absolute;top: 9px;} -.layadmin-caller .caller-seach-icon{left: 6px;} -.layadmin-caller .caller-dump-icon{right: 6px;cursor: pointer;} -.layadmin-caller .caller-pl32{padding:0 32px;} -.layadmin-caller .caller-tab{margin:0;} -.layadmin-caller .caller-contar{padding-bottom:20px;} -.layadmin-caller .caller-contar .caller-item{padding:25px 0;overflow: hidden;border-bottom: 1px solid #e0e0e0;} -.layadmin-caller .caller-contar .caller-item .caller-main{margin-left: 20px;} -.layadmin-caller .caller-contar .caller-item .caller-main p{line-height: 100%;padding:8px 0;} -.layadmin-caller .caller-contar .caller-item .caller-main p:first-child{padding-top:0;} -.layadmin-caller .caller-contar .caller-item .caller-main em{margin-left: 5px;} -.layadmin-caller .caller-contar .caller-item .caller-main .caller-adds i{padding-right: 5px;margin:0;} -.layadmin-caller .caller-contar .caller-item .caller-main .caller-adds{padding-bottom:12px;} -.layadmin-caller .caller-contar .caller-iconset i{margin:0 5px;} -.layadmin-caller .caller-contar .caller-iconset i:first-child{margin-left: 0;} -.layadmin-caller .caller-contar button{margin-top: 22px;} -.layadmin-caller .caller-contar .caller-img{width: 40px;height: 40px;border-radius: 100%;} - +/** + * admin.templte.css + */ + +/******************************** + + 模板开始 + +*******************************/ + + +/* 产品版本选择面板 */ +.layadmin-panel-selection{width: 768px; margin: 30px auto;} +.layadmin-panel-selection .layui-panel-window{padding: 30px 50px; border-top-color: #ddd; text-align: center;} +.layadmin-panel-selection .layui-panel-window h2{padding-bottom: 15px; font-size: 18px;} +.layadmin-panel-selection .layui-panel-window ul{margin-top: 15px; text-align: left;} +.layadmin-panel-selection .layui-btn-container{margin-top: 30px;} +.layadmin-panel-selection .layui-btn-container .layui-btn{width: 100%;} + +/* 通讯录面板 */ +.layadmin-maillist-fluid .layadmin-contact-box{padding:20px;background-color: #fff; + border: 1px solid #e7eaec;overflow: hidden;} +.layadmin-maillist-fluid .layadmin-text-center{text-align: center;} +.layadmin-maillist-fluid .layadmin-text-center img{max-width: 80%;border-radius: 50%;margin-top: 5px;} +.layadmin-maillist-fluid .layadmin-font-blod{font-weight: 600;} +.layadmin-maillist-fluid .layadmin-maillist-img{margin-top: 5px;} +.layadmin-maillist-fluid .layadmin-title{margin:5px 0 10px 0;} +.layadmin-maillist-fluid .layadmin-textimg{line-height: 25px;margin-bottom: 10px;} +.layadmin-maillist-fluid .layadmin-address{line-height: 1.5;margin-bottom: 20px;} +.layadmin-maillist-fluid .layadmin-padding-left20{padding-left: 20px;} + +/* 个人主页 */ +.layadmin-homepage-shadow{box-shadow: 0 1px 1px rgba(0,0,0,.05);background-color: #fff;border-bottom: 1px solid rgba(0,0,0,0.17);border-radius: 0;border: 1px solid #e7ecf3;} +.layadmin-homepage-panel{margin-bottom: 15px;} +.layadmin-homepage-panel .text-center{text-align: center;} +.layadmin-homepage-information{padding: 15px; border-bottom: 1px solid #e9e9e9;} +.layadmin-homepage-pad-ver{ padding-top: 15px;padding-bottom: 15px;} +.layadmin-homepage-pad-img{box-shadow: 0 0 0 4px rgba(0,0,0,0.1);border-radius: 50%;} +.layadmin-homepage-font{font-weight: 600;color: #2b425b;font-size: 1.2em;} +.layadmin-homepage-min-font{margin:5px 0 10px 0;font-size: 0.9em;color: #afb9c3;} +.layadmin-homepage-pad-ver a{line-height: 1.1em;font-size: 1.3em;vertical-align: middle; cursor: pointer;background-color: transparent;color: inherit;padding: 6px 12px;} +.layadmin-homepage-pad-ver a:hover{background: #5FB878; color:#fff;} + +.layadmin-homepage-about{padding: 15px;font-weight: 600;color: #2b425b;} +.layadmin-homepage-list-group{font-size: 0.9em;line-height: 1.25;margin-bottom: 5px;} +.layadmin-homepage-list-group li{ padding: 5px 15px;border: 1px solid #ddd;margin-bottom: -1px;border-width: 1px 0;border-radius: 0; background-color: transparent;border-color: transparent;color: inherit;} +.layadmin-homepage-list-group li i{font-size: 1.333em;line-height: 1.095em;vertical-align: middle; margin-right: 4px;} +.layadmin-homepage-list-group li a.color{color:#337ab7;} +.layadmin-homepage-pad-hor{ padding-left: 15px; padding-right: 15px;border-bottom: 15px;color: #758697; text-indent:20px;} +.layadmin-homepage-list-inline{margin-left: 15px;margin-right: 15px;padding-bottom: 20px} +.layadmin-homepage-list-inline a{display: inline-block;} +.layadmin-homepage-list-inline .layui-btn{font-size: .9em;line-height: 1.42857;vertical-align: middle;height: auto;padding:4px 7px;margin-left: 0px;margin:0 10px 10px 0;} + +/* 左侧个人信息区域 */ +.layadmin-homepage-text-center{text-align: center;margin-bottom: 15px;} +.layadmin-homepage-padding15{padding:15px;margin-bottom: 15px;} +.layadmin-homepage-padding8{padding: 0 8px;} +.layadmin-homepage-paddingmb{margin-bottom: 15px;margin: 0 -7.5px;} +.layadmin-homepage-content{margin-left: 15px;padding: 0;} +.layadmin-homepage-content .new-section-xs{margin: 12px 0;color: inherit;border: 0!important;height: 0px;box-sizing: content-box;} +.layadmin-homepage-content .h4{font-size: 16px;font-weight: 600;color: #2b425b;} +.layadmin-homepage-content small{color: #afb9c3} +.layadmin-homepage-text-center .layui-icon{color:#FFB800;padding-right:5px;} +.layadmin-homepage-padding15 .layui-col-sm5 a{font-size: 11px;height: auto;line-height: 1.5;padding:5px 10px;float: right;} +.layadmin-homepage-padding15 .layui-btn-normal{margin:0 15px;} +.layadmin-homepage-list-imgtxt .layui-col-sm10,.layadmin-homepage-list-imgtxt .layui-col-sm2{background: none} +.layadmin-homepage-list-imgtxt .panel-body{padding: 15px 20px 25px;overflow: hidden;margin-bottom: 15px;} +.layadmin-homepage-list-imgtxt .panel-body .media-left{display: block;float: left;vertical-align: top;padding-right: 10px;} +.layadmin-homepage-list-imgtxt .panel-body .media-left img{border-radius: 50%;} +.layadmin-homepage-list-imgtxt .media-body{width: auto;display: block;overflow: hidden;} +.layadmin-homepage-list-imgtxt .media-body .pad-btm{padding-bottom: 15px;} +.layadmin-homepage-list-imgtxt .media-body .pad-btm p:first-child{padding-bottom: 5px;} +.layadmin-homepage-list-imgtxt .media-body .min-font{margin-bottom: 10px;} +.layadmin-homepage-list-imgtxt .media-body .min-font .layui-breadcrumb a{font-size: 11px;} +.layui-breadcrumb span[lay-separator]{margin:0 5px;} +.layadmin-homepage-list-imgtxt .media-body .pad-btm .fontColor a{font-weight: 600;color: #337ab7;} +.layadmin-homepage-list-imgtxt .media-body .pad-btm .fontColor span{color: #758697;font-weight: 600;} +.layadmin-homepage-list-imgtxt .media-body .h-img{display: block;max-width: 100%;height: auto;margin-top: 10px;} +.layadmin-homepage-list-imgtxt .img-xs{width: 32px;height: 32px;border-radius: 50%;} +.layadmin-homepage-list-imgtxt .media-body .media{margin-top: 15px;overflow: hidden;} +.layadmin-homepage-list-imgtxt .media-body .media .media-right{float: right;padding-top: 10px;} +.layadmin-homepage-list-imgtxt .media-body .media .media-right .list-inline{margin-bottom: 10px;} +.layadmin-homepage-list-imgtxt .media-body .media .list-inline li{padding:0 5px;display: inline-block;} +.layadmin-homepage-list-imgtxt .media-body .media .media-right .list-inline li span{font-weight: 600;} +.layadmin-homepage-list-imgtxt .media-body .media .media-left{display: block;overflow: hidden;width: auto;} +.layadmin-homepage-list-imgtxt .media-body .media .media-left .font-blod{font-weight: 700;color: #758697;} +.layadmin-homepage-list-imgtxt .media-body .media-list{padding-top: 15px;margin-top: 15px;border-top: 1px solid #e9e9e9;} +.layadmin-homepage-list-imgtxt .media-body .media-list .media-item{padding-bottom: 15px;margin-top: 15px;} +.layadmin-homepage-list-imgtxt .media-body .media-list .media-item-left{display:inline-block;padding-right: 10px;margin-bottom: 5px;} +.layadmin-homepage-list-imgtxt .media-body .media-list .media-item-left img{display: block;float: left;} +.layadmin-homepage-list-imgtxt .media-body .media-list .media-text{overflow: hidden;width: auto;display: inline-block;} +.layadmin-homepage-list-imgtxt .media-body .media-list .media-text a{margin-right: 10px;font-weight: 600;display: inline-block;} +.layadmin-homepage-list-imgtxt .media-body .media-list .media-text div:nth-child(2){margin-top: 5px;} +.layadmin-homepage-list-imgtxt .media-body .media-list .layui-btn{height: 24px;line-height: 24px;font-size: 12px;padding:0 20px;margin-bottom: 10px;} +.layadmin-homepage-list-imgtxt .media-body .media-list .layui-btn{height: 24px;line-height: 24px;font-size: 12px;padding:0 20px;margin-bottom: 10px;} + +/* 个人内容区域 */ + +.homepage-top .layui-card-body img{width: 100%} +.homepage-top .layui-card-body .margin-top10{margin-top: 10px;} +.homepage-top .layui-card-body .layui-btn{width: 100%;display: block;} +.homepage-top{padding-bottom: 20px;} +.layadmin-privateletterlist-item{position: relative;display: block;padding: 10px 15px;} +.homepage-bottom .layui-card-body{padding:0;} +.homepage-bottom .layui-card-body img{width: 32px;height: 32px;border-radius: 50%;margin-top: 10px;} +.homepage-bottom .layui-card-body .meida-left{display: table-cell;padding-right: 10px;} +.homepage-bottom .layui-card-body .meida-right{display: table-cell;vertical-align: top;} +.homepage-bottom .layui-card-body a:hover{background: #F2F2F2;} +.homepage-bottom .layui-card-body{background: #fff;} +.layui-card-header .panel-title .layui-icon{position: relative;left: 0;right: 0px;} + +/* 右侧信息栏 */ +.layadmin-cmdlist-fluid{padding-bottom: 60px;} +.cmdlist-container{background: #fff;border:1px solid transparent;} +.cmdlist-container:hover{border:1px solid #e8e8e8;} +.cmdlist-container img{width: 100%;} +.cmdlist-text{padding:20px;} +.cmdlist-text .info{height: 40px;font-size: 14px;line-height: 20px;width: 100%;overflow: hidden;color: #5F5F5F;margin-bottom:10px;} +.cmdlist-text .price{font-size: 14px;} +.cmdlist-text .price b{margin-right: 20px;} +.cmdlist-text .price p{display: inline-block;} +.cmdlist-text .flow{text-align: right;float: right;} +#demo0{text-align: center;} + +/* 商品列表 */ +.layadmin-message-fluid .layui-col-md12{background: #fff;height: auto;padding-bottom: 50px;} +.layadmin-message-fluid .layui-input-block{margin-left: 0;} +.layadmin-message-fluid .layui-form{padding:45px 40px 0 40px;} +.layadmin-message-fluid .layui-form-label{text-align: left;font-size: 18px;padding-left: 10px;} +.layadmin-message-fluid .layui-textarea{min-height: 100px;font-size: 16px;} +.layadmin-message-fluid .layui-input-right{float: right;} +.layadmin-messag-icon{overflow: hidden;float: left;} +.layadmin-messag-icon .layui-icon{font-size: 24px;line-height: 30px;margin-right: 15px;color: #C4CBCF;} +.layadmin-messag-icon{margin-top: 4px;} +.message-content{padding:0 40px;} +.message-content .media-body{margin-bottom: 60px;} +.message-content .media-body .pad-btm{padding-bottom: 0;} +.message-content .media-left{float: left;margin-right: 10px;} +.message-content .media-left img{border-radius: 50%;} +.message-text{padding-top: 10px;} +.message-content-btn{text-align: center;} +.message-content .layui-btn{height: auto;line-height: 26px; padding: 5px 30px; font-size: 16px;} + +/* 搜索结果页面 */ +.layadmin-serach-main .layui-card-header{height: auto; line-height: 24px; padding: 15px;} +.layadmin-serach-list{margin-bottom: 10px; padding: 10px 0; border-bottom: 1px solid #f6f6f6;} +.layadmin-serach-list h3{padding: 10px 0;} +.layadmin-serach-list h3 .layui-badge{top: -2px;} +.layadmin-serach-list p{color: #5F5F5F;} +.layadmin-serach-list li{margin-bottom: 20px; padding-bottom: 20px; clear: both;} +.layui-serachlist-cover{float: left; margin-right: 15px;} +.layui-serachlist-cover img{width: 90px; height: 90px;} + + +/* 用户列表开始 */ +.layadmin-caller{background: #fff;padding: 30px;} +.layadmin-caller em{font-style: normal;} +.layadmin-caller .caller-fl{float: left;} +.layadmin-caller .caller-fr{float: right;} +.layadmin-caller .caller-seach{position: relative;padding-bottom:40px;} +.layadmin-caller .caller-seach .caller-icon{font-size: 18px;position: absolute;top: 9px;} +.layadmin-caller .caller-seach-icon{left: 6px;} +.layadmin-caller .caller-dump-icon{right: 6px;cursor: pointer;} +.layadmin-caller .caller-pl32{padding:0 32px;} +.layadmin-caller .caller-tab{margin:0;} +.layadmin-caller .caller-contar{padding-bottom:20px;} +.layadmin-caller .caller-contar .caller-item{padding:25px 0;overflow: hidden;border-bottom: 1px solid #e0e0e0;} +.layadmin-caller .caller-contar .caller-item .caller-main{margin-left: 20px;} +.layadmin-caller .caller-contar .caller-item .caller-main p{line-height: 100%;padding:8px 0;} +.layadmin-caller .caller-contar .caller-item .caller-main p:first-child{padding-top:0;} +.layadmin-caller .caller-contar .caller-item .caller-main em{margin-left: 5px;} +.layadmin-caller .caller-contar .caller-item .caller-main .caller-adds i{padding-right: 5px;margin:0;} +.layadmin-caller .caller-contar .caller-item .caller-main .caller-adds{padding-bottom:12px;} +.layadmin-caller .caller-contar .caller-iconset i{margin:0 5px;} +.layadmin-caller .caller-contar .caller-iconset i:first-child{margin-left: 0;} +.layadmin-caller .caller-contar button{margin-top: 22px;} +.layadmin-caller .caller-contar .caller-img{width: 40px;height: 40px;border-radius: 100%;} + /****** 模板结束 ******/ \ No newline at end of file diff --git a/public/panel/ui/src/css/admin.css b/public/panel/ui/src/css/admin.css index 11549238..e508d230 100644 --- a/public/panel/ui/src/css/admin.css +++ b/public/panel/ui/src/css/admin.css @@ -1,521 +1,521 @@ -/** - * admin.css - */ - -html #layuicss-layuiAdmin{display: none; position: absolute; width: 1989px;} - - -/* 系统 */ -::-webkit-input-placeholder{color: #ccc} - -/** 滚动条 **/ -/* -::-webkit-scrollbar{width: 10px; height: 10px;} -::-webkit-scrollbar-button:vertical{display: none;} -::-webkit-scrollbar-track, ::-webkit-scrollbar-corner{background-color: #e2e2e2;} -::-webkit-scrollbar-thumb{border-radius: 0; background-color: rgba(0,0,0,.3);} -::-webkit-scrollbar-thumb:vertical:hover{background-color: rgba(0,0,0,.35);} -::-webkit-scrollbar-thumb:vertical:active{background-color: rgba(0,0,0,.38);} -*/ - - -/* 全局 */ -html{background-color: #f2f2f2; color: #5F5F5F;} -*[template], -.layadmin-tabsbody-item{display: none;} -*[lay-href], -*[lay-tips], -*[layadmin-event]{cursor: pointer;} - -/* 重置布局结构 */ -.layui-layout-admin .layui-header{position: fixed; top: 0; left: 0; width: 100%; height: 50px;} - -/* -.layui-layout-admin .layui-header .layui-layout-right .layui-nav-item a{color: #fff;} -.layui-layout-admin .layui-header .layui-layout-right .layui-nav-item a cite{color: rgba(255,255,255,.7);} -*/ - -.layui-layout-admin .layui-header .layui-nav .layui-nav-child a{color: #333;} -.layui-layout-admin .layui-side{width: 220px; top: 0; z-index: 1001;} -.layui-layout-admin .layui-logo, -.layui-layout-admin .layui-header .layui-nav .layui-nav-item{height: 50px; line-height: 50px;} -.layui-layout-admin .layui-logo{position: fixed; left: 0; top: 0; z-index: 1002; width: 220px; height: 49px; padding: 0 15px; box-sizing: border-box; overflow: hidden; font-weight: 300; background-repeat: no-repeat; background-position: center center;} -.layui-layout-admin .layui-layout-left, -.layadmin-pagetabs, -.layui-layout-admin .layui-body, -.layui-layout-admin .layui-footer{left: 220px;} -.layadmin-pagetabs{position: fixed; top: 50px; right: 0; z-index: 999;} -.layadmin-pagetabs .layui-breadcrumb{padding: 0 15px;} -.layui-layout-admin .layui-body{position: fixed; top: 90px; bottom: 0;} -.layui-layout-admin .layui-body .layadmin-tabsbody-item{position: absolute; top: 0; bottom: 0; left: 0; right: 0; overflow: hidden; overflow-y: auto;} -.layui-layout-admin .layui-header .layui-nav-img{width: 26px; height: 26px;} -.layui-layout-admin .layui-header .layui-nav-child{top: 55px;} -.layui-layout-admin .layui-header .layui-layout-right .layui-nav-child{left: auto; right: 0;} -.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd.layui-this a, -.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd.layui-this{background: none} - -/* 统一动画 */ -.layui-layout-admin .layui-header .layui-nav .layui-nav-item, -.layui-layout-admin .layui-layout-left, -.layadmin-pagetabs, -.layui-layout-admin .layui-body, -.layui-layout-admin .layui-footer, -.layui-layout-admin .layui-side, -.layui-layout-admin .layui-logo, -.layui-layout-admin .layui-header .layui-layout-right{transition: all .3s; -webkit-transition: all .3s;} - -/* 图标 */ -.layui-icon-login-qq{color: #3492ED;} -.layui-icon-login-wechat{color: #4DAF29;} -.layui-icon-login-weibo{color: #CF1900;} - -/* 重置表格风格 */ -/* -.layui-table th, -.layui-table td, -.layui-table[lay-skin="line"], -.layui-table[lay-skin="row"], -.layui-table-view, -.layui-table-header, -.layui-table-tool, -.layui-table-page, -.layui-table-fixed-r, -.layui-table-tips-main{border-color: #f5f5f5;} - -.layui-table thead tr, -.layui-table-header, -.layui-table-tool, -.layui-table-patch, -.layui-table-mend{background-color: #fff;} - -.layui-table[lay-even] tr:nth-child(even), -.layui-table tbody tr:hover, -.layui-table-hover, -.layui-table-click{background-color: #f8f8f8;} -*/ - -/* 表单 */ -.layui-form[wid100] .layui-form-label{width: 100px;} -.layui-form[wid100] .layui-input-block{margin-left: 130px;} -@media screen and (max-width: 450px){ - .layui-form[wid100] .layui-form-item .layui-input-inline{margin-left: 132px;} - .layui-form[wid100] .layui-form-item .layui-input-inline+.layui-form-mid{margin-left: 130px;} -} -.layui-form-item .layui-input-company{width: auto; padding-right: 10px; line-height: 38px;} - -/* 辅助 */ -.layadmin-flexible{} -.layui-bg-white{background-color: #fff;} -.layadmin-loading{position: absolute; left: 50%; top: 50%; margin: -16px -15px; font-size: 30px; color: #c2c2c2;} -.layadmin-fixed{position: fixed; left: 0; top: 0; z-index: 999;} -.layadmin-link{color: #029789!important;} -.layadmin-link:hover{opacity: 0.8;} - -/* 弹出面板 */ -.layui-layer-admin .layui-layer-title{height: 50px; line-height: 50px; border: none 0; background-color: #20222A; color: #fff;} -.layui-layer-admin i[close]{position: absolute; padding: 5px; right: 10px; top: 12px; color: #fff; cursor: pointer;} -.layui-layer-admin .layui-layer-content{padding: 20px; line-height: 22px;} -.layui-layer-admin .layui-layer-content cite{font-style: normal; color: #FF5722;} - -/* 右侧面板 */ -.layui-layer-adminRight{top: 50px !important; bottom: 0; box-shadow: 1px 1px 10px rgba(0,0,0,.1); border-radius: 0; overflow: auto;} - -/* 弹出便签 */ -.layadmin-note .layui-layer-content{padding: 0;} -.layadmin-note textarea{display: block; width: 300px; height: 132px; min-width: 300px; min-height: 132px; line-height: 20px; padding: 10px 20px; border: none; box-sizing: border-box; color: #5F5F5F; word-wrap: break-word;} - -/* 头部导航 */ -.layui-layout-admin .layui-layout-left{padding: 0 10px;} -.layui-layout-admin .layui-layout-left .layui-nav-item{margin: 0 20px;} -.layui-layout-admin .layui-input-search{display: inline-block; vertical-align: middle; height: 32px; border: none; cursor: text;} -.layui-layout-admin .layui-layout-left a{padding: 0;} -.layui-layout-admin .layui-layout-right{padding: 0;} -.layui-header .layui-nav-item:hover{} -.layui-header .layui-layout-right .layui-badge-dot{margin-left: 0px;} -.layui-header .layui-nav .layui-this:after, -.layui-layout-admin .layui-header .layui-nav-bar{top: 0 !important; bottom: auto; height: 3px; background-color: #fff; background-color: rgba(255,255,255,.3);} - -/* 遮罩 */ -.layadmin-body-shade{position: fixed; display: none; left: 0; right: 0; top: 0; bottom: 0; background-color: rgba(0,0,0,.3); z-index: 1000;} - -/* 侧边菜单 */ -.layui-side-menu .layui-side-scroll{width: 240px;} -.layui-side-menu .layui-nav{width: 220px; margin-top: 50px; background: none;} -.layui-side-menu .layui-nav .layui-nav-item a{padding-left: 45px; padding-right: 30px;} -.layui-side-menu .layui-nav .layui-nav-item a:hover{background: none;} -.layui-side-menu .layui-nav .layui-nav-itemed > .layui-nav-child{padding: 5px 0;} -.layui-side-menu .layui-nav>.layui-nav-item .layui-icon:first-child{position: absolute; top: 50%; left: 20px; margin-top: -19px;} -.layui-side-menu .layui-nav .layui-nav-child .layui-nav-child{background: none!important;} -.layui-side-menu .layui-nav .layui-nav-child .layui-nav-child a{padding-left: 60px} - -/* 侧边菜单 - 平板移动设备 */ -@media screen and (max-width: 992px) { - .layui-layout-admin .layui-side{transform: translate3d(-220px, 0, 0); -webkit-transform: translate3d(-220px, 0, 0); width: 220px;} - .layui-layout-admin .layui-layout-left, - .layadmin-pagetabs, - .layui-layout-admin .layui-body, - .layui-layout-admin .layui-footer{left: 0;} -} - -/* 侧边收缩模式 */ -.layadmin-side-shrink .layui-layout-admin .layui-logo{width: 60px; background-image: url(res/logo.png); /*background-size: 20px;)*/} -.layadmin-side-shrink .layui-layout-admin .layui-logo span{display: none;} -.layadmin-side-shrink .layui-side{left: 0; width: 60px;} -.layadmin-side-shrink .layui-layout-admin .layui-layout-left, -.layadmin-side-shrink .layadmin-pagetabs, -.layadmin-side-shrink .layui-layout-admin .layui-body, -.layadmin-side-shrink .layui-layout-admin .layui-footer{left: 60px;} -.layadmin-side-shrink .layui-side-menu .layui-nav{position: static; width: 60px;} -.layadmin-side-shrink .layui-side-menu .layui-nav-item{position: static;} -.layadmin-side-shrink .layui-side-menu .layui-nav-item>a{padding-right: 0;} -.layadmin-side-shrink .layui-side-menu .layui-nav-item cite, -.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-item > a .layui-nav-more, -.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-item > .layui-nav-child{display: none; padding: 8px 0; width: 200px;} -.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-itemed>a{background: rgba(0,0,0,.3);} - -/* 移动端展开模式 */ -.layadmin-side-spread-sm .layui-layout-admin .layui-layout-left, -.layadmin-side-spread-sm .layadmin-pagetabs, -.layadmin-side-spread-sm .layui-layout-admin .layui-body, -.layadmin-side-spread-sm .layui-layout-admin .layui-footer{left: 0; transform: translate3d(220px, 0, 0); -webkit-transform: translate3d(220px, 0, 0);} -.layadmin-side-spread-sm .layui-layout-admin .layui-layout-right{transform: translate3d(220px, 0, 0); -webkit-transform: translate3d(220px, 0, 0);} -.layadmin-side-spread-sm .layui-side{transform: translate3d(0, 0, 0); -webkit-transform: translate3d(0, 0, 0);} -.layadmin-side-spread-sm .layadmin-body-shade{display: block; } - - -/* 页面标签 */ -.layadmin-pagetabs{height: 40px; line-height: 40px; padding: 0 80px 0 40px; /*border-bottom: 2px solid #292B34;*/ background-color: #fff; box-sizing: border-box; box-shadow: 0 1px 2px 0 rgba(0,0,0,.1);} -.layadmin-pagetabs .layadmin-tabs-control{position: absolute; top: 0; width: 40px; height: 100%; text-align: center; cursor: pointer; transition: all .3s; -webkit-transition: all .3s; box-sizing: border-box; border-left: 1px solid #f5f5f5;} -.layadmin-pagetabs .layadmin-tabs-control:hover{background-color: #f5f5f5;} -.layadmin-pagetabs .layui-icon-prev{left: 0; border-left: none; border-right: 1px solid #f5f5f5;} -.layadmin-pagetabs .layui-icon-next{right: 40px; right: 40px;} -.layadmin-pagetabs .layui-icon-down{right: 0;} -.layadmin-tabs-select.layui-nav{position: absolute; left: 0; top: 0; width: 100%; height: 100%; padding: 0; background: none;} -.layadmin-tabs-select.layui-nav .layui-nav-item{line-height: 40px;} -.layadmin-tabs-select.layui-nav .layui-nav-item>a{height: 40px;} -.layadmin-tabs-select.layui-nav .layui-nav-item a{color: #5F5F5F;} -.layadmin-tabs-select.layui-nav .layui-nav-child{top: 40px; left: auto; right: 0;} -.layadmin-tabs-select.layui-nav .layui-nav-child dd.layui-this, -.layadmin-tabs-select.layui-nav .layui-nav-child dd.layui-this a{background-color: #f2f2f2!important; color: #333;} -.layadmin-tabs-select.layui-nav .layui-nav-more, -.layadmin-tabs-select.layui-nav .layui-nav-bar{display: none;} - -.layadmin-pagetabs .layui-tab{margin: 0; overflow: hidden;} -.layadmin-pagetabs .layui-tab-title{height: 40px; border: none;} -.layadmin-pagetabs .layui-tab-title li{min-width: 0; line-height: 40px; max-width: 160px; text-overflow: ellipsis; padding-right: 40px; overflow: hidden; border-right: 1px solid #f5f5f5; vertical-align: top;} -.layadmin-pagetabs .layui-tab-title li:first-child{ padding-right: 15px;} -.layadmin-pagetabs .layui-tab-title li:first-child .layui-tab-close{display: none;} -.layadmin-pagetabs .layui-tab-title li .layui-tab-close{position: absolute; right: 8px; top: 50%; margin: -7px 0 0 0; width: 16px; height: 16px; line-height: 16px; border-radius: 50%; font-size: 12px;} -.layadmin-pagetabs .layui-tab-title li:after{content:''; position: absolute; top: 0; left: 0; width: 0; height: 2px; border-radius: 0; background-color: #292B34; transition: all .3s; -webkit-transition: all .3s;} -.layadmin-pagetabs .layui-tab-title li:hover:after{width: 100%;} -.layadmin-pagetabs .layui-tab-title li:hover, -.layadmin-pagetabs .layui-tab-title li.layui-this{color: #5FB878;} -.layadmin-pagetabs .layui-tab-title li.layui-this:after{width: 100%; border: none; height: 2px; background-color: #292B34;} - -/* 不开启页面标签时 */ -.layadmin-tabspage-none .layui-layout-admin .layui-header{border-bottom: none; box-shadow: 0 1px 2px 0 rgba(0,0,0,.05);} -.layadmin-tabspage-none .layui-layout-admin .layui-body{top: 50px;} -.layadmin-tabspage-none .layadmin-header{display: block;} -.layadmin-tabspage-none .layadmin-header .layui-breadcrumb{border-top: 1px solid #f5f5f5;} - -/* 底部固定区域 */ -.layui-layout-admin .layui-footer{padding: 10px 0; text-align: center;} - -/* 默认主题修饰 */ -.layui-layout-admin .layui-header{border-bottom: 1px solid #f5f5f5; box-sizing: border-box; background-color: #fff;} -.layui-layout-admin .layui-header a, -.layui-layout-admin .layui-header a cite{color: #333;} -.layui-layout-admin .layui-header a:hover{color: #000;} -.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-top-color: #5F5F5F} -.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color: transparent; border-bottom-color: #5F5F5F;} -.layui-layout-admin .layui-header .layui-nav .layui-this:after, -.layui-layout-admin .layui-header .layui-nav-bar{height: 2px; background-color: #20222A} -.layui-layout-admin .layui-logo{background-color: #20222A; box-shadow: 0 1px 2px 0 rgba(0,0,0,.15);} -.layui-layout-admin .layui-logo, -.layui-layout-admin .layui-logo a{color: #fff; color: rgba(255,255,255,.8)} -.layui-side-menu{box-shadow: 1px 0 2px 0 rgba(0,0,0,.05);} -.layui-layout-admin .layui-footer{box-shadow: 0 -1px 2px 0 rgba(0,0,0,.05);} - -.layui-side-menu, -.layadmin-setTheme-side{background-color: #20222A; color: #fff;} -.layadmin-setTheme-header{background-color: #fff;} - -.layui-layout-admin .layui-footer{background-color: #fff;} -.layui-tab-admin .layui-tab-title{background-color: #393D49; color: #fff;} - - -/* - - 格局 - -*/ - -.layui-fluid{padding: 15px;} -.layadmin-header{display: none; height: 50px; line-height: 50px; margin-bottom: 0; border-radius: 0;} -.layadmin-header .layui-breadcrumb{padding: 0 15px;} -.layui-card-header{position: relative;} -.layui-card-header .layui-icon{line-height: initial; position: absolute; right: 15px; top: 50%; margin-top: -7px;} -.layadmin-iframe{position: absolute; width: 100%; height: 100%; left: 0; top: 0; right: 0; bottom: 0;} - - -/* - - 控制台 - -*/ - - -/* 重置轮播样式 */ -.layadmin-carousel{height: 185px !important; background-color: #fff;} -.layadmin-carousel .layui-carousel-ind li{background-color: #e2e2e2;} -.layadmin-carousel .layui-carousel-ind li:hover{background-color: #c2c2c2;} -.layadmin-carousel .layui-carousel-ind li.layui-this{background-color: #999;} -.layadmin-carousel .layui-carousel, -.layadmin-carousel > *[carousel-item] > *{background-color: #fff;} -.layadmin-carousel .layui-col-space10{margin: 0;} -.layadmin-carousel .layui-carousel-ind{position: absolute; top: -41px; text-align: right;} -.layadmin-carousel .layui-carousel-ind ul{background: none;} - -/* 重置tab样式 */ -.layui-card .layui-tab-brief .layui-tab-title{height: 42px; border-bottom-color: #f5f5f5;} -.layui-card .layui-tab-brief .layui-tab-title li{margin: 0 15px; padding: 0; line-height: 42px;} -.layui-card .layui-tab-brief .layui-tab-title li.layui-this{color: #333;} -.layui-card .layui-tab-brief .layui-tab-title .layui-this:after{height: 43px;} -.layui-card .layui-tab-brief .layui-tab-content{padding: 15px;} -.layui-card .layui-table-view{margin: 0;} - -/* 快捷方式 */ -.layadmin-shortcut li{text-align: center;} -.layadmin-shortcut li .layui-icon{display: inline-block; width: 100%; height: 60px; line-height: 60px; text-align: center; border-radius: 2px; font-size: 30px; background-color: #F8F8F8; color: #333; transition: all .3s; -webkit-transition: all .3s;} -.layadmin-shortcut li cite{position: relative; top: 2px; display: block; color: #5F5F5F; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size: 14px;} -.layadmin-shortcut li:hover .layui-icon{background-color: #f2f2f2;} - -/* 待办事项 */ -.layadmin-backlog .layadmin-backlog-body{display: block; padding: 10px 15px; background-color: #f8f8f8; color: #999; border-radius: 2px; transition: all .3s; -webkit-transition: all .3s;} -.layadmin-backlog-body h3{padding-bottom: 10px; font-size: 12px;} -.layadmin-backlog-body p cite{font-style: normal; font-size: 30px; font-weight: 300; color: #009688;} -.layadmin-backlog-body:hover{background-color: #f2f2f2; color: #888;} - -/* 版本信息 */ -.layadmin-version .layui-table{padding: 6px 0;} -.layadmin-version .layui-table td, -.layadmin-version .layui-table th{line-height: 25px;} - -/* 数据概览 */ -.layadmin-dataview{height: 332px !important;} -.layadmin-dataview>*[carousel-item]:before{display: none;} -.layadmin-dataview>*[carousel-item]>div{height: 332px;} - -/* 控制台效果报告 */ -.layadmin-takerates{padding-top: 5px;} -.layadmin-takerates .layui-progress{margin: 50px 0 60px;} -.layadmin-takerates .layui-progress:last-child{margin-bottom: 10px;} -.layadmin-takerates .layui-progress h3{position: absolute; right: 0; top: -35px; color: #999; font-size: 14px;} -.layadmin-takerates .layui-progress-bar{text-align: left;} -.layadmin-takerates .layui-progress-text{top: -35px; line-height: 26px; font-size: 26px;} - -/* 产品动态 */ -.layadmin-news{height: 60px !important; padding: 5px 0;} -.layadmin-news a{display: block; line-height: 60px; text-align: center;} -.layadmin-news .layui-carousel-ind{height: 45px;} - -/* 文字列表 */ -.layadmin-list li{margin-bottom: 6px; padding-bottom: 6px; border-bottom-color: #f5f5f5; list-style-position: inside; list-style-type: disc;} -.layadmin-list li{text-overflow: ellipsis; overflow: hidden; white-space: nowrap;} -.layadmin-list li a{color: #5F5F5F;} -.layadmin-list li a:hover{color: #009688;} -.layadmin-list li:last-child{border: none; padding: 0; margin: 0;} - -/* 文本区域 */ -.layadmin-text p{margin-bottom: 10px; text-indent: 2em;} -.layadmin-text p:last-child{margin: 0;} -.layadmin-font-em{font-size: 13px; color: #758697;} - - - - -/******************************** - - 其它主页开始 - -*******************************/ - -/* 主页示例一 */ -/* 进行中的项目 */ -.layui-card-header .layui-a-tips{position: absolute; right: 15px; color: #01AAED;} -.layuiadmin-card-text{background-color: #f8f8f8; color: #777; padding: 24px;} -.layuiadmin-card-text .layui-text-top{padding-bottom: 10px;} -.layuiadmin-card-text .layui-text-top i{margin-right: 10px; font-size: 24px; color: #009688;} -.layuiadmin-card-text .layui-text-top a{line-height: 24px; font-size: 16px; vertical-align: top;} -.layuiadmin-card-text .layui-text-center{height: 44px; line-height: 22px; margin-bottom: 10px; overflow: hidden;} -.layuiadmin-card-text .layui-text-bottom{position: relative;} -.layuiadmin-card-text .layui-text-bottom a{color: #777; font-size: 12px; text-overflow: ellipsis; word-break: break-all;} -.layuiadmin-card-text .layui-text-bottom span{color: #CCC; font-size: 12px; position: absolute; right: 0;} -.layuiadmin-card-text a:hover, -.layuiadmin-card-link a:hover, -.layuiadmin-card-team li a:hover{color: #01AAED; transition: all 300ms;} - -/* 动态 */ -.layuiadmin-card-status{padding: 0 10px 10px 10px;} -.layuiadmin-card-status dd{padding: 15px 0; border-bottom: 1px solid #EEE; display: -webkit-flex; display: flex;} -.layuiadmin-card-status dd:last-child{border: none;} -.layuiadmin-card-status dd div.layui-status-img, -.layuiadmin-card-team .layui-team-img{width: 32px; height: 32px; border-radius: 50%; background-color: #009688; margin-right: 15px;} -.layuiadmin-card-status dd div.layui-status-img a{width: 100%; height: 100%; display: inline-block; text-align: center; line-height: 32px;} -.layuiadmin-card-status dd div.layui-status-img img, -.layuiadmin-card-team .layui-team-img img{width: 50%; height: 50%;} -.layuiadmin-card-status dd div a{color: #01AAED;} -.layuiadmin-card-status dd div span{color: #BBB;} - -/* 便捷导航 */ -.layuiadmin-card-link{padding-left: 10px; font-size: 0} -.layuiadmin-card-link a{display: inline-block; width: 25%; color: #5F5F5F; font-size: 14px; margin-bottom: 12px;} -.layuiadmin-card-link button{vertical-align: top;} -.layuiadmin-card-link button:hover{color: #009688;} - -/* 团队 */ -.layuiadmin-card-team li{padding: 10px 0 10px 10px;} -.layuiadmin-card-team .layui-team-img{display: inline-block; margin-right: 8px; width: 24px; height: 24px; text-align: center; line-height: 24px;} -.layuiadmin-card-team span{color: #777;} - - -/* 主页示例二 */ -.layuiadmin-badge{position: absolute; top: 50%; margin-top: -9px; right: 15px; color: #01AAED; } -.layuiadmin-card-list{padding: 15px;} -.layuiadmin-card-list p.layuiadmin-big-font{font-size: 36px; color: #5F5F5F; line-height: 36px; padding: 5px 0 10px; overflow: hidden; text-overflow: ellipsis; word-break: break-all; white-space: nowrap;} -.layuiadmin-card-list p.layuiadmin-normal-font{padding-bottom: 10px; font-size: 20px; color: #5F5F5F; line-height: 24px;} -.layuiadmin-span-color{font-size: 14px; position: absolute; right: 15px;} -.layuiadmin-span-color i{padding-left: 5px;} -.layuiadmin-btn-group{position: absolute; right: 15px;} - -.layuiadmin-card-status li{position: relative; padding: 10px 0; border-bottom: 1px solid #EEE;} -.layuiadmin-card-status li h3{padding-bottom: 5px; font-weight: 700;} -.layuiadmin-card-status li p{padding-bottom: 10px;} -.layuiadmin-card-status li>span{color: #999;} -.layuiadmin-home2-usernote .layuiadmin-reply{display: none; position: absolute; right: 0; bottom: 12px;} -.layuiadmin-home2-usernote li:hover .layuiadmin-reply{display: block;} - -.layuiadmin-page-table td span{color: #2F4056;} -.layuiadmin-page-table td span.first{color: #FF5722;} -.layuiadmin-page-table td span.second{color: #FFB800;} -.layuiadmin-page-table td span.third{color: #5FB878;} - - -/****** 其它主页结束 ******/ - - - - -/* - - 应用 - -*/ - - -/* 消息中心 */ -.layuiAdmin-msg-detail h1{font-size: 16px;} -.layuiAdmin-msg-detail .layui-card-header{height: auto; line-height: 30px; padding: 15px;} -.layuiAdmin-msg-detail .layui-card-header span{padding: 0 5px; color: #999;} -.layuiAdmin-msg-detail .layui-card-header span:first-child{padding-left: 0;} -.layuiAdmin-msg-detail .layui-card-body{padding: 15px;} - -/* 文章列表 */ -.layuiadmin-content-bread{padding-bottom: 20px;} - -/* 进度条样式 */ -.layuiadmin-order-progress{position: relative; top: 12px;} - - - - -/* - - 系统 - -*/ - - -/* 头部图标重置 */ -.layui-card-header.layuiadmin-card-header-auto{padding-top: 15px; padding-bottom: 15px; height: auto;} -.layuiadmin-card-header-auto i.layuiadmin-button-btn{position: relative; right: 0; top: 0; vertical-align: middle;} -.layuiadmin-card-header-auto .layui-form-item:last-child{margin-bottom: 0;} - - -/* 主题设置 */ -.layadmin-setTheme{padding: 15px; overflow-x: hidden;} -.layadmin-setTheme>h5{padding: 20px 0 10px; color: #000;} -.layadmin-setTheme>h5:first-child{padding-top: 0;} -.layadmin-setTheme-color{width: 330px; font-size: 0;} -.layadmin-setTheme-color li{position: relative; display: inline-block; vertical-align: top; width: 80px; height: 50px; margin: 0 15px 15px 0; background-color: #f2f2f2; cursor: pointer; font-size: 12px; color: #5F5F5F;} -.layadmin-setTheme-color li:after{content: ''; position: absolute; z-index: 20; top: 50%; left: 50%; width: 1px; height: 0; border: 1px solid #f2f2f2; transition: all .3s; -webkit-transition: all .3s; opacity: 0;} -.layadmin-setTheme-color li.layui-this:after, -.layadmin-setTheme-color li:hover:after{width: 100%; height: 100%; padding: 4px; top: -5px; left: -5px; border-color: #5FB878; opacity: 1;} - -.layadmin-setTheme-header{position: relative; z-index: 10; height: 10px; border-top: 1px solid #f2f2f2; border-right: 1px solid #f2f2f2;} -.layadmin-setTheme-side{position: absolute; left: 0; top: 0; width: 20px; height: 100%; z-index: 11; box-shadow: 1px 0 2px 0 rgba(0,0,0,.05);} -.layadmin-setTheme-logo{position: absolute; left: 0; top: 0; width: 100%; height: 10px; box-shadow: 0 1px 2px 0 rgba(0,0,0,.15);} -.layadmin-form-right{text-align: right;} - - -/* 关于 */ -.layadmin-about p{margin-bottom: 10px;} - -/* 菜单列表 */ -.layadmin-menu-list .layui-card-header{height: 50px; line-height: 50px; font-size: 16px;} -.layadmin-menu-list .layui-card-header:active{background-color: #f2f2f2;} -.layadmin-menu-list .layui-card-header .layui-icon{position: relative; top: 1px; left: 0; display: inline-block; margin: 0 10px 0; font-size: 18px;} - - -/* 动画 */ -@-webkit-keyframes layui-rl{ /* 从右往左滑入 */ - from {-webkit-transform: translate3d(100%, 0, 0);} - to {-webkit-transform: translate3d(0, 0, 0);} -} -@keyframes layui-rl{ - from {transform: translate3d(100%, 0, 0);} - to {transform: translate3d(0, 0, 0);} -} -.layui-anim-rl{-webkit-animation-name: layui-rl; animation-name: layui-rl;} - -@-webkit-keyframes layui-lr{ /* 从右往左滑入 */ - from {-webkit-transform: translate3d(0 0, 0); opacity: 1;} - to {-webkit-transform: translate3d(100%, 0, 0); opacity: 1;} -} -@keyframes layui-lr{ - from {transform: translate3d(0, 0, 0);} - to {transform: translate3d(100%, 0, 0);} -} -.layui-anim-lr{-webkit-animation-name: layui-lr; animation-name: layui-lr;} - -.layui-anim-rl.layer-anim-close{-webkit-animation-name: layui-lr; animation-name: layui-lr;} - - -/* 提示页 */ -.layadmin-tips{margin-top: 30px; text-align: center;} -.layadmin-tips .layui-icon[face]{display: inline-block; font-size: 300px; color: #393D49;} -.layadmin-tips .layui-text{width: 500px; margin: 30px auto; padding-top: 20px; border-top: 5px solid #009688; font-size: 16px;} -.layadmin-tips h1{font-size: 100px; line-height: 100px; color: #009688;} -.layadmin-tips .layui-text .layui-anim{display: inline-block;} - - -/* - - 响应式补充 - -*/ - -@media screen and (max-width: 768px) { - - /* 产品清单模板 */ - .layadmin-panel-selection{margin: 0; width: auto;} - - /* 导航 */ - .layui-body .layui-nav .layui-nav-item{display: block;} - - /* 主体容器 */ - .layui-layout-admin .layui-body .layadmin-tabsbody-item{-webkit-overflow-scrolling: touch; overflow: auto;} -} - - - +/** + * admin.css + */ + +html #layuicss-layuiAdmin{display: none; position: absolute; width: 1989px;} + + +/* 系统 */ +::-webkit-input-placeholder{color: #ccc} + +/** 滚动条 **/ +/* +::-webkit-scrollbar{width: 10px; height: 10px;} +::-webkit-scrollbar-button:vertical{display: none;} +::-webkit-scrollbar-track, ::-webkit-scrollbar-corner{background-color: #e2e2e2;} +::-webkit-scrollbar-thumb{border-radius: 0; background-color: rgba(0,0,0,.3);} +::-webkit-scrollbar-thumb:vertical:hover{background-color: rgba(0,0,0,.35);} +::-webkit-scrollbar-thumb:vertical:active{background-color: rgba(0,0,0,.38);} +*/ + + +/* 全局 */ +html{background-color: #f2f2f2; color: #5F5F5F;} +*[template], +.layadmin-tabsbody-item{display: none;} +*[lay-href], +*[lay-tips], +*[layadmin-event]{cursor: pointer;} + +/* 重置布局结构 */ +.layui-layout-admin .layui-header{position: fixed; top: 0; left: 0; width: 100%; height: 50px;} + +/* +.layui-layout-admin .layui-header .layui-layout-right .layui-nav-item a{color: #fff;} +.layui-layout-admin .layui-header .layui-layout-right .layui-nav-item a cite{color: rgba(255,255,255,.7);} +*/ + +.layui-layout-admin .layui-header .layui-nav .layui-nav-child a{color: #333;} +.layui-layout-admin .layui-side{width: 220px; top: 0; z-index: 1001;} +.layui-layout-admin .layui-logo, +.layui-layout-admin .layui-header .layui-nav .layui-nav-item{height: 50px; line-height: 50px;} +.layui-layout-admin .layui-logo{position: fixed; left: 0; top: 0; z-index: 1002; width: 220px; height: 49px; padding: 0 15px; box-sizing: border-box; overflow: hidden; font-weight: 300; background-repeat: no-repeat; background-position: center center;} +.layui-layout-admin .layui-layout-left, +.layadmin-pagetabs, +.layui-layout-admin .layui-body, +.layui-layout-admin .layui-footer{left: 220px;} +.layadmin-pagetabs{position: fixed; top: 50px; right: 0; z-index: 999;} +.layadmin-pagetabs .layui-breadcrumb{padding: 0 15px;} +.layui-layout-admin .layui-body{position: fixed; top: 90px; bottom: 0;} +.layui-layout-admin .layui-body .layadmin-tabsbody-item{position: absolute; top: 0; bottom: 0; left: 0; right: 0; overflow: hidden; overflow-y: auto;} +.layui-layout-admin .layui-header .layui-nav-img{width: 26px; height: 26px;} +.layui-layout-admin .layui-header .layui-nav-child{top: 55px;} +.layui-layout-admin .layui-header .layui-layout-right .layui-nav-child{left: auto; right: 0;} +.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd.layui-this a, +.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd.layui-this{background: none} + +/* 统一动画 */ +.layui-layout-admin .layui-header .layui-nav .layui-nav-item, +.layui-layout-admin .layui-layout-left, +.layadmin-pagetabs, +.layui-layout-admin .layui-body, +.layui-layout-admin .layui-footer, +.layui-layout-admin .layui-side, +.layui-layout-admin .layui-logo, +.layui-layout-admin .layui-header .layui-layout-right{transition: all .3s; -webkit-transition: all .3s;} + +/* 图标 */ +.layui-icon-login-qq{color: #3492ED;} +.layui-icon-login-wechat{color: #4DAF29;} +.layui-icon-login-weibo{color: #CF1900;} + +/* 重置表格风格 */ +/* +.layui-table th, +.layui-table td, +.layui-table[lay-skin="line"], +.layui-table[lay-skin="row"], +.layui-table-view, +.layui-table-header, +.layui-table-tool, +.layui-table-page, +.layui-table-fixed-r, +.layui-table-tips-main{border-color: #f5f5f5;} + +.layui-table thead tr, +.layui-table-header, +.layui-table-tool, +.layui-table-patch, +.layui-table-mend{background-color: #fff;} + +.layui-table[lay-even] tr:nth-child(even), +.layui-table tbody tr:hover, +.layui-table-hover, +.layui-table-click{background-color: #f8f8f8;} +*/ + +/* 表单 */ +.layui-form[wid100] .layui-form-label{width: 100px;} +.layui-form[wid100] .layui-input-block{margin-left: 130px;} +@media screen and (max-width: 450px){ + .layui-form[wid100] .layui-form-item .layui-input-inline{margin-left: 132px;} + .layui-form[wid100] .layui-form-item .layui-input-inline+.layui-form-mid{margin-left: 130px;} +} +.layui-form-item .layui-input-company{width: auto; padding-right: 10px; line-height: 38px;} + +/* 辅助 */ +.layadmin-flexible{} +.layui-bg-white{background-color: #fff;} +.layadmin-loading{position: absolute; left: 50%; top: 50%; margin: -16px -15px; font-size: 30px; color: #c2c2c2;} +.layadmin-fixed{position: fixed; left: 0; top: 0; z-index: 999;} +.layadmin-link{color: #029789!important;} +.layadmin-link:hover{opacity: 0.8;} + +/* 弹出面板 */ +.layui-layer-admin .layui-layer-title{height: 50px; line-height: 50px; border: none 0; background-color: #20222A; color: #fff;} +.layui-layer-admin i[close]{position: absolute; padding: 5px; right: 10px; top: 12px; color: #fff; cursor: pointer;} +.layui-layer-admin .layui-layer-content{padding: 20px; line-height: 22px;} +.layui-layer-admin .layui-layer-content cite{font-style: normal; color: #FF5722;} + +/* 右侧面板 */ +.layui-layer-adminRight{top: 50px !important; bottom: 0; box-shadow: 1px 1px 10px rgba(0,0,0,.1); border-radius: 0; overflow: auto;} + +/* 弹出便签 */ +.layadmin-note .layui-layer-content{padding: 0;} +.layadmin-note textarea{display: block; width: 300px; height: 132px; min-width: 300px; min-height: 132px; line-height: 20px; padding: 10px 20px; border: none; box-sizing: border-box; color: #5F5F5F; word-wrap: break-word;} + +/* 头部导航 */ +.layui-layout-admin .layui-layout-left{padding: 0 10px;} +.layui-layout-admin .layui-layout-left .layui-nav-item{margin: 0 20px;} +.layui-layout-admin .layui-input-search{display: inline-block; vertical-align: middle; height: 32px; border: none; cursor: text;} +.layui-layout-admin .layui-layout-left a{padding: 0;} +.layui-layout-admin .layui-layout-right{padding: 0;} +.layui-header .layui-nav-item:hover{} +.layui-header .layui-layout-right .layui-badge-dot{margin-left: 0px;} +.layui-header .layui-nav .layui-this:after, +.layui-layout-admin .layui-header .layui-nav-bar{top: 0 !important; bottom: auto; height: 3px; background-color: #fff; background-color: rgba(255,255,255,.3);} + +/* 遮罩 */ +.layadmin-body-shade{position: fixed; display: none; left: 0; right: 0; top: 0; bottom: 0; background-color: rgba(0,0,0,.3); z-index: 1000;} + +/* 侧边菜单 */ +.layui-side-menu .layui-side-scroll{width: 240px;} +.layui-side-menu .layui-nav{width: 220px; margin-top: 50px; background: none;} +.layui-side-menu .layui-nav .layui-nav-item a{padding-left: 45px; padding-right: 30px;} +.layui-side-menu .layui-nav .layui-nav-item a:hover{background: none;} +.layui-side-menu .layui-nav .layui-nav-itemed > .layui-nav-child{padding: 5px 0;} +.layui-side-menu .layui-nav>.layui-nav-item .layui-icon:first-child{position: absolute; top: 50%; left: 20px; margin-top: -19px;} +.layui-side-menu .layui-nav .layui-nav-child .layui-nav-child{background: none!important;} +.layui-side-menu .layui-nav .layui-nav-child .layui-nav-child a{padding-left: 60px} + +/* 侧边菜单 - 平板移动设备 */ +@media screen and (max-width: 992px) { + .layui-layout-admin .layui-side{transform: translate3d(-220px, 0, 0); -webkit-transform: translate3d(-220px, 0, 0); width: 220px;} + .layui-layout-admin .layui-layout-left, + .layadmin-pagetabs, + .layui-layout-admin .layui-body, + .layui-layout-admin .layui-footer{left: 0;} +} + +/* 侧边收缩模式 */ +.layadmin-side-shrink .layui-layout-admin .layui-logo{width: 60px; background-image: url(res/logo.png); /*background-size: 20px;)*/} +.layadmin-side-shrink .layui-layout-admin .layui-logo span{display: none;} +.layadmin-side-shrink .layui-side{left: 0; width: 60px;} +.layadmin-side-shrink .layui-layout-admin .layui-layout-left, +.layadmin-side-shrink .layadmin-pagetabs, +.layadmin-side-shrink .layui-layout-admin .layui-body, +.layadmin-side-shrink .layui-layout-admin .layui-footer{left: 60px;} +.layadmin-side-shrink .layui-side-menu .layui-nav{position: static; width: 60px;} +.layadmin-side-shrink .layui-side-menu .layui-nav-item{position: static;} +.layadmin-side-shrink .layui-side-menu .layui-nav-item>a{padding-right: 0;} +.layadmin-side-shrink .layui-side-menu .layui-nav-item cite, +.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-item > a .layui-nav-more, +.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-item > .layui-nav-child{display: none; padding: 8px 0; width: 200px;} +.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-itemed>a{background: rgba(0,0,0,.3);} + +/* 移动端展开模式 */ +.layadmin-side-spread-sm .layui-layout-admin .layui-layout-left, +.layadmin-side-spread-sm .layadmin-pagetabs, +.layadmin-side-spread-sm .layui-layout-admin .layui-body, +.layadmin-side-spread-sm .layui-layout-admin .layui-footer{left: 0; transform: translate3d(220px, 0, 0); -webkit-transform: translate3d(220px, 0, 0);} +.layadmin-side-spread-sm .layui-layout-admin .layui-layout-right{transform: translate3d(220px, 0, 0); -webkit-transform: translate3d(220px, 0, 0);} +.layadmin-side-spread-sm .layui-side{transform: translate3d(0, 0, 0); -webkit-transform: translate3d(0, 0, 0);} +.layadmin-side-spread-sm .layadmin-body-shade{display: block; } + + +/* 页面标签 */ +.layadmin-pagetabs{height: 40px; line-height: 40px; padding: 0 80px 0 40px; /*border-bottom: 2px solid #292B34;*/ background-color: #fff; box-sizing: border-box; box-shadow: 0 1px 2px 0 rgba(0,0,0,.1);} +.layadmin-pagetabs .layadmin-tabs-control{position: absolute; top: 0; width: 40px; height: 100%; text-align: center; cursor: pointer; transition: all .3s; -webkit-transition: all .3s; box-sizing: border-box; border-left: 1px solid #f5f5f5;} +.layadmin-pagetabs .layadmin-tabs-control:hover{background-color: #f5f5f5;} +.layadmin-pagetabs .layui-icon-prev{left: 0; border-left: none; border-right: 1px solid #f5f5f5;} +.layadmin-pagetabs .layui-icon-next{right: 40px; right: 40px;} +.layadmin-pagetabs .layui-icon-down{right: 0;} +.layadmin-tabs-select.layui-nav{position: absolute; left: 0; top: 0; width: 100%; height: 100%; padding: 0; background: none;} +.layadmin-tabs-select.layui-nav .layui-nav-item{line-height: 40px;} +.layadmin-tabs-select.layui-nav .layui-nav-item>a{height: 40px;} +.layadmin-tabs-select.layui-nav .layui-nav-item a{color: #5F5F5F;} +.layadmin-tabs-select.layui-nav .layui-nav-child{top: 40px; left: auto; right: 0;} +.layadmin-tabs-select.layui-nav .layui-nav-child dd.layui-this, +.layadmin-tabs-select.layui-nav .layui-nav-child dd.layui-this a{background-color: #f2f2f2!important; color: #333;} +.layadmin-tabs-select.layui-nav .layui-nav-more, +.layadmin-tabs-select.layui-nav .layui-nav-bar{display: none;} + +.layadmin-pagetabs .layui-tab{margin: 0; overflow: hidden;} +.layadmin-pagetabs .layui-tab-title{height: 40px; border: none;} +.layadmin-pagetabs .layui-tab-title li{min-width: 0; line-height: 40px; max-width: 160px; text-overflow: ellipsis; padding-right: 40px; overflow: hidden; border-right: 1px solid #f5f5f5; vertical-align: top;} +.layadmin-pagetabs .layui-tab-title li:first-child{ padding-right: 15px;} +.layadmin-pagetabs .layui-tab-title li:first-child .layui-tab-close{display: none;} +.layadmin-pagetabs .layui-tab-title li .layui-tab-close{position: absolute; right: 8px; top: 50%; margin: -7px 0 0 0; width: 16px; height: 16px; line-height: 16px; border-radius: 50%; font-size: 12px;} +.layadmin-pagetabs .layui-tab-title li:after{content:''; position: absolute; top: 0; left: 0; width: 0; height: 2px; border-radius: 0; background-color: #292B34; transition: all .3s; -webkit-transition: all .3s;} +.layadmin-pagetabs .layui-tab-title li:hover:after{width: 100%;} +.layadmin-pagetabs .layui-tab-title li:hover, +.layadmin-pagetabs .layui-tab-title li.layui-this{color: #5FB878;} +.layadmin-pagetabs .layui-tab-title li.layui-this:after{width: 100%; border: none; height: 2px; background-color: #292B34;} + +/* 不开启页面标签时 */ +.layadmin-tabspage-none .layui-layout-admin .layui-header{border-bottom: none; box-shadow: 0 1px 2px 0 rgba(0,0,0,.05);} +.layadmin-tabspage-none .layui-layout-admin .layui-body{top: 50px;} +.layadmin-tabspage-none .layadmin-header{display: block;} +.layadmin-tabspage-none .layadmin-header .layui-breadcrumb{border-top: 1px solid #f5f5f5;} + +/* 底部固定区域 */ +.layui-layout-admin .layui-footer{padding: 10px 0; text-align: center;} + +/* 默认主题修饰 */ +.layui-layout-admin .layui-header{border-bottom: 1px solid #f5f5f5; box-sizing: border-box; background-color: #fff;} +.layui-layout-admin .layui-header a, +.layui-layout-admin .layui-header a cite{color: #333;} +.layui-layout-admin .layui-header a:hover{color: #000;} +.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-top-color: #5F5F5F} +.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color: transparent; border-bottom-color: #5F5F5F;} +.layui-layout-admin .layui-header .layui-nav .layui-this:after, +.layui-layout-admin .layui-header .layui-nav-bar{height: 2px; background-color: #20222A} +.layui-layout-admin .layui-logo{background-color: #20222A; box-shadow: 0 1px 2px 0 rgba(0,0,0,.15);} +.layui-layout-admin .layui-logo, +.layui-layout-admin .layui-logo a{color: #fff; color: rgba(255,255,255,.8)} +.layui-side-menu{box-shadow: 1px 0 2px 0 rgba(0,0,0,.05);} +.layui-layout-admin .layui-footer{box-shadow: 0 -1px 2px 0 rgba(0,0,0,.05);} + +.layui-side-menu, +.layadmin-setTheme-side{background-color: #20222A; color: #fff;} +.layadmin-setTheme-header{background-color: #fff;} + +.layui-layout-admin .layui-footer{background-color: #fff;} +.layui-tab-admin .layui-tab-title{background-color: #393D49; color: #fff;} + + +/* + + 格局 + +*/ + +.layui-fluid{padding: 15px;} +.layadmin-header{display: none; height: 50px; line-height: 50px; margin-bottom: 0; border-radius: 0;} +.layadmin-header .layui-breadcrumb{padding: 0 15px;} +.layui-card-header{position: relative;} +.layui-card-header .layui-icon{line-height: initial; position: absolute; right: 15px; top: 50%; margin-top: -7px;} +.layadmin-iframe{position: absolute; width: 100%; height: 100%; left: 0; top: 0; right: 0; bottom: 0;} + + +/* + + 控制台 + +*/ + + +/* 重置轮播样式 */ +.layadmin-carousel{height: 185px !important; background-color: #fff;} +.layadmin-carousel .layui-carousel-ind li{background-color: #e2e2e2;} +.layadmin-carousel .layui-carousel-ind li:hover{background-color: #c2c2c2;} +.layadmin-carousel .layui-carousel-ind li.layui-this{background-color: #999;} +.layadmin-carousel .layui-carousel, +.layadmin-carousel > *[carousel-item] > *{background-color: #fff;} +.layadmin-carousel .layui-col-space10{margin: 0;} +.layadmin-carousel .layui-carousel-ind{position: absolute; top: -41px; text-align: right;} +.layadmin-carousel .layui-carousel-ind ul{background: none;} + +/* 重置tab样式 */ +.layui-card .layui-tab-brief .layui-tab-title{height: 42px; border-bottom-color: #f5f5f5;} +.layui-card .layui-tab-brief .layui-tab-title li{margin: 0 15px; padding: 0; line-height: 42px;} +.layui-card .layui-tab-brief .layui-tab-title li.layui-this{color: #333;} +.layui-card .layui-tab-brief .layui-tab-title .layui-this:after{height: 43px;} +.layui-card .layui-tab-brief .layui-tab-content{padding: 15px;} +.layui-card .layui-table-view{margin: 0;} + +/* 快捷方式 */ +.layadmin-shortcut li{text-align: center;} +.layadmin-shortcut li .layui-icon{display: inline-block; width: 100%; height: 60px; line-height: 60px; text-align: center; border-radius: 2px; font-size: 30px; background-color: #F8F8F8; color: #333; transition: all .3s; -webkit-transition: all .3s;} +.layadmin-shortcut li cite{position: relative; top: 2px; display: block; color: #5F5F5F; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size: 14px;} +.layadmin-shortcut li:hover .layui-icon{background-color: #f2f2f2;} + +/* 待办事项 */ +.layadmin-backlog .layadmin-backlog-body{display: block; padding: 10px 15px; background-color: #f8f8f8; color: #999; border-radius: 2px; transition: all .3s; -webkit-transition: all .3s;} +.layadmin-backlog-body h3{padding-bottom: 10px; font-size: 12px;} +.layadmin-backlog-body p cite{font-style: normal; font-size: 30px; font-weight: 300; color: #009688;} +.layadmin-backlog-body:hover{background-color: #f2f2f2; color: #888;} + +/* 版本信息 */ +.layadmin-version .layui-table{padding: 6px 0;} +.layadmin-version .layui-table td, +.layadmin-version .layui-table th{line-height: 25px;} + +/* 数据概览 */ +.layadmin-dataview{height: 332px !important;} +.layadmin-dataview>*[carousel-item]:before{display: none;} +.layadmin-dataview>*[carousel-item]>div{height: 332px;} + +/* 控制台效果报告 */ +.layadmin-takerates{padding-top: 5px;} +.layadmin-takerates .layui-progress{margin: 50px 0 60px;} +.layadmin-takerates .layui-progress:last-child{margin-bottom: 10px;} +.layadmin-takerates .layui-progress h3{position: absolute; right: 0; top: -35px; color: #999; font-size: 14px;} +.layadmin-takerates .layui-progress-bar{text-align: left;} +.layadmin-takerates .layui-progress-text{top: -35px; line-height: 26px; font-size: 26px;} + +/* 产品动态 */ +.layadmin-news{height: 60px !important; padding: 5px 0;} +.layadmin-news a{display: block; line-height: 60px; text-align: center;} +.layadmin-news .layui-carousel-ind{height: 45px;} + +/* 文字列表 */ +.layadmin-list li{margin-bottom: 6px; padding-bottom: 6px; border-bottom-color: #f5f5f5; list-style-position: inside; list-style-type: disc;} +.layadmin-list li{text-overflow: ellipsis; overflow: hidden; white-space: nowrap;} +.layadmin-list li a{color: #5F5F5F;} +.layadmin-list li a:hover{color: #009688;} +.layadmin-list li:last-child{border: none; padding: 0; margin: 0;} + +/* 文本区域 */ +.layadmin-text p{margin-bottom: 10px; text-indent: 2em;} +.layadmin-text p:last-child{margin: 0;} +.layadmin-font-em{font-size: 13px; color: #758697;} + + + + +/******************************** + + 其它主页开始 + +*******************************/ + +/* 主页示例一 */ +/* 进行中的项目 */ +.layui-card-header .layui-a-tips{position: absolute; right: 15px; color: #01AAED;} +.layuiadmin-card-text{background-color: #f8f8f8; color: #777; padding: 24px;} +.layuiadmin-card-text .layui-text-top{padding-bottom: 10px;} +.layuiadmin-card-text .layui-text-top i{margin-right: 10px; font-size: 24px; color: #009688;} +.layuiadmin-card-text .layui-text-top a{line-height: 24px; font-size: 16px; vertical-align: top;} +.layuiadmin-card-text .layui-text-center{height: 44px; line-height: 22px; margin-bottom: 10px; overflow: hidden;} +.layuiadmin-card-text .layui-text-bottom{position: relative;} +.layuiadmin-card-text .layui-text-bottom a{color: #777; font-size: 12px; text-overflow: ellipsis; word-break: break-all;} +.layuiadmin-card-text .layui-text-bottom span{color: #CCC; font-size: 12px; position: absolute; right: 0;} +.layuiadmin-card-text a:hover, +.layuiadmin-card-link a:hover, +.layuiadmin-card-team li a:hover{color: #01AAED; transition: all 300ms;} + +/* 动态 */ +.layuiadmin-card-status{padding: 0 10px 10px 10px;} +.layuiadmin-card-status dd{padding: 15px 0; border-bottom: 1px solid #EEE; display: -webkit-flex; display: flex;} +.layuiadmin-card-status dd:last-child{border: none;} +.layuiadmin-card-status dd div.layui-status-img, +.layuiadmin-card-team .layui-team-img{width: 32px; height: 32px; border-radius: 50%; background-color: #009688; margin-right: 15px;} +.layuiadmin-card-status dd div.layui-status-img a{width: 100%; height: 100%; display: inline-block; text-align: center; line-height: 32px;} +.layuiadmin-card-status dd div.layui-status-img img, +.layuiadmin-card-team .layui-team-img img{width: 50%; height: 50%;} +.layuiadmin-card-status dd div a{color: #01AAED;} +.layuiadmin-card-status dd div span{color: #BBB;} + +/* 便捷导航 */ +.layuiadmin-card-link{padding-left: 10px; font-size: 0} +.layuiadmin-card-link a{display: inline-block; width: 25%; color: #5F5F5F; font-size: 14px; margin-bottom: 12px;} +.layuiadmin-card-link button{vertical-align: top;} +.layuiadmin-card-link button:hover{color: #009688;} + +/* 团队 */ +.layuiadmin-card-team li{padding: 10px 0 10px 10px;} +.layuiadmin-card-team .layui-team-img{display: inline-block; margin-right: 8px; width: 24px; height: 24px; text-align: center; line-height: 24px;} +.layuiadmin-card-team span{color: #777;} + + +/* 主页示例二 */ +.layuiadmin-badge{position: absolute; top: 50%; margin-top: -9px; right: 15px; color: #01AAED; } +.layuiadmin-card-list{padding: 15px;} +.layuiadmin-card-list p.layuiadmin-big-font{font-size: 36px; color: #5F5F5F; line-height: 36px; padding: 5px 0 10px; overflow: hidden; text-overflow: ellipsis; word-break: break-all; white-space: nowrap;} +.layuiadmin-card-list p.layuiadmin-normal-font{padding-bottom: 10px; font-size: 20px; color: #5F5F5F; line-height: 24px;} +.layuiadmin-span-color{font-size: 14px; position: absolute; right: 15px;} +.layuiadmin-span-color i{padding-left: 5px;} +.layuiadmin-btn-group{position: absolute; right: 15px;} + +.layuiadmin-card-status li{position: relative; padding: 10px 0; border-bottom: 1px solid #EEE;} +.layuiadmin-card-status li h3{padding-bottom: 5px; font-weight: 700;} +.layuiadmin-card-status li p{padding-bottom: 10px;} +.layuiadmin-card-status li>span{color: #999;} +.layuiadmin-home2-usernote .layuiadmin-reply{display: none; position: absolute; right: 0; bottom: 12px;} +.layuiadmin-home2-usernote li:hover .layuiadmin-reply{display: block;} + +.layuiadmin-page-table td span{color: #2F4056;} +.layuiadmin-page-table td span.first{color: #FF5722;} +.layuiadmin-page-table td span.second{color: #FFB800;} +.layuiadmin-page-table td span.third{color: #5FB878;} + + +/****** 其它主页结束 ******/ + + + + +/* + + 应用 + +*/ + + +/* 消息中心 */ +.layuiAdmin-msg-detail h1{font-size: 16px;} +.layuiAdmin-msg-detail .layui-card-header{height: auto; line-height: 30px; padding: 15px;} +.layuiAdmin-msg-detail .layui-card-header span{padding: 0 5px; color: #999;} +.layuiAdmin-msg-detail .layui-card-header span:first-child{padding-left: 0;} +.layuiAdmin-msg-detail .layui-card-body{padding: 15px;} + +/* 文章列表 */ +.layuiadmin-content-bread{padding-bottom: 20px;} + +/* 进度条样式 */ +.layuiadmin-order-progress{position: relative; top: 12px;} + + + + +/* + + 系统 + +*/ + + +/* 头部图标重置 */ +.layui-card-header.layuiadmin-card-header-auto{padding-top: 15px; padding-bottom: 15px; height: auto;} +.layuiadmin-card-header-auto i.layuiadmin-button-btn{position: relative; right: 0; top: 0; vertical-align: middle;} +.layuiadmin-card-header-auto .layui-form-item:last-child{margin-bottom: 0;} + + +/* 主题设置 */ +.layadmin-setTheme{padding: 15px; overflow-x: hidden;} +.layadmin-setTheme>h5{padding: 20px 0 10px; color: #000;} +.layadmin-setTheme>h5:first-child{padding-top: 0;} +.layadmin-setTheme-color{width: 330px; font-size: 0;} +.layadmin-setTheme-color li{position: relative; display: inline-block; vertical-align: top; width: 80px; height: 50px; margin: 0 15px 15px 0; background-color: #f2f2f2; cursor: pointer; font-size: 12px; color: #5F5F5F;} +.layadmin-setTheme-color li:after{content: ''; position: absolute; z-index: 20; top: 50%; left: 50%; width: 1px; height: 0; border: 1px solid #f2f2f2; transition: all .3s; -webkit-transition: all .3s; opacity: 0;} +.layadmin-setTheme-color li.layui-this:after, +.layadmin-setTheme-color li:hover:after{width: 100%; height: 100%; padding: 4px; top: -5px; left: -5px; border-color: #5FB878; opacity: 1;} + +.layadmin-setTheme-header{position: relative; z-index: 10; height: 10px; border-top: 1px solid #f2f2f2; border-right: 1px solid #f2f2f2;} +.layadmin-setTheme-side{position: absolute; left: 0; top: 0; width: 20px; height: 100%; z-index: 11; box-shadow: 1px 0 2px 0 rgba(0,0,0,.05);} +.layadmin-setTheme-logo{position: absolute; left: 0; top: 0; width: 100%; height: 10px; box-shadow: 0 1px 2px 0 rgba(0,0,0,.15);} +.layadmin-form-right{text-align: right;} + + +/* 关于 */ +.layadmin-about p{margin-bottom: 10px;} + +/* 菜单列表 */ +.layadmin-menu-list .layui-card-header{height: 50px; line-height: 50px; font-size: 16px;} +.layadmin-menu-list .layui-card-header:active{background-color: #f2f2f2;} +.layadmin-menu-list .layui-card-header .layui-icon{position: relative; top: 1px; left: 0; display: inline-block; margin: 0 10px 0; font-size: 18px;} + + +/* 动画 */ +@-webkit-keyframes layui-rl{ /* 从右往左滑入 */ + from {-webkit-transform: translate3d(100%, 0, 0);} + to {-webkit-transform: translate3d(0, 0, 0);} +} +@keyframes layui-rl{ + from {transform: translate3d(100%, 0, 0);} + to {transform: translate3d(0, 0, 0);} +} +.layui-anim-rl{-webkit-animation-name: layui-rl; animation-name: layui-rl;} + +@-webkit-keyframes layui-lr{ /* 从右往左滑入 */ + from {-webkit-transform: translate3d(0 0, 0); opacity: 1;} + to {-webkit-transform: translate3d(100%, 0, 0); opacity: 1;} +} +@keyframes layui-lr{ + from {transform: translate3d(0, 0, 0);} + to {transform: translate3d(100%, 0, 0);} +} +.layui-anim-lr{-webkit-animation-name: layui-lr; animation-name: layui-lr;} + +.layui-anim-rl.layer-anim-close{-webkit-animation-name: layui-lr; animation-name: layui-lr;} + + +/* 提示页 */ +.layadmin-tips{margin-top: 30px; text-align: center;} +.layadmin-tips .layui-icon[face]{display: inline-block; font-size: 300px; color: #393D49;} +.layadmin-tips .layui-text{width: 500px; margin: 30px auto; padding-top: 20px; border-top: 5px solid #009688; font-size: 16px;} +.layadmin-tips h1{font-size: 100px; line-height: 100px; color: #009688;} +.layadmin-tips .layui-text .layui-anim{display: inline-block;} + + +/* + + 响应式补充 + +*/ + +@media screen and (max-width: 768px) { + + /* 产品清单模板 */ + .layadmin-panel-selection{margin: 0; width: auto;} + + /* 导航 */ + .layui-body .layui-nav .layui-nav-item{display: block;} + + /* 主体容器 */ + .layui-layout-admin .layui-body .layadmin-tabsbody-item{-webkit-overflow-scrolling: touch; overflow: auto;} +} + + + diff --git a/public/panel/ui/src/css/login.css b/public/panel/ui/src/css/login.css index 9634b94e..d7ff6b9e 100644 --- a/public/panel/ui/src/css/login.css +++ b/public/panel/ui/src/css/login.css @@ -1,50 +1,50 @@ -/** - * admin.login.css - */ - -html,body,#LAY_app{height:100%;} -.layui-layout-body{overflow: auto;} - -#LAY-user-login, -.layadmin-user-display-show{display: block !important;} -.layadmin-user-login{position: relative; left: 0; top: 0; padding: 110px 0; min-height: 100%; box-sizing: border-box;} -.layadmin-user-login-main{width: 375px; margin: 0 auto; box-sizing: border-box;} -.layadmin-user-login-box{padding: 20px;} -.layadmin-user-login-header{text-align: center;} -.layadmin-user-login-header h2{margin-bottom: 10px; font-weight: 300; font-size: 30px; color: #000;} -.layadmin-user-login-header p{font-weight: 300; color: #999;} - -.layadmin-user-login-body .layui-form-item{position: relative;} -.layadmin-user-login-icon{position: absolute; left: 1px; top: 1px; width: 38px; line-height: 36px; text-align: center; color: #d2d2d2;} -.layadmin-user-login-body .layui-form-item .layui-input{padding-left: 38px;} -.layadmin-user-login-codeimg{max-height: 38px; width: 100%; cursor: pointer; box-sizing: border-box;} - -.layadmin-user-login-other{position: relative; font-size: 0; line-height: 38px; padding-top: 20px;} -.layadmin-user-login-other>*{display: inline-block; vertical-align: middle; margin-right: 10px; font-size: 14px;} -.layadmin-user-login-other .layui-icon{position: relative; top: 2px; font-size: 26px;} -.layadmin-user-login-other a:hover{opacity: 0.8;} - -.layadmin-user-jump-change{float: right;} - -.layadmin-user-login-footer{position: absolute; left: 0; bottom: 0; width: 100%; line-height: 30px; padding: 20px; text-align: center; box-sizing: border-box; color: rgba(0,0,0,.5)} -.layadmin-user-login-footer span{padding: 0 5px;} -.layadmin-user-login-footer a{padding: 0 5px; color: rgba(0,0,0,.5);} -.layadmin-user-login-footer a:hover{color: rgba(0,0,0,1);} - -/* 有背景图时 */ -.layadmin-user-login-main[bgimg]{background-color: #fff; box-shadow: 0 0 5px rgba(0,0,0,0.05);} - -/* 主题背景 */ -.ladmin-user-login-theme{position: fixed; bottom: 0; left: 0; width: 100%; text-align: center;} -.ladmin-user-login-theme ul{display: inline-block; padding: 5px; background-color: #fff;} -.ladmin-user-login-theme ul li{display: inline-block; vertical-align: top; width: 64px; height: 43px; cursor: pointer; transition: all .3s; -webkit-transition: all .3s; background-color: #f2f2f2;} -.ladmin-user-login-theme ul li:hover{opacity: 0.9} - -@media screen and (max-width: 768px) { - .layadmin-user-login{padding-top: 60px;} - .layadmin-user-login-main{width: 300px;} - .layadmin-user-login-box{padding: 10px;} -} - - - +/** + * admin.login.css + */ + +html,body,#LAY_app{height:100%;} +.layui-layout-body{overflow: auto;} + +#LAY-user-login, +.layadmin-user-display-show{display: block !important;} +.layadmin-user-login{position: relative; left: 0; top: 0; padding: 110px 0; min-height: 100%; box-sizing: border-box;} +.layadmin-user-login-main{width: 375px; margin: 0 auto; box-sizing: border-box;} +.layadmin-user-login-box{padding: 20px;} +.layadmin-user-login-header{text-align: center;} +.layadmin-user-login-header h2{margin-bottom: 10px; font-weight: 300; font-size: 30px; color: #000;} +.layadmin-user-login-header p{font-weight: 300; color: #999;} + +.layadmin-user-login-body .layui-form-item{position: relative;} +.layadmin-user-login-icon{position: absolute; left: 1px; top: 1px; width: 38px; line-height: 36px; text-align: center; color: #d2d2d2;} +.layadmin-user-login-body .layui-form-item .layui-input{padding-left: 38px;} +.layadmin-user-login-codeimg{max-height: 38px; width: 100%; cursor: pointer; box-sizing: border-box;} + +.layadmin-user-login-other{position: relative; font-size: 0; line-height: 38px; padding-top: 20px;} +.layadmin-user-login-other>*{display: inline-block; vertical-align: middle; margin-right: 10px; font-size: 14px;} +.layadmin-user-login-other .layui-icon{position: relative; top: 2px; font-size: 26px;} +.layadmin-user-login-other a:hover{opacity: 0.8;} + +.layadmin-user-jump-change{float: right;} + +.layadmin-user-login-footer{position: absolute; left: 0; bottom: 0; width: 100%; line-height: 30px; padding: 20px; text-align: center; box-sizing: border-box; color: rgba(0,0,0,.5)} +.layadmin-user-login-footer span{padding: 0 5px;} +.layadmin-user-login-footer a{padding: 0 5px; color: rgba(0,0,0,.5);} +.layadmin-user-login-footer a:hover{color: rgba(0,0,0,1);} + +/* 有背景图时 */ +.layadmin-user-login-main[bgimg]{background-color: #fff; box-shadow: 0 0 5px rgba(0,0,0,0.05);} + +/* 主题背景 */ +.ladmin-user-login-theme{position: fixed; bottom: 0; left: 0; width: 100%; text-align: center;} +.ladmin-user-login-theme ul{display: inline-block; padding: 5px; background-color: #fff;} +.ladmin-user-login-theme ul li{display: inline-block; vertical-align: top; width: 64px; height: 43px; cursor: pointer; transition: all .3s; -webkit-transition: all .3s; background-color: #f2f2f2;} +.ladmin-user-login-theme ul li:hover{opacity: 0.9} + +@media screen and (max-width: 768px) { + .layadmin-user-login{padding-top: 60px;} + .layadmin-user-login-main{width: 300px;} + .layadmin-user-login-box{padding: 10px;} +} + + + diff --git a/public/panel/ui/src/modules/admin.js b/public/panel/ui/src/modules/admin.js index 1fc16b2f..084c77ad 100644 --- a/public/panel/ui/src/modules/admin.js +++ b/public/panel/ui/src/modules/admin.js @@ -1,867 +1,867 @@ -/** - * 界面核心模块 - */ - -layui.define('view', function(exports){ - var $ = layui.jquery - ,laytpl = layui.laytpl - ,element = layui.element - ,table = layui.table - ,upload = layui.upload - ,setter = layui.setter - ,view = layui.view - ,device = layui.device() - - ,$win = $(window), $body = $('body') - ,container = $('#'+ setter.container) - - ,SHOW = 'layui-show', HIDE = 'layui-hide', THIS = 'layui-this', DISABLED = 'layui-disabled', TEMP = 'template' - ,APP_BODY = '#LAY_app_body', APP_FLEXIBLE = 'LAY_app_flexible' - ,FILTER_TAB_TBAS = 'layadmin-layout-tabs' - ,APP_SPREAD_SM = 'layadmin-side-spread-sm', TABS_BODY = 'layadmin-tabsbody-item' - ,ICON_SHRINK = 'layui-icon-shrink-right', ICON_SPREAD = 'layui-icon-spread-left' - ,SIDE_SHRINK = 'layadmin-side-shrink', SIDE_MENU = 'LAY-system-side-menu' - - //通用方法 - ,admin = { - v: '1.9.0' - ,mode: 'spa' - - //数据的异步请求 - ,req: view.req - - //清除本地 token,并跳转到登入页 - ,exit: view.exit - - //xss 转义 - ,escape: function(html){ - return String(html || '').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&') - .replace(//g, '>') - .replace(/'/g, ''').replace(/"/g, '"'); - } - - //事件 - ,on: function(events, callback){ - return layui.onevent.call(this, setter.MOD_NAME, events, callback); - } - - //弹出面板 - ,popup: view.popup - - //右侧面板 - ,popupRight: function(options){ - //layer.close(admin.popup.index); - return admin.popup.index = layer.open($.extend({ - type: 1 - ,id: 'LAY_adminPopupR' - ,anim: -1 - ,title: false - ,closeBtn: false - ,offset: 'r' - ,shade: 0.1 - ,shadeClose: true - ,skin: 'layui-anim layui-anim-rl layui-layer-adminRight' - ,area: '300px' - }, options)); - } - - //发送验证码 - ,sendAuthCode: function(options){ - options = $.extend({ - seconds: 60 - ,elemPhone: '#LAY_phone' - ,elemVercode: '#LAY_vercode' - }, options); - - var seconds = options.seconds - ,token = null - ,timer, countDown = function(loop){ - var btn = $(options.elem) - seconds--; - if(seconds < 0){ - btn.removeClass(DISABLED).html('获取验证码'); - seconds = options.seconds; - clearInterval(timer); - } else { - btn.addClass(DISABLED).html(seconds + '秒后重获'); - } - - if(!loop){ - timer = setInterval(function(){ - countDown(true); - }, 1000); - } - }; - - $body.off('click', options.elem).on('click', options.elem, function(){ - options.elemPhone = $(options.elemPhone); - options.elemVercode = $(options.elemVercode); - - var elemPhone = options.elemPhone - ,value = elemPhone.val(); - - if(seconds !== options.seconds || $(this).hasClass(DISABLED)) return; - - if(!/^1\d{10}$/.test(value)){ - elemPhone.focus(); - return layer.msg('请输入正确的手机号') - }; - - if(typeof options.ajax === 'object'){ - var success = options.ajax.success; - delete options.ajax.success; - } - - admin.req($.extend(true, { - url: '/auth/code' - ,type: 'get' - ,data: { - phone: value - } - ,success: function(res){ - layer.msg('验证码已发送至你的手机,请注意查收', { - icon: 1 - ,shade: 0 - }); - options.elemVercode.focus(); - countDown(); - success && success(res); - } - }, options.ajax)); - }); - } - - //屏幕类型 - ,screen: function(){ - var width = $win.width(); - if(width > 1200){ - return 3; //大屏幕 - } else if(width > 992){ - return 2; //中屏幕 - } else if(width > 768){ - return 1; //小屏幕 - } else { - return 0; //超小屏幕 - } - } - - //侧边伸缩 - ,sideFlexible: function(status){ - var app = container - ,iconElem = $('#'+ APP_FLEXIBLE) - ,screen = admin.screen(); - - //设置状态,PC:默认展开、移动:默认收缩 - if(status === 'spread'){ - //切换到展开状态的 icon,箭头:← - iconElem.removeClass(ICON_SPREAD).addClass(ICON_SHRINK); - - //移动:从左到右位移;PC:清除多余选择器恢复默认 - if(screen < 2){ - app.addClass(APP_SPREAD_SM); - } else { - app.removeClass(APP_SPREAD_SM); - } - - app.removeClass(SIDE_SHRINK) - } else { - //切换到搜索状态的 icon,箭头:→ - iconElem.removeClass(ICON_SHRINK).addClass(ICON_SPREAD); - - //移动:清除多余选择器恢复默认;PC:从右往左收缩 - if(screen < 2){ - app.removeClass(SIDE_SHRINK); - } else { - app.addClass(SIDE_SHRINK); - } - - app.removeClass(APP_SPREAD_SM) - } - - layui.event.call(this, setter.MOD_NAME, 'side({*})', { - status: status - }); - } - - //重置主体区域表格尺寸 - ,resizeTable: function(delay){ - var that = this, runResizeTable = function(){ - that.tabsBody(admin.tabsPage.index).find('.layui-table-view').each(function(){ - var tableID = $(this).attr('lay-id'); - layui.table.resize(tableID); - }); - }; - if(!layui.table) return; - delay ? setTimeout(runResizeTable, delay) : runResizeTable(); - } - - //主题设置 - ,theme: function(options){ - var theme = setter.theme - ,local = layui.data(setter.tableName) - ,id = 'LAY_layadmin_theme' - ,style = document.createElement('style') - ,styleText = laytpl([ - //主题色 - '.layui-side-menu,' - ,'.layui-layer-admin .layui-layer-title,' - ,'.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-item>.layui-nav-child' - ,'{background-color:{{d.color.main}} !important;}' - - //背景选中色 - ,'.layadmin-pagetabs .layui-tab-title li:after,' - ,'.layadmin-pagetabs .layui-tab-title li.layui-this:after,' - ,'.layui-nav-tree .layui-this,' - ,'.layui-nav-tree .layui-this>a,' - ,'.layui-nav-tree .layui-nav-child dd.layui-this,' - ,'.layui-nav-tree .layui-nav-child dd.layui-this a,' - ,'.layui-nav-tree .layui-nav-bar' - ,'{background-color:{{d.color.selected}} !important;}' - - //logo - ,'.layui-layout-admin .layui-logo{background-color:{{d.color.logo || d.color.main}} !important;}' - - //文字选中色 - ,'.layadmin-pagetabs .layui-tab-title li:hover,' - ,'.layadmin-pagetabs .layui-tab-title li.layui-this' - ,'{color: {{d.color.selected}} !important;}' - - //头部色 - ,'{{# if(d.color.header){ }}' - ,'.layui-layout-admin .layui-header{background-color:{{ d.color.header }};}' - ,'.layui-layout-admin .layui-header a,' - ,'.layui-layout-admin .layui-header a cite{color: #f8f8f8;}' - ,'.layui-layout-admin .layui-header a:hover{color: #fff;}' - ,'.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-top-color: #fbfbfb;}' - ,'.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color: transparent; border-bottom-color: #fbfbfb;}' - ,'.layui-layout-admin .layui-header .layui-nav .layui-this:after, .layui-layout-admin .layui-header .layui-nav-bar{background-color: #fff; background-color: rgba(255,255,255,.5);}' - ,'.layadmin-pagetabs .layui-tab-title li:after{display: none;}' - ,'{{# } }}' - ].join('')).render(options = $.extend({}, local.theme, options)) - ,styleElem = document.getElementById(id); - - //添加主题样式 - if('styleSheet' in style){ - style.setAttribute('type', 'text/css'); - style.styleSheet.cssText = styleText; - } else { - style.innerHTML = styleText; - } - style.id = id; - - styleElem && $body[0].removeChild(styleElem); - $body[0].appendChild(style); - $body.attr('layadmin-themealias', options.color.alias); - - //本地存储记录 - local.theme = local.theme || {}; - layui.each(options, function(key, value){ - local.theme[key] = value; - }); - layui.data(setter.tableName, { - key: 'theme' - ,value: local.theme - }); - } - - //初始化主题 - ,initTheme: function(index){ - var theme = setter.theme; - index = index || 0; - if(theme.color[index]){ - theme.color[index].index = index; - admin.theme({ - color: theme.color[index] - }); - } - } - - //记录最近一次点击的页面标签数据 - ,tabsPage: {} - - //获取标签页的头元素 - ,tabsHeader: function(index){ - return $('#LAY_app_tabsheader').children('li').eq(index || 0); - } - - //获取页面标签主体元素 - ,tabsBody: function(index){ - return $(APP_BODY).find('.'+ TABS_BODY).eq(index || 0); - } - - //切换页面标签主体 - ,tabsBodyChange: function(index){ - admin.tabsHeader(index).attr('lay-attr', layui.router().href); - admin.tabsBody(index).addClass(SHOW).siblings().removeClass(SHOW); - events.rollPage('auto', index); - } - - //resize事件管理 - ,resize: function(fn){ - var router = layui.router() - ,key = router.path.join('-'); - - if(admin.resizeFn[key]){ - $win.off('resize', admin.resizeFn[key]); - delete admin.resizeFn[key]; - } - - if(fn === 'off') return; //如果是清除 resize 事件,则终止往下执行 - - fn(), admin.resizeFn[key] = fn; - $win.on('resize', admin.resizeFn[key]); - } - ,resizeFn: {} - ,runResize: function(){ - var router = layui.router() - ,key = router.path.join('-'); - admin.resizeFn[key] && admin.resizeFn[key](); - } - ,delResize: function(){ - this.resize('off'); - } - - //关闭当前 pageTabs - ,closeThisTabs: function(){ - if(!admin.tabsPage.index) return; - $(TABS_HEADER).eq(admin.tabsPage.index).find('.layui-tab-close').trigger('click'); - } - - //全屏 - ,fullScreen: function(){ - var ele = document.documentElement - ,reqFullScreen = ele.requestFullScreen || ele.webkitRequestFullScreen - || ele.mozRequestFullScreen || ele.msRequestFullscreen; - if(typeof reqFullScreen !== 'undefined' && reqFullScreen) { - reqFullScreen.call(ele); - }; - } - - //退出全屏 - ,exitScreen: function(){ - var ele = document.documentElement - if (document.exitFullscreen) { - document.exitFullscreen(); - } else if (document.mozCancelFullScreen) { - document.mozCancelFullScreen(); - } else if (document.webkitCancelFullScreen) { - document.webkitCancelFullScreen(); - } else if (document.msExitFullscreen) { - document.msExitFullscreen(); - } - } - - //纠正单页路由格式 - ,correctRouter: function(href){ - if(!/^\//.test(href)) href = '/' + href; - - //纠正首尾 - return href.replace(/^(\/+)/, '/') - .replace(new RegExp('\/' + setter.entry + '$'), '/'); //过滤路由最后的默认视图文件名(如:index) - } - - //…… - }; - - //事件 - var events = admin.events = { - //伸缩 - flexible: function(othis){ - var iconElem = othis.find('#'+ APP_FLEXIBLE) - ,isSpread = iconElem.hasClass(ICON_SPREAD); - admin.sideFlexible(isSpread ? 'spread' : null); //控制伸缩 - admin.resizeTable(350); - } - - //刷新 - ,refresh: function(){ - admin.render(); - } - - //输入框搜索 - ,serach: function(othis){ - othis.off('keypress').on('keypress',function(e){ - if(!this.value.replace(/\s/g, '')) return; - //回车跳转 - if(e.keyCode === 13){ - var href = othis.attr('lay-action') - ,text = othis.attr('lay-text') || '搜索'; - - href = href + this.value; - text = text + ' '+ admin.escape(this.value) +''; - - //打开标签页 - location.hash = admin.correctRouter(href) - - //如果搜索关键词已经打开,则刷新页面即可 - events.serach.keys || (events.serach.keys = {}); - events.serach.keys[admin.tabsPage.index] = this.value; - if(this.value === events.serach.keys[admin.tabsPage.index]){ - events.refresh(othis); - } - - //清空输入框 - this.value = ''; - } - }); - } - - //点击消息 - ,message: function(othis){ - othis.find('.layui-badge-dot').remove(); - } - - //弹出主题面板 - ,theme: function(){ - admin.popupRight({ - id: 'LAY_adminPopupTheme' - ,success: function(){ - view(this.id).render('ui/theme') - } - }); - } - - //便签 - ,note: function(othis){ - var mobile = admin.screen() < 2 - ,note = layui.data(setter.tableName).note; - - events.note.index = admin.popup({ - title: '便签' - ,shade: 0 - ,offset: [ - '41px' - ,(mobile ? null : (othis.offset().left - 250) + 'px') - ] - ,anim: -1 - ,id: 'LAY_adminNote' - ,skin: 'layadmin-note layui-anim layui-anim-upbit' - ,content: '' - ,resize: false - ,success: function(layero, index){ - var textarea = layero.find('textarea') - ,value = note === undefined ? '便签中的内容会存储在本地,这样即便你关掉了浏览器,在下次打开时,依然会读取到上一次的记录。是个非常小巧实用的本地备忘录' : note; - - textarea.val(value).focus().on('keyup', function(){ - layui.data(setter.tableName, { - key: 'note' - ,value: this.value - }); - }); - } - }) - } - - //全屏 - ,fullscreen: function(othis){ - var SCREEN_FULL = 'layui-icon-screen-full' - ,SCREEN_REST = 'layui-icon-screen-restore' - ,iconElem = othis.children("i"); - - if(iconElem.hasClass(SCREEN_FULL)){ - admin.fullScreen(); - iconElem.addClass(SCREEN_REST).removeClass(SCREEN_FULL); - } else { - admin.exitScreen(); - iconElem.addClass(SCREEN_FULL).removeClass(SCREEN_REST); - } - } - - //弹出关于面板 - ,about: function(){ - admin.popupRight({ - id: 'LAY_adminPopupAbout' - ,success: function(){ - view(this.id).render('ui/about') - } - }); - } - - //弹出更多面板 - ,more: function(){ - admin.popupRight({ - id: 'LAY_adminPopupMore' - ,success: function(){ - view(this.id).render('ui/more') - } - }); - } - - //返回上一页 - ,back: function(){ - history.back(); - } - - //主题设置 - ,setTheme: function(othis){ - var index = othis.data('index') - ,nextIndex = othis.siblings('.layui-this').data('index'); - - if(othis.hasClass(THIS)) return; - - othis.addClass(THIS).siblings('.layui-this').removeClass(THIS); - admin.initTheme(index); - } - - //左右滚动页面标签 - ,rollPage: function(type, index){ - var tabsHeader = $('#LAY_app_tabsheader') - ,liItem = tabsHeader.children('li') - ,scrollWidth = tabsHeader.prop('scrollWidth') - ,outerWidth = tabsHeader.outerWidth() - ,tabsLeft = parseFloat(tabsHeader.css('left')); - - //右左往右 - if(type === 'left'){ - if(!tabsLeft && tabsLeft <=0) return; - - //当前的left减去可视宽度,用于与上一轮的页标比较 - var prefLeft = -tabsLeft - outerWidth; - - liItem.each(function(index, item){ - var li = $(item) - ,left = li.position().left; - - if(left >= prefLeft){ - tabsHeader.css('left', -left); - return false; - } - }); - } else if(type === 'auto'){ //自动滚动 - (function(){ - var thisLi = liItem.eq(index), thisLeft; - - if(!thisLi[0]) return; - thisLeft = thisLi.position().left; - - //当目标标签在可视区域左侧时 - if(thisLeft < -tabsLeft){ - return tabsHeader.css('left', -thisLeft); - } - - //当目标标签在可视区域右侧时 - if(thisLeft + thisLi.outerWidth() >= outerWidth - tabsLeft){ - var subLeft = thisLeft + thisLi.outerWidth() - (outerWidth - tabsLeft); - liItem.each(function(i, item){ - var li = $(item) - ,left = li.position().left; - - //从当前可视区域的最左第二个节点遍历,如果减去最左节点的差 > 目标在右侧不可见的宽度,则将该节点放置可视区域最左 - if(left + tabsLeft > 0){ - if(left - tabsLeft > subLeft){ - tabsHeader.css('left', -left); - return false; - } - } - }); - } - }()); - } else { - //默认向左滚动 - liItem.each(function(i, item){ - var li = $(item) - ,left = li.position().left; - - if(left + li.outerWidth() >= outerWidth - tabsLeft){ - tabsHeader.css('left', -left); - return false; - } - }); - } - } - - //向右滚动页面标签 - ,leftPage: function(){ - events.rollPage('left'); - } - - //向左滚动页面标签 - ,rightPage: function(){ - events.rollPage(); - } - - //关闭当前标签页 - ,closeThisTabs: function(){ - admin.closeThisTabs(); - } - - //关闭其它标签页 - ,closeOtherTabs: function(type){ - var TABS_REMOVE = 'LAY-system-pagetabs-remove'; - if(type === 'all'){ - $(TABS_HEADER+ ':gt(0)').remove(); - $(APP_BODY).find('.'+ TABS_BODY+ ':gt(0)').remove(); - } else { - $(TABS_HEADER).each(function(index, item){ - if(index && index != admin.tabsPage.index){ - $(item).addClass(TABS_REMOVE); - admin.tabsBody(index).addClass(TABS_REMOVE); - } - }); - $('.'+ TABS_REMOVE).remove(); - } - } - - //关闭全部标签页 - ,closeAllTabs: function(){ - events.closeOtherTabs('all'); - location.hash = ''; - } - - //遮罩 - ,shade: function(){ - admin.sideFlexible(); - } - }; - - //初始 - !function(){ - //主题初始化,本地主题记录优先,其次为 initColorIndex - var local = layui.data(setter.tableName); - if(local.theme){ - admin.theme(local.theme); - } else if(setter.theme){ - admin.initTheme(setter.theme.initColorIndex); - } - - //禁止水平滚动 - $body.addClass('layui-layout-body'); - - //移动端强制不开启页面标签功能 - if(admin.screen() < 1){ - delete setter.pageTabs; - } - - //不开启页面标签时 - if(!setter.pageTabs){ - container.addClass('layadmin-tabspage-none'); - } - - //低版本IE提示 - if(device.ie && device.ie < 10){ - view.error('IE'+ device.ie + '下访问可能不佳,推荐使用:Chrome / Firefox / Edge 等高级浏览器', { - offset: 'auto' - ,id: 'LAY_errorIE' - }); - } - - }(); - - //admin.prevRouter = {}; //上一个路由 - - // hash 改变侧边状态 - admin.on('hash(side)', function(router){ - var path = router.path, getData = function(item){ - return { - list: item.children('.layui-nav-child') - ,name: item.data('name') - ,jump: item.data('jump') - } - } - ,sideMenu = $('#'+ SIDE_MENU) - ,SIDE_NAV_ITEMD = 'layui-nav-itemed' - - //捕获对应菜单 - ,matchMenu = function(list){ - var pathURL = admin.correctRouter(path.join('/')); - list.each(function(index1, item1){ - var othis1 = $(item1) - ,data1 = getData(othis1) - ,listChildren1 = data1.list.children('dd') - ,matched1 = path[0] == data1.name || (index1 === 0 && !path[0]) - || (data1.jump && pathURL == admin.correctRouter(data1.jump)); - - listChildren1.each(function(index2, item2){ - var othis2 = $(item2) - ,data2 = getData(othis2) - ,listChildren2 = data2.list.children('dd') - ,matched2 = (path[0] == data1.name && path[1] == data2.name) - || (data2.jump && pathURL == admin.correctRouter(data2.jump)); - - listChildren2.each(function(index3, item3){ - var othis3 = $(item3) - ,data3 = getData(othis3) - ,matched3 = (path[0] == data1.name && path[1] == data2.name && path[2] == data3.name) - || (data3.jump && pathURL == admin.correctRouter(data3.jump)) - - if(matched3){ - var selected = data3.list[0] ? SIDE_NAV_ITEMD : THIS; - othis3.addClass(selected).siblings().removeClass(selected); //标记选择器 - return false; - } - - }); - - if(matched2){ - var selected = data2.list[0] ? SIDE_NAV_ITEMD : THIS; - othis2.addClass(selected).siblings().removeClass(selected); //标记选择器 - return false - } - - }); - - if(matched1){ - var selected = data1.list[0] ? SIDE_NAV_ITEMD : THIS; - othis1.addClass(selected).siblings().removeClass(selected); //标记选择器 - return false; - } - - }); - } - - //重置状态 - sideMenu.find('.'+ THIS).removeClass(THIS); - - //移动端点击菜单时自动收缩 - if(admin.screen() < 2) admin.sideFlexible(); - - //开始捕获 - matchMenu(sideMenu.children('li')); - }); - - //侧边导航点击事件 - element.on('nav(layadmin-system-side-menu)', function(elem){ - if(elem.siblings('.layui-nav-child')[0] && container.hasClass(SIDE_SHRINK)){ - admin.sideFlexible('spread'); - layer.close(elem.data('index')); - }; - admin.tabsPage.type = 'nav'; - }); - - //选项卡的更多操作 - element.on('nav(layadmin-pagetabs-nav)', function(elem){ - var dd = elem.parent(); - dd.removeClass(THIS); - dd.parent().removeClass(SHOW); - }); - - //同步路由 - var setThisRouter = function(othis){ - var layid = othis.attr('lay-id') - ,attr = othis.attr('lay-attr') - ,index = othis.index(); - - location.hash = layid === setter.entry ? '/' : (attr || '/'); - admin.tabsBodyChange(index); - } - ,TABS_HEADER = '#LAY_app_tabsheader>li'; - - //页面标签点击 - $body.on('click', TABS_HEADER, function(){ - var othis = $(this) - ,index = othis.index(); - - admin.tabsPage.type = 'tab'; - admin.tabsPage.index = index; - - //如果是iframe类型的标签页 - if(othis.attr('lay-attr') === 'iframe'){ - return admin.tabsBodyChange(index); - }; - - - setThisRouter(othis); //同步路由 - admin.runResize(); //执行resize事件,如果存在的话 - admin.resizeTable(); //重置当前主体区域的表格尺寸 - }); - - // tabspage 删除 - element.on('tabDelete(layadmin-layout-tabs)', function(obj){ - var othis = $(TABS_HEADER+ '.layui-this'); - - obj.index && admin.tabsBody(obj.index).remove(); - setThisRouter(othis); - - //移除resize事件 - admin.delResize(); - }); - - //页面跳转 - $body.on('click', '*[lay-href]', function(){ - var othis = $(this) - ,href = othis.attr('lay-href') - ,router = layui.router(); - - admin.tabsPage.elem = othis; - //admin.prevRouter[router.path[0]] = router.href; //记录上一次各菜单的路由信息 - - //执行跳转 - location.hash = admin.correctRouter(href); - - //如果为当前页,则执行刷新 - if(admin.correctRouter(href) === router.href){ - admin.events.refresh(); - } - }); - - //点击事件 - $body.on('click', '*[layadmin-event]', function(){ - var othis = $(this) - ,attrEvent = othis.attr('layadmin-event'); - events[attrEvent] && events[attrEvent].call(this, othis); - }); - - //tips - $body.on('mouseenter', '*[lay-tips]', function(){ - var othis = $(this); - - if(othis.parent().hasClass('layui-nav-item') && !container.hasClass(SIDE_SHRINK)) return; - - var tips = othis.attr('lay-tips') - ,offset = othis.attr('lay-offset') - ,direction = othis.attr('lay-direction') - ,index = layer.tips(tips, this, { - tips: direction || 1 - ,time: -1 - ,success: function(layero, index){ - if(offset){ - layero.css('margin-left', offset + 'px'); - } - } - }); - othis.data('index', index); - }).on('mouseleave', '*[lay-tips]', function(){ - layer.close($(this).data('index')); - }); - - //窗口resize事件 - var resizeSystem = layui.data.resizeSystem = function(){ - //layer.close(events.note.index); - layer.closeAll('tips'); - - if(!resizeSystem.lock){ - setTimeout(function(){ - admin.sideFlexible(admin.screen() < 2 ? '' : 'spread'); - delete resizeSystem.lock; - }, 100); - } - - resizeSystem.lock = true; - } - $win.on('resize', layui.data.resizeSystem); - - - //设置组件全局 token - ;!function(){ - var request = setter.request; - if(request.tokenName){ - var obj = {}; - obj[request.tokenName] = layui.data(setter.tableName)[request.tokenName] || '' - - //table - table.set({ - headers: obj, //通过 request 头传递 - where: obj //通过参数传递 - }); - //upload - upload.set({ - headers: obj, //通过 request 头传递 - data: obj //通过参数传递 - }); - } - }(); - - - //接口输出 - exports('admin', admin); +/** + * 界面核心模块 + */ + +layui.define('view', function(exports){ + var $ = layui.jquery + ,laytpl = layui.laytpl + ,element = layui.element + ,table = layui.table + ,upload = layui.upload + ,setter = layui.setter + ,view = layui.view + ,device = layui.device() + + ,$win = $(window), $body = $('body') + ,container = $('#'+ setter.container) + + ,SHOW = 'layui-show', HIDE = 'layui-hide', THIS = 'layui-this', DISABLED = 'layui-disabled', TEMP = 'template' + ,APP_BODY = '#LAY_app_body', APP_FLEXIBLE = 'LAY_app_flexible' + ,FILTER_TAB_TBAS = 'layadmin-layout-tabs' + ,APP_SPREAD_SM = 'layadmin-side-spread-sm', TABS_BODY = 'layadmin-tabsbody-item' + ,ICON_SHRINK = 'layui-icon-shrink-right', ICON_SPREAD = 'layui-icon-spread-left' + ,SIDE_SHRINK = 'layadmin-side-shrink', SIDE_MENU = 'LAY-system-side-menu' + + //通用方法 + ,admin = { + v: '1.9.0' + ,mode: 'spa' + + //数据的异步请求 + ,req: view.req + + //清除本地 token,并跳转到登入页 + ,exit: view.exit + + //xss 转义 + ,escape: function(html){ + return String(html || '').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&') + .replace(//g, '>') + .replace(/'/g, ''').replace(/"/g, '"'); + } + + //事件 + ,on: function(events, callback){ + return layui.onevent.call(this, setter.MOD_NAME, events, callback); + } + + //弹出面板 + ,popup: view.popup + + //右侧面板 + ,popupRight: function(options){ + //layer.close(admin.popup.index); + return admin.popup.index = layer.open($.extend({ + type: 1 + ,id: 'LAY_adminPopupR' + ,anim: -1 + ,title: false + ,closeBtn: false + ,offset: 'r' + ,shade: 0.1 + ,shadeClose: true + ,skin: 'layui-anim layui-anim-rl layui-layer-adminRight' + ,area: '300px' + }, options)); + } + + //发送验证码 + ,sendAuthCode: function(options){ + options = $.extend({ + seconds: 60 + ,elemPhone: '#LAY_phone' + ,elemVercode: '#LAY_vercode' + }, options); + + var seconds = options.seconds + ,token = null + ,timer, countDown = function(loop){ + var btn = $(options.elem) + seconds--; + if(seconds < 0){ + btn.removeClass(DISABLED).html('获取验证码'); + seconds = options.seconds; + clearInterval(timer); + } else { + btn.addClass(DISABLED).html(seconds + '秒后重获'); + } + + if(!loop){ + timer = setInterval(function(){ + countDown(true); + }, 1000); + } + }; + + $body.off('click', options.elem).on('click', options.elem, function(){ + options.elemPhone = $(options.elemPhone); + options.elemVercode = $(options.elemVercode); + + var elemPhone = options.elemPhone + ,value = elemPhone.val(); + + if(seconds !== options.seconds || $(this).hasClass(DISABLED)) return; + + if(!/^1\d{10}$/.test(value)){ + elemPhone.focus(); + return layer.msg('请输入正确的手机号') + }; + + if(typeof options.ajax === 'object'){ + var success = options.ajax.success; + delete options.ajax.success; + } + + admin.req($.extend(true, { + url: '/auth/code' + ,type: 'get' + ,data: { + phone: value + } + ,success: function(res){ + layer.msg('验证码已发送至你的手机,请注意查收', { + icon: 1 + ,shade: 0 + }); + options.elemVercode.focus(); + countDown(); + success && success(res); + } + }, options.ajax)); + }); + } + + //屏幕类型 + ,screen: function(){ + var width = $win.width(); + if(width > 1200){ + return 3; //大屏幕 + } else if(width > 992){ + return 2; //中屏幕 + } else if(width > 768){ + return 1; //小屏幕 + } else { + return 0; //超小屏幕 + } + } + + //侧边伸缩 + ,sideFlexible: function(status){ + var app = container + ,iconElem = $('#'+ APP_FLEXIBLE) + ,screen = admin.screen(); + + //设置状态,PC:默认展开、移动:默认收缩 + if(status === 'spread'){ + //切换到展开状态的 icon,箭头:← + iconElem.removeClass(ICON_SPREAD).addClass(ICON_SHRINK); + + //移动:从左到右位移;PC:清除多余选择器恢复默认 + if(screen < 2){ + app.addClass(APP_SPREAD_SM); + } else { + app.removeClass(APP_SPREAD_SM); + } + + app.removeClass(SIDE_SHRINK) + } else { + //切换到搜索状态的 icon,箭头:→ + iconElem.removeClass(ICON_SHRINK).addClass(ICON_SPREAD); + + //移动:清除多余选择器恢复默认;PC:从右往左收缩 + if(screen < 2){ + app.removeClass(SIDE_SHRINK); + } else { + app.addClass(SIDE_SHRINK); + } + + app.removeClass(APP_SPREAD_SM) + } + + layui.event.call(this, setter.MOD_NAME, 'side({*})', { + status: status + }); + } + + //重置主体区域表格尺寸 + ,resizeTable: function(delay){ + var that = this, runResizeTable = function(){ + that.tabsBody(admin.tabsPage.index).find('.layui-table-view').each(function(){ + var tableID = $(this).attr('lay-id'); + layui.table.resize(tableID); + }); + }; + if(!layui.table) return; + delay ? setTimeout(runResizeTable, delay) : runResizeTable(); + } + + //主题设置 + ,theme: function(options){ + var theme = setter.theme + ,local = layui.data(setter.tableName) + ,id = 'LAY_layadmin_theme' + ,style = document.createElement('style') + ,styleText = laytpl([ + //主题色 + '.layui-side-menu,' + ,'.layui-layer-admin .layui-layer-title,' + ,'.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-item>.layui-nav-child' + ,'{background-color:{{d.color.main}} !important;}' + + //背景选中色 + ,'.layadmin-pagetabs .layui-tab-title li:after,' + ,'.layadmin-pagetabs .layui-tab-title li.layui-this:after,' + ,'.layui-nav-tree .layui-this,' + ,'.layui-nav-tree .layui-this>a,' + ,'.layui-nav-tree .layui-nav-child dd.layui-this,' + ,'.layui-nav-tree .layui-nav-child dd.layui-this a,' + ,'.layui-nav-tree .layui-nav-bar' + ,'{background-color:{{d.color.selected}} !important;}' + + //logo + ,'.layui-layout-admin .layui-logo{background-color:{{d.color.logo || d.color.main}} !important;}' + + //文字选中色 + ,'.layadmin-pagetabs .layui-tab-title li:hover,' + ,'.layadmin-pagetabs .layui-tab-title li.layui-this' + ,'{color: {{d.color.selected}} !important;}' + + //头部色 + ,'{{# if(d.color.header){ }}' + ,'.layui-layout-admin .layui-header{background-color:{{ d.color.header }};}' + ,'.layui-layout-admin .layui-header a,' + ,'.layui-layout-admin .layui-header a cite{color: #f8f8f8;}' + ,'.layui-layout-admin .layui-header a:hover{color: #fff;}' + ,'.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-top-color: #fbfbfb;}' + ,'.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color: transparent; border-bottom-color: #fbfbfb;}' + ,'.layui-layout-admin .layui-header .layui-nav .layui-this:after, .layui-layout-admin .layui-header .layui-nav-bar{background-color: #fff; background-color: rgba(255,255,255,.5);}' + ,'.layadmin-pagetabs .layui-tab-title li:after{display: none;}' + ,'{{# } }}' + ].join('')).render(options = $.extend({}, local.theme, options)) + ,styleElem = document.getElementById(id); + + //添加主题样式 + if('styleSheet' in style){ + style.setAttribute('type', 'text/css'); + style.styleSheet.cssText = styleText; + } else { + style.innerHTML = styleText; + } + style.id = id; + + styleElem && $body[0].removeChild(styleElem); + $body[0].appendChild(style); + $body.attr('layadmin-themealias', options.color.alias); + + //本地存储记录 + local.theme = local.theme || {}; + layui.each(options, function(key, value){ + local.theme[key] = value; + }); + layui.data(setter.tableName, { + key: 'theme' + ,value: local.theme + }); + } + + //初始化主题 + ,initTheme: function(index){ + var theme = setter.theme; + index = index || 0; + if(theme.color[index]){ + theme.color[index].index = index; + admin.theme({ + color: theme.color[index] + }); + } + } + + //记录最近一次点击的页面标签数据 + ,tabsPage: {} + + //获取标签页的头元素 + ,tabsHeader: function(index){ + return $('#LAY_app_tabsheader').children('li').eq(index || 0); + } + + //获取页面标签主体元素 + ,tabsBody: function(index){ + return $(APP_BODY).find('.'+ TABS_BODY).eq(index || 0); + } + + //切换页面标签主体 + ,tabsBodyChange: function(index){ + admin.tabsHeader(index).attr('lay-attr', layui.router().href); + admin.tabsBody(index).addClass(SHOW).siblings().removeClass(SHOW); + events.rollPage('auto', index); + } + + //resize事件管理 + ,resize: function(fn){ + var router = layui.router() + ,key = router.path.join('-'); + + if(admin.resizeFn[key]){ + $win.off('resize', admin.resizeFn[key]); + delete admin.resizeFn[key]; + } + + if(fn === 'off') return; //如果是清除 resize 事件,则终止往下执行 + + fn(), admin.resizeFn[key] = fn; + $win.on('resize', admin.resizeFn[key]); + } + ,resizeFn: {} + ,runResize: function(){ + var router = layui.router() + ,key = router.path.join('-'); + admin.resizeFn[key] && admin.resizeFn[key](); + } + ,delResize: function(){ + this.resize('off'); + } + + //关闭当前 pageTabs + ,closeThisTabs: function(){ + if(!admin.tabsPage.index) return; + $(TABS_HEADER).eq(admin.tabsPage.index).find('.layui-tab-close').trigger('click'); + } + + //全屏 + ,fullScreen: function(){ + var ele = document.documentElement + ,reqFullScreen = ele.requestFullScreen || ele.webkitRequestFullScreen + || ele.mozRequestFullScreen || ele.msRequestFullscreen; + if(typeof reqFullScreen !== 'undefined' && reqFullScreen) { + reqFullScreen.call(ele); + }; + } + + //退出全屏 + ,exitScreen: function(){ + var ele = document.documentElement + if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.webkitCancelFullScreen) { + document.webkitCancelFullScreen(); + } else if (document.msExitFullscreen) { + document.msExitFullscreen(); + } + } + + //纠正单页路由格式 + ,correctRouter: function(href){ + if(!/^\//.test(href)) href = '/' + href; + + //纠正首尾 + return href.replace(/^(\/+)/, '/') + .replace(new RegExp('\/' + setter.entry + '$'), '/'); //过滤路由最后的默认视图文件名(如:index) + } + + //…… + }; + + //事件 + var events = admin.events = { + //伸缩 + flexible: function(othis){ + var iconElem = othis.find('#'+ APP_FLEXIBLE) + ,isSpread = iconElem.hasClass(ICON_SPREAD); + admin.sideFlexible(isSpread ? 'spread' : null); //控制伸缩 + admin.resizeTable(350); + } + + //刷新 + ,refresh: function(){ + admin.render(); + } + + //输入框搜索 + ,serach: function(othis){ + othis.off('keypress').on('keypress',function(e){ + if(!this.value.replace(/\s/g, '')) return; + //回车跳转 + if(e.keyCode === 13){ + var href = othis.attr('lay-action') + ,text = othis.attr('lay-text') || '搜索'; + + href = href + this.value; + text = text + ' '+ admin.escape(this.value) +''; + + //打开标签页 + location.hash = admin.correctRouter(href) + + //如果搜索关键词已经打开,则刷新页面即可 + events.serach.keys || (events.serach.keys = {}); + events.serach.keys[admin.tabsPage.index] = this.value; + if(this.value === events.serach.keys[admin.tabsPage.index]){ + events.refresh(othis); + } + + //清空输入框 + this.value = ''; + } + }); + } + + //点击消息 + ,message: function(othis){ + othis.find('.layui-badge-dot').remove(); + } + + //弹出主题面板 + ,theme: function(){ + admin.popupRight({ + id: 'LAY_adminPopupTheme' + ,success: function(){ + view(this.id).render('ui/theme') + } + }); + } + + //便签 + ,note: function(othis){ + var mobile = admin.screen() < 2 + ,note = layui.data(setter.tableName).note; + + events.note.index = admin.popup({ + title: '便签' + ,shade: 0 + ,offset: [ + '41px' + ,(mobile ? null : (othis.offset().left - 250) + 'px') + ] + ,anim: -1 + ,id: 'LAY_adminNote' + ,skin: 'layadmin-note layui-anim layui-anim-upbit' + ,content: '' + ,resize: false + ,success: function(layero, index){ + var textarea = layero.find('textarea') + ,value = note === undefined ? '便签中的内容会存储在本地,这样即便你关掉了浏览器,在下次打开时,依然会读取到上一次的记录。是个非常小巧实用的本地备忘录' : note; + + textarea.val(value).focus().on('keyup', function(){ + layui.data(setter.tableName, { + key: 'note' + ,value: this.value + }); + }); + } + }) + } + + //全屏 + ,fullscreen: function(othis){ + var SCREEN_FULL = 'layui-icon-screen-full' + ,SCREEN_REST = 'layui-icon-screen-restore' + ,iconElem = othis.children("i"); + + if(iconElem.hasClass(SCREEN_FULL)){ + admin.fullScreen(); + iconElem.addClass(SCREEN_REST).removeClass(SCREEN_FULL); + } else { + admin.exitScreen(); + iconElem.addClass(SCREEN_FULL).removeClass(SCREEN_REST); + } + } + + //弹出关于面板 + ,about: function(){ + admin.popupRight({ + id: 'LAY_adminPopupAbout' + ,success: function(){ + view(this.id).render('ui/about') + } + }); + } + + //弹出更多面板 + ,more: function(){ + admin.popupRight({ + id: 'LAY_adminPopupMore' + ,success: function(){ + view(this.id).render('ui/more') + } + }); + } + + //返回上一页 + ,back: function(){ + history.back(); + } + + //主题设置 + ,setTheme: function(othis){ + var index = othis.data('index') + ,nextIndex = othis.siblings('.layui-this').data('index'); + + if(othis.hasClass(THIS)) return; + + othis.addClass(THIS).siblings('.layui-this').removeClass(THIS); + admin.initTheme(index); + } + + //左右滚动页面标签 + ,rollPage: function(type, index){ + var tabsHeader = $('#LAY_app_tabsheader') + ,liItem = tabsHeader.children('li') + ,scrollWidth = tabsHeader.prop('scrollWidth') + ,outerWidth = tabsHeader.outerWidth() + ,tabsLeft = parseFloat(tabsHeader.css('left')); + + //右左往右 + if(type === 'left'){ + if(!tabsLeft && tabsLeft <=0) return; + + //当前的left减去可视宽度,用于与上一轮的页标比较 + var prefLeft = -tabsLeft - outerWidth; + + liItem.each(function(index, item){ + var li = $(item) + ,left = li.position().left; + + if(left >= prefLeft){ + tabsHeader.css('left', -left); + return false; + } + }); + } else if(type === 'auto'){ //自动滚动 + (function(){ + var thisLi = liItem.eq(index), thisLeft; + + if(!thisLi[0]) return; + thisLeft = thisLi.position().left; + + //当目标标签在可视区域左侧时 + if(thisLeft < -tabsLeft){ + return tabsHeader.css('left', -thisLeft); + } + + //当目标标签在可视区域右侧时 + if(thisLeft + thisLi.outerWidth() >= outerWidth - tabsLeft){ + var subLeft = thisLeft + thisLi.outerWidth() - (outerWidth - tabsLeft); + liItem.each(function(i, item){ + var li = $(item) + ,left = li.position().left; + + //从当前可视区域的最左第二个节点遍历,如果减去最左节点的差 > 目标在右侧不可见的宽度,则将该节点放置可视区域最左 + if(left + tabsLeft > 0){ + if(left - tabsLeft > subLeft){ + tabsHeader.css('left', -left); + return false; + } + } + }); + } + }()); + } else { + //默认向左滚动 + liItem.each(function(i, item){ + var li = $(item) + ,left = li.position().left; + + if(left + li.outerWidth() >= outerWidth - tabsLeft){ + tabsHeader.css('left', -left); + return false; + } + }); + } + } + + //向右滚动页面标签 + ,leftPage: function(){ + events.rollPage('left'); + } + + //向左滚动页面标签 + ,rightPage: function(){ + events.rollPage(); + } + + //关闭当前标签页 + ,closeThisTabs: function(){ + admin.closeThisTabs(); + } + + //关闭其它标签页 + ,closeOtherTabs: function(type){ + var TABS_REMOVE = 'LAY-system-pagetabs-remove'; + if(type === 'all'){ + $(TABS_HEADER+ ':gt(0)').remove(); + $(APP_BODY).find('.'+ TABS_BODY+ ':gt(0)').remove(); + } else { + $(TABS_HEADER).each(function(index, item){ + if(index && index != admin.tabsPage.index){ + $(item).addClass(TABS_REMOVE); + admin.tabsBody(index).addClass(TABS_REMOVE); + } + }); + $('.'+ TABS_REMOVE).remove(); + } + } + + //关闭全部标签页 + ,closeAllTabs: function(){ + events.closeOtherTabs('all'); + location.hash = ''; + } + + //遮罩 + ,shade: function(){ + admin.sideFlexible(); + } + }; + + //初始 + !function(){ + //主题初始化,本地主题记录优先,其次为 initColorIndex + var local = layui.data(setter.tableName); + if(local.theme){ + admin.theme(local.theme); + } else if(setter.theme){ + admin.initTheme(setter.theme.initColorIndex); + } + + //禁止水平滚动 + $body.addClass('layui-layout-body'); + + //移动端强制不开启页面标签功能 + if(admin.screen() < 1){ + delete setter.pageTabs; + } + + //不开启页面标签时 + if(!setter.pageTabs){ + container.addClass('layadmin-tabspage-none'); + } + + //低版本IE提示 + if(device.ie && device.ie < 10){ + view.error('IE'+ device.ie + '下访问可能不佳,推荐使用:Chrome / Firefox / Edge 等高级浏览器', { + offset: 'auto' + ,id: 'LAY_errorIE' + }); + } + + }(); + + //admin.prevRouter = {}; //上一个路由 + + // hash 改变侧边状态 + admin.on('hash(side)', function(router){ + var path = router.path, getData = function(item){ + return { + list: item.children('.layui-nav-child') + ,name: item.data('name') + ,jump: item.data('jump') + } + } + ,sideMenu = $('#'+ SIDE_MENU) + ,SIDE_NAV_ITEMD = 'layui-nav-itemed' + + //捕获对应菜单 + ,matchMenu = function(list){ + var pathURL = admin.correctRouter(path.join('/')); + list.each(function(index1, item1){ + var othis1 = $(item1) + ,data1 = getData(othis1) + ,listChildren1 = data1.list.children('dd') + ,matched1 = path[0] == data1.name || (index1 === 0 && !path[0]) + || (data1.jump && pathURL == admin.correctRouter(data1.jump)); + + listChildren1.each(function(index2, item2){ + var othis2 = $(item2) + ,data2 = getData(othis2) + ,listChildren2 = data2.list.children('dd') + ,matched2 = (path[0] == data1.name && path[1] == data2.name) + || (data2.jump && pathURL == admin.correctRouter(data2.jump)); + + listChildren2.each(function(index3, item3){ + var othis3 = $(item3) + ,data3 = getData(othis3) + ,matched3 = (path[0] == data1.name && path[1] == data2.name && path[2] == data3.name) + || (data3.jump && pathURL == admin.correctRouter(data3.jump)) + + if(matched3){ + var selected = data3.list[0] ? SIDE_NAV_ITEMD : THIS; + othis3.addClass(selected).siblings().removeClass(selected); //标记选择器 + return false; + } + + }); + + if(matched2){ + var selected = data2.list[0] ? SIDE_NAV_ITEMD : THIS; + othis2.addClass(selected).siblings().removeClass(selected); //标记选择器 + return false + } + + }); + + if(matched1){ + var selected = data1.list[0] ? SIDE_NAV_ITEMD : THIS; + othis1.addClass(selected).siblings().removeClass(selected); //标记选择器 + return false; + } + + }); + } + + //重置状态 + sideMenu.find('.'+ THIS).removeClass(THIS); + + //移动端点击菜单时自动收缩 + if(admin.screen() < 2) admin.sideFlexible(); + + //开始捕获 + matchMenu(sideMenu.children('li')); + }); + + //侧边导航点击事件 + element.on('nav(layadmin-system-side-menu)', function(elem){ + if(elem.siblings('.layui-nav-child')[0] && container.hasClass(SIDE_SHRINK)){ + admin.sideFlexible('spread'); + layer.close(elem.data('index')); + }; + admin.tabsPage.type = 'nav'; + }); + + //选项卡的更多操作 + element.on('nav(layadmin-pagetabs-nav)', function(elem){ + var dd = elem.parent(); + dd.removeClass(THIS); + dd.parent().removeClass(SHOW); + }); + + //同步路由 + var setThisRouter = function(othis){ + var layid = othis.attr('lay-id') + ,attr = othis.attr('lay-attr') + ,index = othis.index(); + + location.hash = layid === setter.entry ? '/' : (attr || '/'); + admin.tabsBodyChange(index); + } + ,TABS_HEADER = '#LAY_app_tabsheader>li'; + + //页面标签点击 + $body.on('click', TABS_HEADER, function(){ + var othis = $(this) + ,index = othis.index(); + + admin.tabsPage.type = 'tab'; + admin.tabsPage.index = index; + + //如果是iframe类型的标签页 + if(othis.attr('lay-attr') === 'iframe'){ + return admin.tabsBodyChange(index); + }; + + + setThisRouter(othis); //同步路由 + admin.runResize(); //执行resize事件,如果存在的话 + admin.resizeTable(); //重置当前主体区域的表格尺寸 + }); + + // tabspage 删除 + element.on('tabDelete(layadmin-layout-tabs)', function(obj){ + var othis = $(TABS_HEADER+ '.layui-this'); + + obj.index && admin.tabsBody(obj.index).remove(); + setThisRouter(othis); + + //移除resize事件 + admin.delResize(); + }); + + //页面跳转 + $body.on('click', '*[lay-href]', function(){ + var othis = $(this) + ,href = othis.attr('lay-href') + ,router = layui.router(); + + admin.tabsPage.elem = othis; + //admin.prevRouter[router.path[0]] = router.href; //记录上一次各菜单的路由信息 + + //执行跳转 + location.hash = admin.correctRouter(href); + + //如果为当前页,则执行刷新 + if(admin.correctRouter(href) === router.href){ + admin.events.refresh(); + } + }); + + //点击事件 + $body.on('click', '*[layadmin-event]', function(){ + var othis = $(this) + ,attrEvent = othis.attr('layadmin-event'); + events[attrEvent] && events[attrEvent].call(this, othis); + }); + + //tips + $body.on('mouseenter', '*[lay-tips]', function(){ + var othis = $(this); + + if(othis.parent().hasClass('layui-nav-item') && !container.hasClass(SIDE_SHRINK)) return; + + var tips = othis.attr('lay-tips') + ,offset = othis.attr('lay-offset') + ,direction = othis.attr('lay-direction') + ,index = layer.tips(tips, this, { + tips: direction || 1 + ,time: -1 + ,success: function(layero, index){ + if(offset){ + layero.css('margin-left', offset + 'px'); + } + } + }); + othis.data('index', index); + }).on('mouseleave', '*[lay-tips]', function(){ + layer.close($(this).data('index')); + }); + + //窗口resize事件 + var resizeSystem = layui.data.resizeSystem = function(){ + //layer.close(events.note.index); + layer.closeAll('tips'); + + if(!resizeSystem.lock){ + setTimeout(function(){ + admin.sideFlexible(admin.screen() < 2 ? '' : 'spread'); + delete resizeSystem.lock; + }, 100); + } + + resizeSystem.lock = true; + } + $win.on('resize', layui.data.resizeSystem); + + + //设置组件全局 token + ;!function(){ + var request = setter.request; + if(request.tokenName){ + var obj = {}; + obj[request.tokenName] = layui.data(setter.tableName)[request.tokenName] || '' + + //table + table.set({ + headers: obj, //通过 request 头传递 + where: obj //通过参数传递 + }); + //upload + upload.set({ + headers: obj, //通过 request 头传递 + data: obj //通过参数传递 + }); + } + }(); + + + //接口输出 + exports('admin', admin); }); \ No newline at end of file diff --git a/public/panel/ui/src/modules/index.js b/public/panel/ui/src/modules/index.js index 80126f62..2a12c0ad 100644 --- a/public/panel/ui/src/modules/index.js +++ b/public/panel/ui/src/modules/index.js @@ -1,198 +1,198 @@ -/** - * 界面入口模块 - */ - -layui.define('admin', function(exports){ - var setter = layui.setter; - var element = layui.element; - var admin = layui.admin; - var tabsPage = admin.tabsPage; - var view = layui.view; - - //根据路由渲染页面 - var renderPage = function(){ - var router = layui.router() - ,path = router.path - ,pathURL = admin.correctRouter(router.path.join('/')) - - //默认读取主页 - if(!path.length) path = ['']; - - //如果最后一项为空字符,则读取默认文件 - if(path[path.length - 1] === ''){ - path[path.length - 1] = setter.entry; - } - - //重置状态 - var reset = function(type){ - //renderPage.haveInit && layer.closeAll(); - if(renderPage.haveInit){ - $('.layui-layer').each(function(){ - var othis = $(this), - index = othis.attr('times'); - if(!(othis.hasClass('layui-layim') || othis.hasClass('layui-layim-chat'))){ - layer.close(index); - } - }); - } - renderPage.haveInit = true; - - $(APP_BODY).scrollTop(0); - delete tabsPage.type; //重置页面标签的来源类型 - }; - - //如果路由来自于 tab 切换,则不重新请求视图 - if(tabsPage.type === 'tab'){ - //切换到非主页、或者切换到主页且主页必须有内容。方可阻止请求 - if(pathURL !== '/' || (pathURL === '/' && admin.tabsBody().html())){ - admin.tabsBodyChange(tabsPage.index); - return reset(tabsPage.type); - } - } - - //请求视图渲染 - view().render(path.join('/')).then(function(res){ - - //遍历页签选项卡 - var matchTo - ,tabs = $('#LAY_app_tabsheader>li'); - - tabs.each(function(index){ - var li = $(this) - ,layid = li.attr('lay-id'); - - if(layid === pathURL){ - matchTo = true; - tabsPage.index = index; - } - }); - - //如果未在选项卡中匹配到,则追加选项卡 - if(setter.pageTabs && pathURL !== '/'){ - if(!matchTo){ - $(APP_BODY).append('
          '); - tabsPage.index = tabs.length; - element.tabAdd(FILTER_TAB_TBAS, { - title: ''+ (res.title || '新标签页') +'' - ,id: pathURL - ,attr: router.href - }); - } - } - - this.container = admin.tabsBody(tabsPage.index); - setter.pageTabs || this.container.scrollTop(0); //如果不开启标签页,则跳转时重置滚动条 - - //定位当前tabs - element.tabChange(FILTER_TAB_TBAS, pathURL); - admin.tabsBodyChange(tabsPage.index); - - }).done(function(){ - layui.use('common', layui.cache.callback.common); - $win.on('resize', layui.data.resize); - - element.render('breadcrumb', 'breadcrumb'); - - //容器 scroll 事件,剔除吸附层 - admin.tabsBody(tabsPage.index).on('scroll', function(){ - var othis = $(this) - ,elemDate = $('.layui-laydate') - ,layerOpen = $('.layui-layer')[0]; - - //关闭 layDate - if(elemDate[0]){ - elemDate.each(function(){ - var thisElemDate = $(this); - thisElemDate.hasClass('layui-laydate-static') || thisElemDate.remove(); - }); - othis.find('input').blur(); - } - - //关闭 Tips 层 - layerOpen && layer.closeAll('tips'); - }); - }); - - reset(); - }; - - //入口页面 - var entryPage = function(fn){ - var router = layui.router() - ,container = view(setter.container) - ,pathURL = admin.correctRouter(router.path.join('/')) - ,isIndPage; - - //检查是否属于独立页面 - layui.each(setter.indPage, function(index, item){ - if(pathURL === item){ - return isIndPage = true; - } - }); - - //将模块根路径设置为 modules 目录 - layui.config({ - base: setter.paths.base + 'modules/' - }); - - //独立页面 - if(isIndPage || pathURL === '/login'){ //此处单独判断登入页,是为了兼容旧版(即未在 config.js 配置 indPage 的情况) - container.render(router.path.join('/')).done(function(){ - admin.pageType = 'alone'; - }); - } else { //后台框架页面 - - //强制拦截未登入 - if(setter.interceptor){ - var local = layui.data(setter.tableName); - if(!local[setter.request.tokenName]){ - return location.hash = '/login/redirect='+ encodeURIComponent(pathURL); //跳转到登入页 - } - } - - //渲染后台结构 - if(admin.pageType === 'console') { //后台主体页 - renderPage(); - } else { //初始控制台结构 - container.render('ui/layout').done(function(){ - renderPage(); - layui.element.render(); - - if(admin.screen() < 2){ - admin.sideFlexible(); - } - admin.pageType = 'console'; - }); - } - - } - }; - - var APP_BODY = '#LAY_app_body'; - var FILTER_TAB_TBAS = 'layadmin-layout-tabs'; - var $ = layui.$, $win = $(window); - - //初始主体结构 - layui.link( - setter.paths.core + 'css/admin.css?v='+ admin.v - ,function(){ - entryPage() - } - ,'layuiAdmin' - ); - - //Hash改变 - window.onhashchange = function(){ - entryPage(); - //执行 {setter.MOD_NAME}.hash 下的事件 - layui.event.call(this, setter.MOD_NAME, 'hash({*})', layui.router()); - }; - - // 对外输出 - var adminuiIndex = { - render: renderPage - }; - - $.extend(admin, adminuiIndex); - exports('adminIndex', adminuiIndex); -}); +/** + * 界面入口模块 + */ + +layui.define('admin', function(exports){ + var setter = layui.setter; + var element = layui.element; + var admin = layui.admin; + var tabsPage = admin.tabsPage; + var view = layui.view; + + //根据路由渲染页面 + var renderPage = function(){ + var router = layui.router() + ,path = router.path + ,pathURL = admin.correctRouter(router.path.join('/')) + + //默认读取主页 + if(!path.length) path = ['']; + + //如果最后一项为空字符,则读取默认文件 + if(path[path.length - 1] === ''){ + path[path.length - 1] = setter.entry; + } + + //重置状态 + var reset = function(type){ + //renderPage.haveInit && layer.closeAll(); + if(renderPage.haveInit){ + $('.layui-layer').each(function(){ + var othis = $(this), + index = othis.attr('times'); + if(!(othis.hasClass('layui-layim') || othis.hasClass('layui-layim-chat'))){ + layer.close(index); + } + }); + } + renderPage.haveInit = true; + + $(APP_BODY).scrollTop(0); + delete tabsPage.type; //重置页面标签的来源类型 + }; + + //如果路由来自于 tab 切换,则不重新请求视图 + if(tabsPage.type === 'tab'){ + //切换到非主页、或者切换到主页且主页必须有内容。方可阻止请求 + if(pathURL !== '/' || (pathURL === '/' && admin.tabsBody().html())){ + admin.tabsBodyChange(tabsPage.index); + return reset(tabsPage.type); + } + } + + //请求视图渲染 + view().render(path.join('/')).then(function(res){ + + //遍历页签选项卡 + var matchTo + ,tabs = $('#LAY_app_tabsheader>li'); + + tabs.each(function(index){ + var li = $(this) + ,layid = li.attr('lay-id'); + + if(layid === pathURL){ + matchTo = true; + tabsPage.index = index; + } + }); + + //如果未在选项卡中匹配到,则追加选项卡 + if(setter.pageTabs && pathURL !== '/'){ + if(!matchTo){ + $(APP_BODY).append('
          '); + tabsPage.index = tabs.length; + element.tabAdd(FILTER_TAB_TBAS, { + title: ''+ (res.title || '新标签页') +'' + ,id: pathURL + ,attr: router.href + }); + } + } + + this.container = admin.tabsBody(tabsPage.index); + setter.pageTabs || this.container.scrollTop(0); //如果不开启标签页,则跳转时重置滚动条 + + //定位当前tabs + element.tabChange(FILTER_TAB_TBAS, pathURL); + admin.tabsBodyChange(tabsPage.index); + + }).done(function(){ + layui.use('common', layui.cache.callback.common); + $win.on('resize', layui.data.resize); + + element.render('breadcrumb', 'breadcrumb'); + + //容器 scroll 事件,剔除吸附层 + admin.tabsBody(tabsPage.index).on('scroll', function(){ + var othis = $(this) + ,elemDate = $('.layui-laydate') + ,layerOpen = $('.layui-layer')[0]; + + //关闭 layDate + if(elemDate[0]){ + elemDate.each(function(){ + var thisElemDate = $(this); + thisElemDate.hasClass('layui-laydate-static') || thisElemDate.remove(); + }); + othis.find('input').blur(); + } + + //关闭 Tips 层 + layerOpen && layer.closeAll('tips'); + }); + }); + + reset(); + }; + + //入口页面 + var entryPage = function(fn){ + var router = layui.router() + ,container = view(setter.container) + ,pathURL = admin.correctRouter(router.path.join('/')) + ,isIndPage; + + //检查是否属于独立页面 + layui.each(setter.indPage, function(index, item){ + if(pathURL === item){ + return isIndPage = true; + } + }); + + //将模块根路径设置为 modules 目录 + layui.config({ + base: setter.paths.base + 'modules/' + }); + + //独立页面 + if(isIndPage || pathURL === '/login'){ //此处单独判断登入页,是为了兼容旧版(即未在 config.js 配置 indPage 的情况) + container.render(router.path.join('/')).done(function(){ + admin.pageType = 'alone'; + }); + } else { //后台框架页面 + + //强制拦截未登入 + if(setter.interceptor){ + var local = layui.data(setter.tableName); + if(!local[setter.request.tokenName]){ + return location.hash = '/login/redirect='+ encodeURIComponent(pathURL); //跳转到登入页 + } + } + + //渲染后台结构 + if(admin.pageType === 'console') { //后台主体页 + renderPage(); + } else { //初始控制台结构 + container.render('ui/layout').done(function(){ + renderPage(); + layui.element.render(); + + if(admin.screen() < 2){ + admin.sideFlexible(); + } + admin.pageType = 'console'; + }); + } + + } + }; + + var APP_BODY = '#LAY_app_body'; + var FILTER_TAB_TBAS = 'layadmin-layout-tabs'; + var $ = layui.$, $win = $(window); + + //初始主体结构 + layui.link( + setter.paths.core + 'css/admin.css?v='+ admin.v + ,function(){ + entryPage() + } + ,'layuiAdmin' + ); + + //Hash改变 + window.onhashchange = function(){ + entryPage(); + //执行 {setter.MOD_NAME}.hash 下的事件 + layui.event.call(this, setter.MOD_NAME, 'hash({*})', layui.router()); + }; + + // 对外输出 + var adminuiIndex = { + render: renderPage + }; + + $.extend(admin, adminuiIndex); + exports('adminIndex', adminuiIndex); +}); diff --git a/public/panel/ui/src/modules/view.js b/public/panel/ui/src/modules/view.js index c3ed5ead..07856ab0 100644 --- a/public/panel/ui/src/modules/view.js +++ b/public/panel/ui/src/modules/view.js @@ -1,347 +1,347 @@ -/** - * 界面视图模块 - */ - -layui.define(['laytpl', 'layer'], function(exports){ - var $ = layui.jquery - ,laytpl = layui.laytpl - ,layer = layui.layer - ,setter = layui.setter - ,device = layui.device() - ,hint = layui.hint() - - //对外接口 - ,view = function(id){ - return new Class(id); - } - - ,SHOW = 'layui-show', LAY_BODY = 'LAY_app_body' - - //构造器 - ,Class = function(id){ - this.id = id; - this.container = $('#'+(id || LAY_BODY)); - }; - - //加载中 - view.loading = function(elem){ - elem.append( - this.elemLoad = $('') - ); - }; - - //移除加载 - view.removeLoad = function(){ - this.elemLoad && this.elemLoad.remove(); - }; - - //清除 token,并跳转到登入页 - view.exit = function(){ - //清空本地记录的 token - layui.data(setter.tableName, { - key: setter.request.tokenName - ,remove: true - }); - - //跳转到登入页 - location.hash = '/login'; - }; - - //Ajax请求 - view.req = function(options){ - var that = this - ,success = options.success - ,error = options.error - ,request = setter.request - ,response = setter.response - ,debug = function(){ - return setter.debug - ? '
          URL:' + options.url - : ''; - }; - - options.data = options.data || {}; - options.headers = options.headers || {}; - - if(request.tokenName){ - var sendData = typeof options.data === 'string' - ? JSON.parse(options.data) - : options.data; - - //自动给参数传入默认 token - options.data[request.tokenName] = request.tokenName in sendData - ? options.data[request.tokenName] - : (layui.data(setter.tableName)[request.tokenName] || ''); - - //自动给 Request Headers 传入 token - options.headers[request.tokenName] = request.tokenName in options.headers - ? options.headers[request.tokenName] - : (layui.data(setter.tableName)[request.tokenName] || ''); - } - - delete options.success; - delete options.error; - - return $.ajax($.extend({ - type: 'get' - ,dataType: 'json' - ,success: function(res){ - var statusCode = response.statusCode; - - //只有 response 的 code 一切正常才执行 done - if(res[response.statusName] == statusCode.ok) { - typeof options.done === 'function' && options.done(res); - } - - //登录状态失效,清除本地 access_token,并强制跳转到登入页 - else if(res[response.statusName] == statusCode.logout){ - view.exit(); - } - - //其它异常 - else { - var errorText = [ - 'Error: ' + (res[response.msgName] || '返回状态码异常') - ,debug() - ].join(''); - view.error(errorText); - } - - //只要 http 状态码正常,无论 response 的 code 是否正常都执行 success - typeof success === 'function' && success(res); - } - ,error: function(e, code){ - var errorText = [ - '请求异常,请重试
          错误信息:'+ code - ,debug() - ].join(''); - view.error(errorText); - - typeof error === 'function' && error.apply(this, arguments); - } - }, options)); - }; - - //弹窗 - view.popup = function(options){ - var success = options.success - ,skin = options.skin; - - delete options.success; - delete options.skin; - - return layer.open($.extend({ - type: 1 - ,title: '提示' - ,content: '' - ,id: 'LAY-system-view-popup' - ,skin: 'layui-layer-admin' + (skin ? ' ' + skin : '') - ,shadeClose: true - ,closeBtn: false - ,success: function(layero, index){ - var elemClose = $(''); - layero.append(elemClose); - elemClose.on('click', function(){ - layer.close(index); - }); - typeof success === 'function' && success.apply(this, arguments); - } - }, options)) - }; - - //异常提示 - view.error = function(content, options){ - return view.popup($.extend({ - content: content - ,maxWidth: 300 - //,shade: 0.01 - ,offset: 't' - ,anim: 6 - ,id: 'LAY_adminError' - }, options)) - }; - - - //请求模板文件渲染 - Class.prototype.render = function(views, params){ - var that = this, router = layui.router(); - views = ( - setter.paths && setter.paths.views - ? setter.paths.views - : setter.views - ) + views + setter.engine; - - $('#'+ LAY_BODY).children('.layadmin-loading').remove(); - view.loading(that.container); //loading - - //请求模板 - $.ajax({ - url: views - ,type: 'get' - ,dataType: 'html' - ,data: { - v: layui.cache.version - } - ,success: function(html){ - html = '
          ' + html + '
          '; - - var elemTitle = $(html).find('title') - ,title = elemTitle.text() || (html.match(/\([\s\S]*)\<\/title>/)||[])[1]; - - var res = { - title: title - ,body: html - }; - - elemTitle.remove(); - that.params = params || {}; //获取参数 - - if(that.then){ - that.then(res); - delete that.then; - } - - that.parse(html); - view.removeLoad(); - - if(that.done){ - that.done(res); - delete that.done; - } - - } - ,error: function(e){ - view.removeLoad(); - - if(that.render.isError){ - return view.error('请求视图文件异常,状态:'+ e.status); - }; - - if(e.status === 404){ - that.render('ui/404'); - } else { - that.render('ui/error'); - } - - that.render.isError = true; - } - }); - return that; - }; - - //解析模板 - Class.prototype.parse = function(html, refresh, callback){ - var that = this - ,isScriptTpl = typeof html === 'object' //是否模板元素 - ,elem = isScriptTpl ? html : $(html) - ,elemTemp = isScriptTpl ? html : elem.find('*[template]') - ,fn = function(options){ - var tpl = laytpl(options.dataElem.html()) - ,res = $.extend({ - params: router.params - }, options.res); - - options.dataElem.after(tpl.render(res)); - typeof callback === 'function' && callback(); - - try { - options.done && new Function('d', options.done)(res); - } catch(e){ - console.error(options.dataElem[0], '\n存在错误回调脚本\n\n', e) - } - } - ,router = layui.router(); - - elem.find('title').remove(); - that.container[refresh ? 'after' : 'html'](elem.children()); - - router.params = that.params || {}; - - //遍历模板区块 - for(var i = elemTemp.length; i > 0; i--){ - (function(){ - var dataElem = elemTemp.eq(i - 1) - ,layDone = dataElem.attr('lay-done') || dataElem.attr('lay-then') //获取回调 - ,url = laytpl(dataElem.attr('lay-url')|| '').render(router) //接口 url - ,data = laytpl(dataElem.attr('lay-data')|| '').render(router) //接口参数 - ,headers = laytpl(dataElem.attr('lay-headers')|| '').render(router); //接口请求的头信息 - - try { - data = new Function('return '+ data + ';')(); - } catch(e) { - hint.error('lay-data: ' + e.message); - data = {}; - }; - - try { - headers = new Function('return '+ headers + ';')(); - } catch(e) { - hint.error('lay-headers: ' + e.message); - headers = headers || {} - }; - - if(url){ - view.req({ - type: dataElem.attr('lay-type') || 'get' - ,url: url - ,data: data - ,dataType: 'json' - ,headers: headers - ,success: function(res){ - fn({ - dataElem: dataElem - ,res: res - ,done: layDone - }); - } - }); - } else { - fn({ - dataElem: dataElem - ,done: layDone - }); - } - }()); - } - - return that; - }; - - //直接渲染字符 - Class.prototype.send = function(views, data){ - var tpl = laytpl(views || this.container.html()).render(data || {}); - this.container.html(tpl); - return this; - }; - - //局部刷新模板 - Class.prototype.refresh = function(callback){ - var that = this - ,next = that.container.next() - ,templateid = next.attr('lay-templateid'); - - if(that.id != templateid) return that; - - that.parse(that.container, 'refresh', function(){ - that.container.siblings('[lay-templateid="'+ that.id +'"]:last').remove(); - typeof callback === 'function' && callback(); - }); - - return that; - }; - - //视图请求成功后的回调 - Class.prototype.then = function(callback){ - this.then = callback; - return this; - }; - - //视图渲染完毕后的回调 - Class.prototype.done = function(callback){ - this.done = callback; - return this; - }; - - //对外接口 - exports('view', view); +/** + * 界面视图模块 + */ + +layui.define(['laytpl', 'layer'], function(exports){ + var $ = layui.jquery + ,laytpl = layui.laytpl + ,layer = layui.layer + ,setter = layui.setter + ,device = layui.device() + ,hint = layui.hint() + + //对外接口 + ,view = function(id){ + return new Class(id); + } + + ,SHOW = 'layui-show', LAY_BODY = 'LAY_app_body' + + //构造器 + ,Class = function(id){ + this.id = id; + this.container = $('#'+(id || LAY_BODY)); + }; + + //加载中 + view.loading = function(elem){ + elem.append( + this.elemLoad = $('') + ); + }; + + //移除加载 + view.removeLoad = function(){ + this.elemLoad && this.elemLoad.remove(); + }; + + //清除 token,并跳转到登入页 + view.exit = function(){ + //清空本地记录的 token + layui.data(setter.tableName, { + key: setter.request.tokenName + ,remove: true + }); + + //跳转到登入页 + location.hash = '/login'; + }; + + //Ajax请求 + view.req = function(options){ + var that = this + ,success = options.success + ,error = options.error + ,request = setter.request + ,response = setter.response + ,debug = function(){ + return setter.debug + ? '
          URL:' + options.url + : ''; + }; + + options.data = options.data || {}; + options.headers = options.headers || {}; + + if(request.tokenName){ + var sendData = typeof options.data === 'string' + ? JSON.parse(options.data) + : options.data; + + //自动给参数传入默认 token + options.data[request.tokenName] = request.tokenName in sendData + ? options.data[request.tokenName] + : (layui.data(setter.tableName)[request.tokenName] || ''); + + //自动给 Request Headers 传入 token + options.headers[request.tokenName] = request.tokenName in options.headers + ? options.headers[request.tokenName] + : (layui.data(setter.tableName)[request.tokenName] || ''); + } + + delete options.success; + delete options.error; + + return $.ajax($.extend({ + type: 'get' + ,dataType: 'json' + ,success: function(res){ + var statusCode = response.statusCode; + + //只有 response 的 code 一切正常才执行 done + if(res[response.statusName] == statusCode.ok) { + typeof options.done === 'function' && options.done(res); + } + + //登录状态失效,清除本地 access_token,并强制跳转到登入页 + else if(res[response.statusName] == statusCode.logout){ + view.exit(); + } + + //其它异常 + else { + var errorText = [ + 'Error: ' + (res[response.msgName] || '返回状态码异常') + ,debug() + ].join(''); + view.error(errorText); + } + + //只要 http 状态码正常,无论 response 的 code 是否正常都执行 success + typeof success === 'function' && success(res); + } + ,error: function(e, code){ + var errorText = [ + '请求异常,请重试
          错误信息:'+ code + ,debug() + ].join(''); + view.error(errorText); + + typeof error === 'function' && error.apply(this, arguments); + } + }, options)); + }; + + //弹窗 + view.popup = function(options){ + var success = options.success + ,skin = options.skin; + + delete options.success; + delete options.skin; + + return layer.open($.extend({ + type: 1 + ,title: '提示' + ,content: '' + ,id: 'LAY-system-view-popup' + ,skin: 'layui-layer-admin' + (skin ? ' ' + skin : '') + ,shadeClose: true + ,closeBtn: false + ,success: function(layero, index){ + var elemClose = $(''); + layero.append(elemClose); + elemClose.on('click', function(){ + layer.close(index); + }); + typeof success === 'function' && success.apply(this, arguments); + } + }, options)) + }; + + //异常提示 + view.error = function(content, options){ + return view.popup($.extend({ + content: content + ,maxWidth: 300 + //,shade: 0.01 + ,offset: 't' + ,anim: 6 + ,id: 'LAY_adminError' + }, options)) + }; + + + //请求模板文件渲染 + Class.prototype.render = function(views, params){ + var that = this, router = layui.router(); + views = ( + setter.paths && setter.paths.views + ? setter.paths.views + : setter.views + ) + views + setter.engine; + + $('#'+ LAY_BODY).children('.layadmin-loading').remove(); + view.loading(that.container); //loading + + //请求模板 + $.ajax({ + url: views + ,type: 'get' + ,dataType: 'html' + ,data: { + v: layui.cache.version + } + ,success: function(html){ + html = '
          ' + html + '
          '; + + var elemTitle = $(html).find('title') + ,title = elemTitle.text() || (html.match(/\([\s\S]*)\<\/title>/)||[])[1]; + + var res = { + title: title + ,body: html + }; + + elemTitle.remove(); + that.params = params || {}; //获取参数 + + if(that.then){ + that.then(res); + delete that.then; + } + + that.parse(html); + view.removeLoad(); + + if(that.done){ + that.done(res); + delete that.done; + } + + } + ,error: function(e){ + view.removeLoad(); + + if(that.render.isError){ + return view.error('请求视图文件异常,状态:'+ e.status); + }; + + if(e.status === 404){ + that.render('ui/404'); + } else { + that.render('ui/error'); + } + + that.render.isError = true; + } + }); + return that; + }; + + //解析模板 + Class.prototype.parse = function(html, refresh, callback){ + var that = this + ,isScriptTpl = typeof html === 'object' //是否模板元素 + ,elem = isScriptTpl ? html : $(html) + ,elemTemp = isScriptTpl ? html : elem.find('*[template]') + ,fn = function(options){ + var tpl = laytpl(options.dataElem.html()) + ,res = $.extend({ + params: router.params + }, options.res); + + options.dataElem.after(tpl.render(res)); + typeof callback === 'function' && callback(); + + try { + options.done && new Function('d', options.done)(res); + } catch(e){ + console.error(options.dataElem[0], '\n存在错误回调脚本\n\n', e) + } + } + ,router = layui.router(); + + elem.find('title').remove(); + that.container[refresh ? 'after' : 'html'](elem.children()); + + router.params = that.params || {}; + + //遍历模板区块 + for(var i = elemTemp.length; i > 0; i--){ + (function(){ + var dataElem = elemTemp.eq(i - 1) + ,layDone = dataElem.attr('lay-done') || dataElem.attr('lay-then') //获取回调 + ,url = laytpl(dataElem.attr('lay-url')|| '').render(router) //接口 url + ,data = laytpl(dataElem.attr('lay-data')|| '').render(router) //接口参数 + ,headers = laytpl(dataElem.attr('lay-headers')|| '').render(router); //接口请求的头信息 + + try { + data = new Function('return '+ data + ';')(); + } catch(e) { + hint.error('lay-data: ' + e.message); + data = {}; + }; + + try { + headers = new Function('return '+ headers + ';')(); + } catch(e) { + hint.error('lay-headers: ' + e.message); + headers = headers || {} + }; + + if(url){ + view.req({ + type: dataElem.attr('lay-type') || 'get' + ,url: url + ,data: data + ,dataType: 'json' + ,headers: headers + ,success: function(res){ + fn({ + dataElem: dataElem + ,res: res + ,done: layDone + }); + } + }); + } else { + fn({ + dataElem: dataElem + ,done: layDone + }); + } + }()); + } + + return that; + }; + + //直接渲染字符 + Class.prototype.send = function(views, data){ + var tpl = laytpl(views || this.container.html()).render(data || {}); + this.container.html(tpl); + return this; + }; + + //局部刷新模板 + Class.prototype.refresh = function(callback){ + var that = this + ,next = that.container.next() + ,templateid = next.attr('lay-templateid'); + + if(that.id != templateid) return that; + + that.parse(that.container, 'refresh', function(){ + that.container.siblings('[lay-templateid="'+ that.id +'"]:last').remove(); + typeof callback === 'function' && callback(); + }); + + return that; + }; + + //视图请求成功后的回调 + Class.prototype.then = function(callback){ + this.then = callback; + return this; + }; + + //视图渲染完毕后的回调 + Class.prototype.done = function(callback){ + this.done = callback; + return this; + }; + + //对外接口 + exports('view', view); }); \ No newline at end of file diff --git a/resources/views/plugin.blade.php b/resources/views/plugin.blade.php index 84c9bc58..dcaf1f42 100644 --- a/resources/views/plugin.blade.php +++ b/resources/views/plugin.blade.php @@ -165,8 +165,24 @@ let plugin_slug = $(this).data('plugin-slug'); let show = obj.elem.checked ? 1 : 0; - console.log(plugin_slug); //当前行数据 - + admin.req({ + url: '/api/panel/plugin/setShowHome', + type: 'POST', + data: { + slug: plugin_slug, + show: show + } + , success: function (res) { + if (res.code === 0) { + layer.msg('设置成功', {icon: 1, time: 1000}); + } else { + layer.msg(res.msg, {icon: 2, time: 1000}); + } + } + , error: function (xhr, status, error) { + console.log('耗子Linux面板:ajax请求出错,错误' + error); + } + }); }); /*form.render(null, 'store-form'); diff --git a/resources/views/setting.blade.php b/resources/views/setting.blade.php index daf4d9cb..20b6ac86 100755 --- a/resources/views/setting.blade.php +++ b/resources/views/setting.blade.php @@ -1,124 +1,124 @@ - -设置 -
          -
          -
          -
          -
          设置
          -
          - -
          -
          - -
          - -
          -
          修改面板的显示名称
          -
          -
          - -
          - -
          -
          修改MySQL的root密码
          -
          -
          -
          - -
          -
          -
          - -
          -
          -
          -
          -
          - - \ No newline at end of file diff --git a/resources/views/ui/404.blade.php b/resources/views/ui/404.blade.php index 0eaac9bb..fc9f1127 100644 --- a/resources/views/ui/404.blade.php +++ b/resources/views/ui/404.blade.php @@ -1,15 +1,15 @@ - -404 页面不存在 - -
          -
          - -
          -

          - 4 - 0 - 4 -

          -
          -
          + +404 页面不存在 + +
          +
          + +
          +

          + 4 + 0 + 4 +

          +
          +
          \ No newline at end of file diff --git a/resources/views/ui/error.blade.php b/resources/views/ui/error.blade.php index 0c121366..6242c6ad 100644 --- a/resources/views/ui/error.blade.php +++ b/resources/views/ui/error.blade.php @@ -1,13 +1,13 @@ - -出错了 - -
          -
          - - -
          - 好像出错了呢 -
          - -
          + +出错了 + +
          +
          + + +
          + 好像出错了呢 +
          + +
          \ No newline at end of file diff --git a/routes/api.php b/routes/api.php index 8617a5fd..c7fc04ef 100644 --- a/routes/api.php +++ b/routes/api.php @@ -123,6 +123,7 @@ Route::prefix('panel')->group(function () { Route::get('getList', [PluginsController::class, 'getList']); Route::post('install', [PluginsController::class, 'install']); Route::post('uninstall', [PluginsController::class, 'uninstall']); + Route::post('setShowHome', [PluginsController::class, 'setShowHome']); }); // 设置 Route::middleware('auth:sanctum')->prefix('setting')->group(function () {