From 5c4346d101073ad8abc35eba87804092e900dc21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Mon, 23 Oct 2023 16:01:40 +0800 Subject: [PATCH] =?UTF-8?q?fix(workflow):=20=E7=A7=BB=E9=99=A4=20public=20?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + public/favicon.ico | Bin 15406 -> 0 bytes public/index.html | 65 - public/panel/adminui/src/css/admin.css | 1576 ----------------- public/panel/adminui/src/css/login.css | 182 -- public/panel/adminui/src/modules/admin.js | 890 ---------- public/panel/adminui/src/modules/index.js | 198 --- public/panel/adminui/src/modules/view.js | 325 ---- public/panel/config.js | 99 -- public/panel/index.js | 40 - public/panel/modules/common.js | 33 - public/panel/modules/cron.css | 194 -- public/panel/modules/cron.js | 970 ---------- public/panel/modules/echartsTheme.js | 261 --- public/panel/style/imgs/bg-none.jpg | Bin 832 -> 0 bytes public/panel/style/imgs/layui-logo.jpg | Bin 2871 -> 0 bytes public/panel/style/imgs/logo-black.png | Bin 455 -> 0 bytes public/panel/style/imgs/logo.png | Bin 457 -> 0 bytes .../panel/style/imgs/template/character.jpg | Bin 6727 -> 0 bytes public/panel/style/imgs/template/huge.jpg | Bin 12627 -> 0 bytes public/panel/style/imgs/template/portrait.png | Bin 6727 -> 0 bytes public/panel/style/template.css | 762 -------- public/panel/views/cron.html | 406 ----- public/panel/views/index.html | 359 ---- public/panel/views/login.html | 100 -- public/panel/views/logout.html | 29 - public/panel/views/monitor.html | 404 ----- public/panel/views/plugin.html | 185 -- public/panel/views/plugins/fail2ban.html | 335 ---- .../views/plugins/fail2ban/add_rule.html | 170 -- .../views/plugins/fail2ban/view_rule.html | 101 -- public/panel/views/plugins/mysql57.html | 576 ------ .../views/plugins/mysql57/add_database.html | 80 - .../panel/views/plugins/mysql57/add_user.html | 80 - .../panel/views/plugins/mysql57/backup.html | 145 -- public/panel/views/plugins/mysql80.html | 576 ------ .../views/plugins/mysql80/add_database.html | 80 - .../panel/views/plugins/mysql80/add_user.html | 80 - .../panel/views/plugins/mysql80/backup.html | 145 -- public/panel/views/plugins/openresty.html | 245 --- public/panel/views/plugins/php74.html | 381 ---- public/panel/views/plugins/php80.html | 381 ---- public/panel/views/plugins/php81.html | 381 ---- public/panel/views/plugins/php82.html | 381 ---- public/panel/views/plugins/phpmyadmin.html | 92 - public/panel/views/plugins/postgresql15.html | 524 ------ .../plugins/postgresql15/add_database.html | 77 - .../views/plugins/postgresql15/add_user.html | 79 - .../views/plugins/postgresql15/backup.html | 141 -- public/panel/views/plugins/postgresql16.html | 524 ------ .../plugins/postgresql16/add_database.html | 77 - .../views/plugins/postgresql16/add_user.html | 79 - .../views/plugins/postgresql16/backup.html | 141 -- public/panel/views/plugins/pureftpd.html | 305 ---- .../views/plugins/pureftpd/add_user.html | 80 - public/panel/views/plugins/redis.html | 190 -- public/panel/views/plugins/s3fs.html | 102 -- .../panel/views/plugins/s3fs/add_mount.html | 104 -- public/panel/views/plugins/supervisor.html | 451 ----- .../views/plugins/supervisor/add_process.html | 94 - public/panel/views/plugins/toolbox.html | 302 ---- public/panel/views/safe.html | 309 ---- public/panel/views/setting.html | 175 -- public/panel/views/ssh.html | 159 -- public/panel/views/task.html | 230 --- public/panel/views/ui/404.html | 14 - public/panel/views/ui/error.html | 12 - public/panel/views/ui/layout.html | 177 -- public/panel/views/ui/theme.html | 43 - public/panel/views/website/add.html | 160 -- public/panel/views/website/backup.html | 145 -- .../panel/views/website/default_config.html | 76 - public/panel/views/website/edit.html | 482 ----- public/panel/views/website/list.html | 246 --- public/robots.txt | 2 - 75 files changed, 1 insertion(+), 16807 deletions(-) delete mode 100644 public/favicon.ico delete mode 100644 public/index.html delete mode 100644 public/panel/adminui/src/css/admin.css delete mode 100644 public/panel/adminui/src/css/login.css delete mode 100644 public/panel/adminui/src/modules/admin.js delete mode 100644 public/panel/adminui/src/modules/index.js delete mode 100644 public/panel/adminui/src/modules/view.js delete mode 100644 public/panel/config.js delete mode 100644 public/panel/index.js delete mode 100644 public/panel/modules/common.js delete mode 100644 public/panel/modules/cron.css delete mode 100644 public/panel/modules/cron.js delete mode 100644 public/panel/modules/echartsTheme.js delete mode 100644 public/panel/style/imgs/bg-none.jpg delete mode 100644 public/panel/style/imgs/layui-logo.jpg delete mode 100644 public/panel/style/imgs/logo-black.png delete mode 100644 public/panel/style/imgs/logo.png delete mode 100644 public/panel/style/imgs/template/character.jpg delete mode 100644 public/panel/style/imgs/template/huge.jpg delete mode 100644 public/panel/style/imgs/template/portrait.png delete mode 100644 public/panel/style/template.css delete mode 100644 public/panel/views/cron.html delete mode 100644 public/panel/views/index.html delete mode 100644 public/panel/views/login.html delete mode 100644 public/panel/views/logout.html delete mode 100644 public/panel/views/monitor.html delete mode 100644 public/panel/views/plugin.html delete mode 100644 public/panel/views/plugins/fail2ban.html delete mode 100644 public/panel/views/plugins/fail2ban/add_rule.html delete mode 100644 public/panel/views/plugins/fail2ban/view_rule.html delete mode 100644 public/panel/views/plugins/mysql57.html delete mode 100644 public/panel/views/plugins/mysql57/add_database.html delete mode 100644 public/panel/views/plugins/mysql57/add_user.html delete mode 100644 public/panel/views/plugins/mysql57/backup.html delete mode 100644 public/panel/views/plugins/mysql80.html delete mode 100644 public/panel/views/plugins/mysql80/add_database.html delete mode 100644 public/panel/views/plugins/mysql80/add_user.html delete mode 100644 public/panel/views/plugins/mysql80/backup.html delete mode 100644 public/panel/views/plugins/openresty.html delete mode 100644 public/panel/views/plugins/php74.html delete mode 100644 public/panel/views/plugins/php80.html delete mode 100644 public/panel/views/plugins/php81.html delete mode 100644 public/panel/views/plugins/php82.html delete mode 100644 public/panel/views/plugins/phpmyadmin.html delete mode 100644 public/panel/views/plugins/postgresql15.html delete mode 100644 public/panel/views/plugins/postgresql15/add_database.html delete mode 100644 public/panel/views/plugins/postgresql15/add_user.html delete mode 100644 public/panel/views/plugins/postgresql15/backup.html delete mode 100644 public/panel/views/plugins/postgresql16.html delete mode 100644 public/panel/views/plugins/postgresql16/add_database.html delete mode 100644 public/panel/views/plugins/postgresql16/add_user.html delete mode 100644 public/panel/views/plugins/postgresql16/backup.html delete mode 100644 public/panel/views/plugins/pureftpd.html delete mode 100644 public/panel/views/plugins/pureftpd/add_user.html delete mode 100644 public/panel/views/plugins/redis.html delete mode 100644 public/panel/views/plugins/s3fs.html delete mode 100644 public/panel/views/plugins/s3fs/add_mount.html delete mode 100644 public/panel/views/plugins/supervisor.html delete mode 100644 public/panel/views/plugins/supervisor/add_process.html delete mode 100644 public/panel/views/plugins/toolbox.html delete mode 100644 public/panel/views/safe.html delete mode 100644 public/panel/views/setting.html delete mode 100644 public/panel/views/ssh.html delete mode 100644 public/panel/views/task.html delete mode 100644 public/panel/views/ui/404.html delete mode 100644 public/panel/views/ui/error.html delete mode 100644 public/panel/views/ui/layout.html delete mode 100644 public/panel/views/ui/theme.html delete mode 100644 public/panel/views/website/add.html delete mode 100644 public/panel/views/website/backup.html delete mode 100644 public/panel/views/website/default_config.html delete mode 100644 public/panel/views/website/edit.html delete mode 100644 public/panel/views/website/list.html delete mode 100644 public/robots.txt diff --git a/.gitignore b/.gitignore index d3740e75..1edbf21a 100644 --- a/.gitignore +++ b/.gitignore @@ -71,3 +71,4 @@ __debug_bin # 前端工具链 # .sass-cache/* node_modules/ +/public diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index 9161b3ebfc0fa5bacf5c737ef9edc8f4b5217e9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15406 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 hmxxulf51_/___.' >'"". // -// | | : `- \`.;`\ _ /`;.`/ - ` : | | // -// \ \ `-. \_ __\ /__ _/ .-` / / // -// ========`-.____`-.___\_____/___.-`____.-'======== // -// `=---=' // -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // -// 佛祖保佑 永无Bug 永不宕机 // -// Name: 耗子Linux面板 Author: 耗子 Date: 2023-07-25 // -//////////////////////////////////////////////////////////////////// ---> - - - - - - 加载中... - - - - - - -
- - - - - - - - - diff --git a/public/panel/adminui/src/css/admin.css b/public/panel/adminui/src/css/admin.css deleted file mode 100644 index a27cee07..00000000 --- a/public/panel/adminui/src/css/admin.css +++ /dev/null @@ -1,1576 +0,0 @@ -/** - * 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: #16b777; -} - -.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: #16baaa; -} - -.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: #16baaa; -} - -.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: #16baaa; -} - -.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: #16baaa; - 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: #16baaa; -} - -/* 团队 */ -.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: #16b777; -} - - -/****** 其它主页结束 ******/ - - -/* - - 应用 - -*/ - - -/* 消息中心 */ -.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: #16b777; - 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 #16baaa; - font-size: 16px; -} - -.layadmin-tips h1 { - font-size: 100px; - line-height: 100px; - color: #16baaa; -} - -.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/adminui/src/css/login.css b/public/panel/adminui/src/css/login.css deleted file mode 100644 index 474bcf73..00000000 --- a/public/panel/adminui/src/css/login.css +++ /dev/null @@ -1,182 +0,0 @@ -/** - * admin.login.css - */ - -html, body, #Panel_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/adminui/src/modules/admin.js b/public/panel/adminui/src/modules/admin.js deleted file mode 100644 index f279b2d6..00000000 --- a/public/panel/adminui/src/modules/admin.js +++ /dev/null @@ -1,890 +0,0 @@ -/** - * 界面核心模块 - */ - -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 = '#Panel_app_body', APP_FLEXIBLE = 'Panel_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: '2.0.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 $('#Panel_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, opts) { - var SCREEN_FULL = 'layui-icon-screen-full'; - var SCREEN_REST = 'layui-icon-screen-restore'; - var iconElem = othis.children("i"); - var hasFull = iconElem.hasClass(SCREEN_FULL); - - // 设置图标状态 - var setIcon = function (status) { - if (status) { - iconElem.addClass(SCREEN_REST).removeClass(SCREEN_FULL); - } else { - iconElem.addClass(SCREEN_FULL).removeClass(SCREEN_REST); - } - }; - - // 设置全屏状态 - var setScreen = function (status) { - status ? admin.fullScreen() : admin.exitScreen(); - }; - - // 仅设置图标状态 - if (opts) { - return setIcon(opts.status); - } - - setIcon(hasFull); - setScreen(hasFull); - } - - //弹出关于面板 - , about: function () { - admin.popupRight({ - id: 'LAY_adminPopupAbout' - , success: function () { - view(this.id).render('system/about') - } - }) - } - - //弹出更多面板 - , more: function () { - admin.popupRight({ - id: 'LAY_adminPopupMore' - , success: function () { - view(this.id).render('system/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 = $('#Panel_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 = '#Panel_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) - var href = othis.attr('lay-href') - var router = layui.router() - - admin.tabsPage.elem = othis - // admin.prevRouter[router.path[0]] = router.href; //记录上一次各菜单的路由信息 - - // 执行跳转 - location.hash = admin.correctRouter(href) - - // 如果为当前页,则执行刷新 - if (setter.refreshCurrPage) { - if (admin.correctRouter(href) === router.href) { - admin.events.refresh() - } - } - - // 清理所有定时器 - var highestTimeoutId = setTimeout(';') - for (var i = 0; i < highestTimeoutId; i++) { - clearTimeout(i) - } - }) - - //点击事件 - $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/adminui/src/modules/index.js b/public/panel/adminui/src/modules/index.js deleted file mode 100644 index c7b0b07e..00000000 --- a/public/panel/adminui/src/modules/index.js +++ /dev/null @@ -1,198 +0,0 @@ -/** - * 界面入口模块 - */ - -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 = $('#Panel_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) { - 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 = '#Panel_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/adminui/src/modules/view.js b/public/panel/adminui/src/modules/view.js deleted file mode 100644 index 5df974b5..00000000 --- a/public/panel/adminui/src/modules/view.js +++ /dev/null @@ -1,325 +0,0 @@ -/** - * 界面视图模块 - */ - -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 = 'Panel_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 - - if (options.type === 'post' || options.type === 'put' || options.type === 'delete' || options.type === 'patch' || options.type === 'POST' || options.type === 'PUT' || options.type === 'DELETE' || options.type === 'PATCH') { - options.contentType = 'application/json' - options.data = JSON.stringify(options.data) - } - - 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) { - console.log('面板响应异常: ' + e.responseText) - if (e.status === 422) { - var errorText = '' - var res = e.responseText - try { - res = JSON.parse(res) - } catch (e) { - res = {} - } - if (typeof res.message === 'object' && res.message !== null) { - for (let key in res.message) { - if (res.message.hasOwnProperty(key)) { - for (let subKey in res.message[key]) { - if (res.message[key].hasOwnProperty(subKey)) { - errorText += 'Error: ' + res.message[key][subKey] + '
' - } - } - } - } - } else { - errorText = res.message - } - - view.error(errorText) - return false - } - 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/public/panel/config.js b/public/panel/config.js deleted file mode 100644 index 58f8432d..00000000 --- a/public/panel/config.js +++ /dev/null @@ -1,99 +0,0 @@ -/** - * setter - */ - -// 初始化配置 -layui.define(['all'], function (exports) { - exports('setter', { - paths: { // v1.9.0 及以上版本的写法 - core: layui.cache.base + 'adminui/src/', // 核心库所在目录 - views: layui.cache.base + 'views/', // 业务视图所在目录 - modules: layui.cache.base + 'modules/', // 业务模块所在目录 - base: layui.cache.base // 记录静态资源所在基础目录 - }, - - container: 'Panel_app', // 容器ID - entry: 'index', // 默认视图文件名 - engine: '.html', // 视图文件后缀名 - pageTabs: true, // 是否开启页面选项卡功能。单页版不推荐开启 - refreshCurrPage: true, // 当跳转页面 url 与当前页 url 相同时,是否自动执行刷新 - - name: '耗子Linux面板', tableName: 'HaoZiPanel', // 本地存储表名 - MOD_NAME: 'admin', // 模块事件名 - - debug: true, // 是否开启调试模式。如开启,接口异常时会抛出异常 URL 等信息 - interceptor: true, // 是否开启未登入拦截 - - // 自定义请求字段 - request: { - tokenName: 'access_token' // 自动携带 token 的字段名。可设置 false 不携带。 - }, - - // 自定义响应字段 - response: { - statusName: 'code', // 数据状态的字段名称 - statusCode: { - ok: 0, // 数据状态一切正常的状态码 - logout: 401 // 登录状态失效的状态码 - }, msgName: 'message', // 状态信息的字段名称 - dataName: 'data' // 数据详情的字段名称 - }, - - // 独立页面路由,可随意添加(无需写参数) - indPage: [ - '/login', - '/logout', - ], - - // 配置业务模块目录中的特殊模块 - extend: {}, - - // 主题配置 - theme: { - // 内置主题配色方案 - color: [{ - main: '#20222A', // 主题色 - selected: '#16baaa', // 选中色 - 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: '#16b777', alias: 'green' // 墨绿 - }, { - main: '#20222A', logo: '#F78400', selected: '#F78400', alias: 'red' // 橙色 - }, { - main: '#28333E', logo: '#AA3130', selected: '#AA3130', alias: 'fashion-red' // 时尚红 - }, { - main: '#24262F', logo: '#3A3D49', selected: '#16baaa', 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: '#16baaa', selected: '#16baaa', header: '#16baaa', alias: 'green-header' // 墨绿头 - }, { - main: '#393D49', logo: '#393D49', selected: '#16baaa', 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 deleted file mode 100644 index c39fc1d5..00000000 --- a/public/panel/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * 初始化主题入口模块 - */ - -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 deleted file mode 100644 index bc551d85..00000000 --- a/public/panel/modules/common.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * 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/cron.css b/public/panel/modules/cron.css deleted file mode 100644 index 58ee1ed1..00000000 --- a/public/panel/modules/cron.css +++ /dev/null @@ -1,194 +0,0 @@ - -/* 样式加载完毕的标识 */ -html #layuicss-cron { - display: none; - position: absolute; - width: 1989px; -} - - -/* 主体结构 */ -.layui-cron { - width: 550px; - position: absolute; - z-index: 99999999; - margin: 5px 0; - border-radius: 2px; - font-size: 14px; - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - background-color: white; - display: flex; - flex-direction: column; - box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 5px 0px; - -webkit-animation-name: cron-upbit; - animation-name: cron-upbit; - border: 1px solid #e6e6e6; -} - -.layui-cron-main ul { - padding-left: 10px; -} - -@-webkit-keyframes cron-upbit { - - /* 微微往上滑入 */ - from { - -webkit-transform: translate3d(0, 20px, 0); - opacity: 0.3; - } - - to { - -webkit-transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -@keyframes cron-upbit { - from { - transform: translate3d(0, 20px, 0); - opacity: 0.3; - } - - to { - transform: translate3d(0, 0, 0); - opacity: 1; - } -} - -/* tabs */ -.layui-cron>.layui-tab { - margin: 0; - box-shadow: none; - border: none; -} - -/* 行 */ -.cron-row { - padding-left: 13px; -} -/* 格 */ -.cron-grid { - padding-left: 15px; -} - -/* 表达式 */ -.cron-title { - font-weight: 700; - font-size: 14px; - margin: 10px; - margin-bottom: 0; -} - -.cron-box { - margin: 10px; -} - -.cron-box+.cron-box { - margin-top: 0; -} - -/* 按钮 */ -.cron-footer-btns { - text-align: right; - margin-right: 10px; - margin-bottom: 10px; -} - -.cron-footer-btns span { - height: 26px; - line-height: 26px; - margin: 0 0 0 -1px; - padding: 0 10px; - border: 1px solid #C9C9C9; - background-color: #fff; - white-space: nowrap; - vertical-align: top; - border-radius: 2px; - display: inline-block; - cursor: pointer; - font-size: 12px; - box-sizing: border-box; - color: #666; -} - -.cron-footer-btns span:hover { - color: #5FB878; -} - - -/* 表单 */ -.layui-cron .layui-form-radio { - margin-right: 0; -} - -.cron-form { - line-height: 28px; - font-size: 14px; -} - -.cron-input-mid { - display: inline-block; - vertical-align: middle; - margin-top: 6px; - background-color: #e5e5e5; - padding: 0 12px; - height: 28px; - line-height: 28px; - border: 1px solid #ccc; - box-sizing: border-box; -} - -.cron-input { - display: inline-block; - vertical-align: middle; - margin-top: 6px; - padding: 0 8px; - background-color: #fff; - border: 1px solid #ccc; - height: 28px; - line-height: 28px; - box-sizing: border-box; - width: 80px; - -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; -} - -.cron-input:focus { - outline: 0; - border: 1px solid #01AAED; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 4px 0px #01AAED; - translate: 1s; -} - -.layui-cron .layui-form-checkbox[lay-skin="primary"] span { - padding-right: 10px; - min-width: 16px; -} - -.layui-cron .layui-form-checkbox[lay-skin="primary"] { - padding-left: 22px; - margin-top: 5px; -} -.layui-cron input[type=number] { - -moz-appearance:textfield; -} -.layui-cron input[type=number]::-webkit-inner-spin-button, -.layui-cron input[type=number]::-webkit-outer-spin-button { - -webkit-appearance: none; - margin: 0; -} -.cron-tips{ - color: grey; - line-height: 28px; - height: 28px; - display: inline-block; - vertical-align: middle; - margin-top: 8px; - margin-left: 5px; -} diff --git a/public/panel/modules/cron.js b/public/panel/modules/cron.js deleted file mode 100644 index 60e0c5a8..00000000 --- a/public/panel/modules/cron.js +++ /dev/null @@ -1,970 +0,0 @@ -/** - @ Name:layui.cron Cron表达式解析器 - @ Author:贝哥哥 - @ License:MIT - */ - -layui.define(['lay', 'element', 'form'], function (exports) { //假如该组件依赖 layui.form - var $ = layui.$, layer = layui.layer, lay = layui.lay, element = layui.element, form = layui.form - - - //字符常量 - , MOD_NAME = 'cron', ELEM = '.layui-cron', THIS = 'layui-this', SHOW = 'layui-show', HIDE = 'layui-hide' - - , ELEM_STATIC = 'layui-cron-static', ELEM_FOOTER = 'layui-cron-footer', ELEM_CONFIRM = '.cron-btns-confirm', - ELEM_HINT = 'layui-cron-hint' - - , ELEM_RUN_HINT = 'layui-cron-run-hint' - - //外部接口 - , cron = { - v: '2.0.0' // cron 组件当前版本 - , index: layui.cron ? (layui.cron.index + 10000) : 0 // corn 实例标识 - - //设置全局项 - , set: function (options) { - var that = this; - that.config = $.extend({}, that.config, options); - return that; - } - - //事件监听 - , on: function (events, callback) { - return layui.onevent.call(this, MOD_NAME, events, callback); - } - - //主体CSS等待事件 - , ready: function (fn) { - var cssPath = layui.cache.base + "cron.css?v=" + cron.v; - layui.link(cssPath, fn, "cron"); //此处的“cron”要对应 cron.css 中的样式: html #layuicss-cron{} - return this; - } - } - - //操作当前实例 - , thisIns = function () { - var that = this, options = that.config, id = options.id || options.index; - - return { - //提示框 - hint: function (content) { - that.hint.call(that, content); - }, config: options - } - } - - //构造器,创建实例 - , Class = function (options) { - var that = this; - that.index = ++cron.index; - that.config = $.extend({}, that.config, cron.config, options); - cron.ready(function () { - that.init(); - }); - }; - - //默认配置 - Class.prototype.config = { - value: null // 当前表达式值,每秒执行一次 - , - isInitValue: true //用于控制是否自动向元素填充初始值(需配合 value 参数使用) - , - lang: "cn" //语言,只支持cn/en,即中文和英文 - , - tabs: [{key: 'minutes', range: '0-59'}, { - key: 'hours', range: '0-23' - }, {key: 'days', range: '1-31'}, {key: 'months', range: '1-12'}, {key: 'weeks', range: '1-7'}], - defaultCron: {minutes: "*", hours: "*", days: "*", months: "*", weeks: "*"}, - trigger: "click" //呼出控件的事件 - , - btns: ['run', 'confirm'] //右下角显示的按钮,会按照数组顺序排列 - , - position: null //控件定位方式定位, 默认absolute,支持:fixed/absolute/static - , - zIndex: null //控件层叠顺序 - , - show: false //是否直接显示,如果设置 true,则默认直接显示控件 - , - showBottom: true //是否显示底部栏 - , - done: null //控件选择完毕后的回调,点击运行/确定也均会触发 - , - run: null // 最近运行时间接口 - }; - - //多语言 - Class.prototype.lang = function () { - var that = this, options = that.config, text = { - cn: { - tabs: [{title: "分"}, {title: "时"}, {title: "日"}, {title: "月"}, { - title: "周", - rateBegin: "第", - rateMid: "周的星期", - rateEnd: "" - }], - every: "每", - unspecified: "不指定", - period: "周期", - periodFrom: "从", - rate: "按照", - rateBegin: "从", - rateMid: "开始,每", - rateEnd: "执行一次", - weekday: "工作日", - weekdayPrefix: "每月", - weekdaySuffix: "号最近的那个工作日", - lastday: "本月最后一日", - lastweek: "本月最后一个星期", - custom: "指定", - tools: { - confirm: '确定', run: '运行' - }, - formatError: ['Cron格式不合法', '
已为你重置'] - }, en: { - tabs: [{title: "Minutes"}, {title: "Hours"}, {title: "Days"}, {title: "Months"}, {title: "Weeks"}], - every: "Every ", - unspecified: "Unspecified", - period: "Period", - periodFrom: "From", - rate: "According to", - rateBegin: "begin at", - rateMid: ", every", - rateEnd: " execute once", - weekday: "Weekday", - weekdayPrefix: "Every month at ", - weekdaySuffix: "号最近的那个工作日", - lastday: "Last day of the month", - lastweek: "本月最后一个星期", - custom: "Custom", - tools: { - confirm: 'Confirm', run: 'Run' - }, - formatError: ['The cron format error', '
It has been reset'] - } - }; - return text[options.lang] || text['cn']; - }; - - //初始准备 - Class.prototype.init = function () { - var that = this, options = that.config, isStatic = options.position === 'static'; - - options.elem = lay(options.elem); - - options.eventElem = lay(options.eventElem); - - if (!options.elem[0]) return; - - //如果不是input|textarea元素,则默认采用click事件 - if (!that.isInput(options.elem[0])) { - if (options.trigger === 'focus') { - options.trigger = 'click'; - } - } - - // 设置渲染所绑定元素的唯一KEY - if (!options.elem.attr('lay-key')) { - options.elem.attr('lay-key', that.index); - options.eventElem.attr('lay-key', that.index); - } - - // 当前实例主面板ID - that.elemID = 'layui-icon' + options.elem.attr('lay-key'); - - //默认赋值 - if (options.value && options.isInitValue) { - that.setValue(options.value); - } - if (!options.value) { - options.value = options.elem[0].value || ''; - } - var cronArr = options.value.split(' '); - if (cronArr.length >= 6) { - options.cron = { - minutes: cronArr[0], - hours: cronArr[1], - days: cronArr[2], - months: cronArr[3], - weeks: cronArr[4], - }; - } else { - options.cron = lay.extend({}, options.defaultCron); - } - - - if (options.show || isStatic) that.render(); - isStatic || that.events(); - - - }; - - - // 控件主体渲染 - Class.prototype.render = function () { - var that = this, options = that.config, lang = that.lang(), isStatic = options.position === 'static', - tabFilter = 'cron-tab' + options.elem.attr('lay-key') - //主面板 - , elem = that.elem = lay.elem('div', { - id: that.elemID, 'class': ['layui-cron', isStatic ? (' ' + ELEM_STATIC) : ''].join('') - }) - - // tab 内容区域 - , elemTab = that.elemTab = lay.elem('div', { - 'class': 'layui-tab layui-tab-card', 'lay-filter': tabFilter - }), tabHead = lay.elem('ul', { - 'class': 'layui-tab-title' - }), tabContent = lay.elem('div', { - 'class': 'layui-tab-content' - }) - - //底部区域 - , divFooter = that.footer = lay.elem('div', { - 'class': ELEM_FOOTER - }); - - if (options.zIndex) elem.style.zIndex = options.zIndex; - - // 生成tab 内容区域 - elemTab.appendChild(tabHead); - elemTab.appendChild(tabContent); - lay.each(lang.tabs, function (i, item) { - // 表头 - var li = lay.elem('li', { - 'class': i === 0 ? THIS : "", 'lay-id': i - }); - li.innerHTML = item.title; - tabHead.appendChild(li); - - // 表体 - tabContent.appendChild(that.getTabContentChildElem(i)); - }); - - // 主区域 - elemMain = that.elemMain = lay.elem('div', { - 'class': 'layui-cron-main' - }); - elemMain.appendChild(elemTab); - - //生成底部栏 - lay(divFooter).html(function () { - var html = [], btns = []; - lay.each(options.btns, function (i, item) { - var title = lang.tools[item] || 'btn'; - btns.push('' + title + ''); - }); - html.push(''); - return html.join(''); - }()); - - //插入到主区域 - elem.appendChild(elemMain); - - options.showBottom && elem.appendChild(divFooter); - - - //移除上一个控件 - that.remove(Class.thisElemCron); - - //如果是静态定位,则插入到指定的容器中,否则,插入到body - isStatic ? options.elem.append(elem) : (document.body.appendChild(elem) - , that.position()); - - - that.checkCron(); - - that.elemEvent(); // 主面板事件 - - Class.thisElemCron = that.elemID; - - form.render(); - - } - - // 渲染 tab 子控件 - Class.prototype.getTabContentChildElem = function (index) { - var that = this, options = that.config, tabItem = options.tabs[index], tabItemKey = tabItem.key, - lang = that.lang(), tabItemLang = lang.tabs[index], cron = options.cron, - formFilter = 'cronForm' + tabItemKey + options.elem.attr('lay-key'), data = function () { - if (cron[tabItemKey].indexOf('-') != -1) { - // 周期数据 - var arr = cron[tabItemKey].split('-'); - return { - type: 'range', start: arr[0], end: arr[1] - }; - } - if (cron[tabItemKey].indexOf('/') != -1) { - // 频率数据 - var arr = cron[tabItemKey].split('/'); - return { - type: 'rate', begin: arr[0], rate: arr[1] - }; - } - if (cron[tabItemKey].indexOf(',') != -1 || /^\+?[0-9][0-9]*$/.test(cron[tabItemKey])) { - // 按照指定执行 - var arr = cron[tabItemKey].split(',').map(Number); - return { - type: 'custom', values: arr - }; - } - if (cron[tabItemKey].indexOf('W') != -1) { - // 最近的工作日 - var value = cron[tabItemKey].replace('W', ''); - return { - type: 'weekday', value: value - }; - } - if (index === 2 && cron[tabItemKey] === 'L') { - // 本月最后一日 - return { - type: 'lastday', value: 'L' - }; - } - if (index === 4 && cron[tabItemKey].indexOf('L') != -1) { - // 本月最后一个周 value - var value = cron[tabItemKey].replace('L', ''); - return { - type: 'lastweek', value: value - }; - } - if (cron[tabItemKey] === '*') { - // 每次 - return { - type: 'every', value: '*' - }; - } - if (cron[tabItemKey] === '?' || cron[tabItemKey] === undefined || cron[tabItemKey] === '') { - // 不指定 - return { - //type: 'unspecified', value: cron[tabItemKey] - type: 'every', value: '*' - }; - } - }(), rangeData = function () { - if (tabItem.range) { - var arr = tabItem.range.split('-'); - return { - min: parseInt(arr[0]), max: parseInt(arr[1]) - }; - } - }(); - var elem = lay.elem('div', { - 'class': 'layui-tab-item layui-form ' + (index === 0 ? SHOW : ""), 'lay-filter': formFilter - }); - - // 每次 - elem.appendChild(function () { - var everyRadio = lay.elem('input', { - 'name': tabItemKey + '[type]', - 'type': 'radio', - 'value': 'every', - 'title': lang.every + tabItemLang.title - }); - if (data.type === 'every') { - lay(everyRadio).attr('checked', true); - } - var everyDiv = lay.elem('div', { - 'class': 'cron-row' - }); - everyDiv.appendChild(everyRadio); - return everyDiv; - }()); - - // 不指定,从日开始 - /*if (index >= 2) { - elem.appendChild(function () { - var unspecifiedRadio = lay.elem('input', { - 'name': tabItemKey + '[type]', 'type': 'radio', 'value': 'unspecified', 'title': lang.unspecified - }); - if (data.type === 'unspecified') { - lay(unspecifiedRadio).attr('checked', true); - } - var unspecifiedDiv = lay.elem('div', { - 'class': 'cron-row' - }); - unspecifiedDiv.appendChild(unspecifiedRadio); - return unspecifiedDiv; - }()); - }*/ - - // 周期 - var rangeChild = [function () { - var rangeRadio = lay.elem('input', { - 'name': tabItemKey + '[type]', 'type': 'radio', 'value': 'range', 'title': lang.period - }); - if (data.type === 'range') { - lay(rangeRadio).attr('checked', true); - } - return rangeRadio; - }(), function () { - var elem = lay.elem('div', { - 'class': 'cron-input-mid' - }); - elem.innerHTML = lang.periodFrom; - return elem; - }(), function () { - var elem = lay.elem('input', { - 'class': 'cron-input', 'type': 'number', 'name': 'rangeStart', 'value': data.start || '' - }); - return elem; - }(), function () { - var elem = lay.elem('div', { - 'class': 'cron-input-mid' - }); - elem.innerHTML = '-'; - return elem; - }(), function () { - var elem = lay.elem('input', { - 'class': 'cron-input', 'type': 'number', 'name': 'rangeEnd', 'value': data.end || '' - }); - return elem; - }(), function () { - var elem = lay.elem('div', { - 'class': 'cron-input-mid' - }); - elem.innerHTML = tabItemLang.title; - return elem; - }()] - - , rangeDiv = lay.elem('div', { - 'class': 'cron-row' - }); - lay.each(rangeChild, function (i, item) { - rangeDiv.appendChild(item); - }); - if (tabItem.range) { - var rangeTip = lay.elem('div', { - 'class': 'cron-tips' - }); - rangeTip.innerHTML = ['(', tabItem.range, ')'].join(''); - rangeDiv.appendChild(rangeTip); - } - elem.appendChild(rangeDiv); - - // 频率,年没有 - if (index < 6) { - var rateChild = [function () { - var rateRadio = lay.elem('input', { - 'name': tabItemKey + '[type]', 'type': 'radio', 'value': 'rate', 'title': lang.rate - }); - if (data.type === 'rate') { - lay(rateRadio).attr('checked', true); - } - return rateRadio; - }(), function () { - var elem = lay.elem('div', { - 'class': 'cron-input-mid' - }); - elem.innerHTML = tabItemLang.rateBegin || lang.rateBegin; - return elem; - }(), function () { - var elem = lay.elem('input', { - 'class': 'cron-input', 'type': 'number', 'name': 'begin', 'value': data.begin || '' - }); - return elem; - }(), function () { - var elem = lay.elem('div', { - 'class': 'cron-input-mid' - }); - elem.innerHTML = tabItemLang.rateMid || (tabItemLang.title + lang.rateMid); - return elem; - }(), function () { - var elem = lay.elem('input', { - 'class': 'cron-input', 'type': 'number', 'name': 'rate', 'value': data.rate || '' - }); - return elem; - }(), function () { - var elem = lay.elem('div', { - 'class': 'cron-input-mid' - }); - elem.innerHTML = undefined != tabItemLang.rateEnd ? tabItemLang.rateEnd : (tabItemLang.title + lang.rateEnd); - if (undefined != tabItemLang.rateEnd && tabItemLang.rateEnd === '') { - lay(elem).addClass(HIDE); - } - return elem; - }()] - - , rateDiv = lay.elem('div', { - 'class': 'cron-row' - }); - lay.each(rateChild, function (i, item) { - rateDiv.appendChild(item); - }); - if (tabItem.range) { - var rateTip = lay.elem('div', { - 'class': 'cron-tips' - }); - if (index === 4) { - // 周 - rateTip.innerHTML = '(1-4/1-7)'; - } else { - rateTip.innerHTML = ['(', rangeData.min, '/', (rangeData.max + (index <= 1 ? 1 : 0)), ')'].join(''); - } - rateDiv.appendChild(rateTip); - } - elem.appendChild(rateDiv); - } - - // 特殊:日(最近的工作日、最后一日),周(最后一周) - /*if (index === 2) { - // 日 - // 最近的工作日 - var weekChild = [function () { - var weekRadio = lay.elem('input', { - 'name': tabItemKey + '[type]', 'type': 'radio', 'value': 'weekday', 'title': lang.weekday - }); - if (data.type === 'weekday') { - lay(weekRadio).attr('checked', true); - } - return weekRadio; - }(), function () { - var elem = lay.elem('div', { - 'class': 'cron-input-mid' - }); - elem.innerHTML = lang.weekdayPrefix; - return elem; - }(), function () { - var elem = lay.elem('input', { - 'class': 'cron-input', 'type': 'number', 'name': 'weekday', 'value': data.value || '' - }); - return elem; - }(), function () { - var elem = lay.elem('div', { - 'class': 'cron-input-mid' - }); - elem.innerHTML = lang.weekdaySuffix; - return elem; - }(), function () { - var elem = lay.elem('div', { - 'class': 'cron-tips' - }); - elem.innerHTML = ['(', tabItem.range, ')'].join(''); - return elem; - }()] - - , weekDiv = lay.elem('div', { - 'class': 'cron-row' - }); - lay.each(weekChild, function (i, item) { - weekDiv.appendChild(item); - }); - elem.appendChild(weekDiv); - - // 本月最后一日 - elem.appendChild(function () { - var lastRadio = lay.elem('input', { - 'name': tabItemKey + '[type]', 'type': 'radio', 'value': 'lastday', 'title': lang.lastday - }); - if (data.type === 'lastday') { - lay(lastRadio).attr('checked', true); - } - var lastDiv = lay.elem('div', { - 'class': 'cron-row' - }); - lastDiv.appendChild(lastRadio); - return lastDiv; - }()); - - } - - if (index === 4) { - // 本月最后一个周几 - var lastWeekChild = [function () { - var lastWeekRadio = lay.elem('input', { - 'name': tabItemKey + '[type]', 'type': 'radio', 'value': 'lastweek', 'title': lang.lastweek - }); - if (data.type === 'lastweek') { - lay(lastWeekRadio).attr('checked', true); - } - return lastWeekRadio; - }(), function () { - var elem = lay.elem('input', { - 'class': 'cron-input', 'type': 'number', 'name': 'lastweek', 'value': data.value || '' - }); - return elem; - }(), function () { - var elem = lay.elem('div', { - 'class': 'cron-tips' - }); - elem.innerHTML = ['(', tabItem.range, ')'].join(''); - return elem; - }()] - - , lastWeekDiv = lay.elem('div', { - 'class': 'cron-row' - }); - lay.each(lastWeekChild, function (i, item) { - lastWeekDiv.appendChild(item); - }); - elem.appendChild(lastWeekDiv); - - }*/ - - // 指定 - if (index <= 4) { - elem.appendChild(function () { - var customRadio = lay.elem('input', { - 'name': tabItemKey + '[type]', 'type': 'radio', 'value': 'custom', 'title': lang.custom - }); - if (data.type === 'custom') { - lay(customRadio).attr('checked', true); - } - var customDiv = lay.elem('div', { - 'class': 'cron-row' - }); - customDiv.appendChild(customRadio); - return customDiv; - }()); - - // 指定数值,时分秒显示两位数,自动补零 - elem.appendChild(function () { - var customGrid = lay.elem('div', { - 'class': 'cron-grid' - }); - var i = rangeData.min; - while (i <= rangeData.max) { - // 时分秒显示两位数,自动补零 - var gridItemValue = index <= 1 ? lay.digit(i, 2) : i; - var gridItem = lay.elem('input', { - 'type': 'checkbox', - 'title': gridItemValue, - 'lay-skin': 'primary', - 'name': tabItemKey + '[custom]', - 'value': i - }); - if (data.values && data.values.includes(i)) { - lay(gridItem).attr('checked', true); - } - customGrid.appendChild(gridItem); - i++; - } - return customGrid; - }()); - } - - - return elem; - } - - //是否输入框 - Class.prototype.isInput = function (elem) { - return /input|textarea/.test(elem.tagName.toLocaleLowerCase()); - }; - - // 绑定的元素事件处理 - Class.prototype.events = function () { - var that = this, options = that.config - - //绑定呼出控件事件 - , showEvent = function (elem, bind) { - elem.on(options.trigger, function () { - bind && (that.bindElem = this); - that.render(); - }); - }; - - if (!options.elem[0] || options.elem[0].eventHandler) return; - - showEvent(options.elem, 'bind'); - showEvent(options.eventElem); - - //绑定关闭控件事件 - lay(document).on('click', function (e) { - if (e.target === options.elem[0] || e.target === options.eventElem[0] || e.target === lay(options.closeStop)[0]) { - return; - } - that.remove(); - }).on('keydown', function (e) { - if (e.keyCode === 13) { - if (lay('#' + that.elemID)[0] && that.elemID === Class.thisElemDate) { - e.preventDefault(); - lay(that.footer).find(ELEM_CONFIRM)[0].click(); - } - } - }); - - //自适应定位 - lay(window).on('resize', function () { - if (!that.elem || !lay(ELEM)[0]) { - return false; - } - that.position(); - }); - - options.elem[0].eventHandler = true; - }; - - // 主面板事件 - Class.prototype.elemEvent = function () { - var that = this, options = that.config, tabFilter = 'cron-tab' + options.elem.attr('lay-key'); - - // 阻止主面板点击冒泡,避免因触发文档事件而关闭主面 - lay(that.elem).on('click', function (e) { - lay.stope(e); - }); - - // tab选项卡切换 - var lis = lay(that.elemTab).find('li'); - lis.on('click', function () { - var layid = lay(this).attr('lay-id'); - if (undefined === layid) { - return; - } - element.tabChange(tabFilter, layid); - }); - - // cron选项点击 - form.on('radio', function (data) { - var $parent = data.othis.parent(); - var formFilter = $parent.parent().attr('lay-filter'); - var formData = form.val(formFilter); - var radioType = data.value; - if ('range' === radioType) { - // 范围 - form.val(formFilter, { - rangeStart: formData.rangeStart || 0, rangeEnd: formData.rangeEnd || 2 - }); - } - if ('rate' === radioType) { - // 频率 - form.val(formFilter, { - begin: formData.begin || 0, rate: formData.rate || 2 - }); - } - if ('custom' === radioType) { - // custom - var $grid = $parent.next(); - if ($grid.find(':checkbox:checked').length <= 0) { - $grid.children(':checkbox:first').next().click() - } - } - if ('weekday' === radioType) { - // weekday - form.val(formFilter, { - weekday: formData.weekday || 1 - }); - } - if ('lastweek' === radioType) { - // lastweek - form.val(formFilter, { - lastweek: formData.lastweek || 1 - }); - } - - }); - - //gird checkbox点击时,自动选中radio - form.on('checkbox', function (data) { - //触发选项的点击事件 - var $parent = data.othis.parent().parent(); - //循环父级,找到子级的子级找到value="custom"的radio - var $radio = $parent.children().find('input[value="custom"]'); - //触发radio的点击事件 - $radio.next().click(); - }); - - //点击底部按钮 - lay(that.footer).find('span').on('click', function () { - var type = lay(this).attr('lay-type'); - that.tool(this, type); - }); - }; - - //底部按钮点击事件 - Class.prototype.tool = function (btn, type) { - var that = this, options = that.config, lang = that.lang(), isStatic = options.position === 'static', active = { - //运行 - run: function () { - var value = that.parse(); - var loading = layer.load(); - $.get(options.run, {cron: value}, function (res) { - layer.close(loading); - if (res.code !== 0) { - return that.hint(res.msg); - } - that.runHint(res.data); - }, 'json').fail(function () { - layer.close(loading); - that.hint('服务器异常!'); - }); - } - - //确定 - , confirm: function () { - var value = that.parse(); - that.done([value]); - that.setValue(value).remove() - } - }; - active[type] && active[type](); - }; - - //执行 done/change 回调 - Class.prototype.done = function (param, type) { - var that = this, options = that.config; - - param = param || [that.parse()]; - typeof options[type || 'done'] === 'function' && options[type || 'done'].apply(options, param); - - return that; - }; - - // 解析cron表达式 - Class.prototype.parse = function () { - var that = this, options = that.config, valueArr = []; - - lay.each(options.tabs, function (index, item) { - var key = item.key; - var formFilter = 'cronForm' + key + options.elem.attr('lay-key'); - var formData = form.val(formFilter); - var radioType = (key + '[type]'); - var current = ""; - if (formData[radioType] === 'every') { - // 每次 - current = "*"; - } - if (formData[radioType] === 'range') { - // 范围 - current = formData.rangeStart + "-" + formData.rangeEnd; - } - if (formData[radioType] === 'rate') { - // 频率 - current = formData.begin + "/" + formData.rate; - } - if (formData[radioType] === 'custom') { - // 指定 - var checkboxName = (item.key + '[custom]'); - var customArr = []; - $('input[name="' + checkboxName + '"]:checked').each(function () { - customArr.push($(this).val()); - }); - current = customArr.join(','); - } - if (formData[radioType] === 'weekday') { - // 每月 formData.weekday 号最近的那个工作日 - current = formData.weekday + "W"; - } - if (formData[radioType] === 'lastday') { - // 本月最后一日 - current = "L"; - } - if (formData[radioType] === 'lastweek') { - // 本月最后星期 - current = formData.lastweek + "L"; - } - - if (formData[radioType] === 'unspecified' && index != 6) { - // 不指定 - current = "?"; - } - if (current !== "") { - valueArr.push(current); - options.cron[key] = current; - } - }); - return valueArr.join(' '); - }; - - //控件移除 - Class.prototype.remove = function (prev) { - var that = this, options = that.config, elem = lay('#' + (prev || that.elemID)); - if (!elem[0]) return that; - - if (!elem.hasClass(ELEM_STATIC)) { - that.checkCron(function () { - elem.remove(); - }); - } - return that; - }; - - //定位算法 - Class.prototype.position = function () { - var that = this, options = that.config; - lay.position(that.bindElem || options.elem[0], that.elem, { - position: options.position - }); - return that; - }; - - //提示 - Class.prototype.hint = function (content) { - var that = this, options = that.config, div = lay.elem('div', { - 'class': ELEM_HINT - }); - - if (!that.elem) return; - - div.innerHTML = content || ''; - lay(that.elem).find('.' + ELEM_HINT).remove(); - that.elem.appendChild(div); - - clearTimeout(that.hinTimer); - that.hinTimer = setTimeout(function () { - lay(that.elem).find('.' + ELEM_HINT).remove(); - }, 3000); - }; - - //运行提示 - Class.prototype.runHint = function (runList) { - var that = this, options = that.config, div = lay.elem('div', { - 'class': ELEM_RUN_HINT - }); - // debugger; - if (!that.elem || !runList || !runList.length) return; - - - lay(div).html(function () { - var html = []; - lay.each(runList, function (i, item) { - html.push('
' + item + '
'); - }); - return html.join(''); - }()); - - lay(that.elem).find('.' + ELEM_RUN_HINT).remove(); - that.elem.appendChild(div); - }; - - //赋值 - Class.prototype.setValue = function (value = '') { - var that = this, options = that.config, elem = that.bindElem || options.elem[0], - valType = that.isInput(elem) ? 'val' : 'html' - - options.position === 'static' || lay(elem)[valType](value || ''); - elem.textContent = '生成'; - return this; - }; - - //cron校验 - Class.prototype.checkCron = function (fn) { - var that = this, options = that.config, lang = that.lang(), elem = that.bindElem || options.elem[0], - value = that.isInput(elem) ? elem.value : (options.position === 'static' ? '' : elem.innerHTML) - - , checkValid = function (value = "") { - - }; - - // cron 值,多个空格替换为一个空格,去掉首尾空格 - value = value || options.value; - if (typeof value === 'string') { - value = value.replace(/\s+/g, ' ').replace(/^\s|\s$/g, ''); - } - - if (fn === 'init') return checkValid(value), that; - - value = that.parse(); - if (value) { - that.setValue(value); - } - fn && fn(); - return that; - }; - - //核心入口 - cron.render = function (options) { - var ins = new Class(options); - return thisIns.call(ins); - }; - - exports('cron', cron); -}); diff --git a/public/panel/modules/echartsTheme.js b/public/panel/modules/echartsTheme.js deleted file mode 100644 index a2a5aa17..00000000 --- a/public/panel/modules/echartsTheme.js +++ /dev/null @@ -1,261 +0,0 @@ -/** - * Set echarts theme - */ - -layui.define(function (exports) { - exports('echartsTheme', { - // 默认色板 - color: [ - '#16baaa', '#1E9FFF', '#16b777', '#FFB980', '#D87A80', - '#8d98b3', '#e5cf0d', '#97b552', '#95706d', '#dc69aa', - '#07a2a4', '#9a7fd1', '#588dd5', '#f5994e', '#c05050', - '#59678c', '#c9ab00', '#7eb00a', '#6f5553', '#c14089' - ], - - // 图表标题 - title: { - textStyle: { - fontWeight: 'normal', - color: '#5F5F5F' // 主标题文字颜色 - } - }, - - // 值域 - dataRange: { - itemWidth: 15, - color: ['#16baaa', '#e0ffff'] - }, - - // 工具箱 - toolbox: { - color: ['#1e90ff', '#1e90ff', '#1e90ff', '#1e90ff'], - effectiveColor: '#ff4500' - }, - - // 提示框 - tooltip: { - backgroundColor: 'rgba(50,50,50,0.5)', // 提示背景颜色,默认为透明度为0.7的黑色 - axisPointer: { // 坐标轴指示器,坐标轴触发有效 - type: 'line', // 默认为直线,可选为:'line' | 'shadow' - lineStyle: { // 直线指示器样式设置 - color: '#16baaa' - }, - crossStyle: { - color: '#008acd' - }, - shadowStyle: { // 阴影指示器样式设置 - color: 'rgba(200,200,200,0.2)' - } - } - }, - - // 区域缩放控制器 - dataZoom: { - dataBackgroundColor: '#efefff', // 数据背景颜色 - fillerColor: 'rgba(182,162,222,0.2)', // 填充颜色 - handleColor: '#008acd' // 手柄颜色 - }, - - // 网格 - grid: { - borderColor: '#eee' - }, - - // 类目轴 - X轴 - categoryAxis: { - axisLine: { // 坐标轴线 - lineStyle: { // 属性lineStyle控制线条样式 - color: '#16baaa' - } - }, - axisTick: { //小标记 - show: false - }, - splitLine: { // 分隔线 - lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式 - color: ['#eee'] - } - } - }, - - // 数值型坐标轴默认参数 - Y轴 - valueAxis: { - axisLine: { // 坐标轴线 - lineStyle: { // 属性lineStyle控制线条样式 - color: '#16baaa' - } - }, - splitArea: { - show: true, - areaStyle: { - color: ['rgba(250,250,250,0.1)', 'rgba(200,200,200,0.1)'] - } - }, - splitLine: { // 分隔线 - lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式 - color: ['#eee'] - } - } - }, - - polar: { - axisLine: { // 坐标轴线 - lineStyle: { // 属性lineStyle控制线条样式 - color: '#ddd' - } - }, - splitArea: { - show: true, - areaStyle: { - color: ['rgba(250,250,250,0.2)', 'rgba(200,200,200,0.2)'] - } - }, - splitLine: { - lineStyle: { - color: '#ddd' - } - } - }, - - timeline: { - lineStyle: { - color: '#16baaa' - }, - controlStyle: { - normal: { color: '#16baaa' }, - emphasis: { color: '#16baaa' } - }, - symbol: 'emptyCircle', - symbolSize: 3 - }, - - // 柱形图默认参数 - bar: { - itemStyle: { - normal: { - barBorderRadius: 2 - }, - emphasis: { - barBorderRadius: 2 - } - } - }, - - // 折线图默认参数 - line: { - smooth: true, - symbol: 'emptyCircle', // 拐点图形类型 - symbolSize: 3 // 拐点图形大小 - }, - - // K线图默认参数 - k: { - itemStyle: { - normal: { - color: '#d87a80', // 阳线填充颜色 - color0: '#2ec7c9', // 阴线填充颜色 - lineStyle: { - color: '#d87a80', // 阳线边框颜色 - color0: '#2ec7c9' // 阴线边框颜色 - } - } - } - }, - - // 散点图默认参数 - scatter: { - symbol: 'circle', // 图形类型 - symbolSize: 4 // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2 - }, - - // 雷达图默认参数 - radar: { - symbol: 'emptyCircle', // 图形类型 - symbolSize: 3 - //symbol: null, // 拐点图形类型 - //symbolRotate : null, // 图形旋转控制 - }, - - map: { - itemStyle: { - normal: { - areaStyle: { - color: '#ddd' - }, - label: { - textStyle: { - color: '#d87a80' - } - } - }, - emphasis: { // 也是选中样式 - areaStyle: { - color: '#fe994e' - } - } - } - }, - - force: { - itemStyle: { - normal: { - linkStyle: { - color: '#1e90ff' - } - } - } - }, - - chord: { - itemStyle: { - normal: { - borderWidth: 1, - borderColor: 'rgba(128, 128, 128, 0.5)', - chordStyle: { - lineStyle: { - color: 'rgba(128, 128, 128, 0.5)' - } - } - }, - emphasis: { - borderWidth: 1, - borderColor: 'rgba(128, 128, 128, 0.5)', - chordStyle: { - lineStyle: { - color: 'rgba(128, 128, 128, 0.5)' - } - } - } - } - }, - - gauge: { - axisLine: { // 坐标轴线 - lineStyle: { // 属性lineStyle控制线条样式 - color: [[0.2, '#2ec7c9'], [0.8, '#5ab1ef'], [1, '#d87a80']], - width: 10 - } - }, - axisTick: { // 坐标轴小标记 - splitNumber: 10, // 每份split细分多少段 - length: 15, // 属性length控制线长 - lineStyle: { // 属性lineStyle控制线条样式 - color: 'auto' - } - }, - splitLine: { // 分隔线 - length: 22, // 属性length控制线长 - lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式 - color: 'auto' - } - }, - pointer: { - width: 5 - } - }, - - textStyle: { - fontFamily: '微软雅黑, Arial, Verdana, sans-serif' - } - }) -}) \ No newline at end of file diff --git a/public/panel/style/imgs/bg-none.jpg b/public/panel/style/imgs/bg-none.jpg deleted file mode 100644 index b7c9e7b864d9354ae00404bb74f1e144ab57e03b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 832 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 LkMsY&B=7zSsUr%7 diff --git a/public/panel/style/imgs/logo-black.png b/public/panel/style/imgs/logo-black.png deleted file mode 100644 index 73e5ebcb43833eeb621ff764dc7e44323c9afe10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmV;&0XY7NP)5r00004b3#c}2nYxW zdCwEd&dj#V7Cqd=J4URoa-! zQm~rZ$`m1Kwa`ikY?@JK|4gAfFx-zh_uRw1)9Uy8AR>OCol@HOi8E68SJ;V&wP6Wv zvi&v`K}zWbzpxq+C&MU!$80YmqV*Aib|Zc(TEth}mX8rJjqm8-IHh#oR4`fihn0qV z*uol42NXm^8`A}NyF&0Y-wrOJRs4fF{KjYozhX9}^i&~wKjjQoieebU0tN^o;ylY= zPbvK?XRupo@THRLE$h0PqUqSxwnyUV!7 xQib3T{uc2}1NYFz8J=-hA($|@+Sdkd^gosxIT#r*89V?0002ovPDHLkV1mgovMc}q diff --git a/public/panel/style/imgs/logo.png b/public/panel/style/imgs/logo.png deleted file mode 100644 index ac1e00b75a539af099c2c74ded82b2aa300b8a51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457 zcmV;)0XF`LP)5r00004b3#c}2nYxW zdqg}+VW%~c^NNvQz|SO^OKYZ)Y9KmuZAF9<${PvR4Zg^yq-SlIXm zTG%N;P{^^kb8%QV7!M4)JF|Oc=FA330Mo!VkON)*14*TwNg7G&Ip3e=4{b?9N%xZS zNeL>hm=E9q*aA)`?I0$2wfzOq81tqIOr;3QAXde0;_(uN*muBQOpr%e`#>!sI0Od3 z4sZli{Dm2y<<8sYdvm^9%iIQTfRR^pMbe9Y@GPm5P=3zr*AzNY1r5s-&6Y06u|t7q5Q<-_*SmYZ@I#00000NkvXXu0mjfaY?Nk diff --git a/public/panel/style/imgs/template/character.jpg b/public/panel/style/imgs/template/character.jpg deleted file mode 100644 index 33c7691aa62991324afeed6acfd220e0b3ae4e85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6727 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 diff --git a/public/panel/style/imgs/template/huge.jpg b/public/panel/style/imgs/template/huge.jpg deleted file mode 100644 index b824e41ce3f39b500c5441d344ae3e2e160716a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12627 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 diff --git a/public/panel/style/imgs/template/portrait.png b/public/panel/style/imgs/template/portrait.png deleted file mode 100644 index 33c7691aa62991324afeed6acfd220e0b3ae4e85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6727 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 diff --git a/public/panel/style/template.css b/public/panel/style/template.css deleted file mode 100644 index 66cd501f..00000000 --- a/public/panel/style/template.css +++ /dev/null @@ -1,762 +0,0 @@ -/** - * 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: #16b777; - 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/views/cron.html b/public/panel/views/cron.html deleted file mode 100644 index 8027c140..00000000 --- a/public/panel/views/cron.html +++ /dev/null @@ -1,406 +0,0 @@ - -计划任务 - -
-
-
添加计划任务
-
-
-

面板的计划任务均基于脚本运行,若任务类型满足不了需求,可自行修改对应的脚本。

-
-
-
- -
- -
-
请选择任务类型
-
-
- -
- -
-
请填写任务名称
-
- - - - - -
- -
- -
-
请务必正确填写执行周期
-
-
- -
-
# 在此输入你要执行的脚本内容
-
-
-
-
- - -
-
-
-
-
-
-
计划任务列表
-
-
- - - - - - -
-
-
- - diff --git a/public/panel/views/index.html b/public/panel/views/index.html deleted file mode 100644 index 8402ff10..00000000 --- a/public/panel/views/index.html +++ /dev/null @@ -1,359 +0,0 @@ - -
-
- -
-
-
资源使用
-
-
-

CPU信息加载中

-
-
-
-

内存信息加载中

-
-
-
-
-
-
-
-
系统负载
-
-
-

近1分钟

-
-
-
-

近5分钟

-
-
-
-
-
-
-
-
- 实时流量 - 发送 / 接收 -
-
-

获取中...

-
-
- 累计流量 - 发送 / 接收 -
-
-

获取中...

-
-
-
-
-
-
应用
-
- -
-
-
-
-
-
基本信息
-
- - - - - - - - - - - - - - - - - - - -
系统信息 - 获取中... -
面板版本 - 获取中... -
运行时间 - 获取中... -
操作 - - -
-
-
-
-
-
-
- 磁盘信息 - -
-
- -
-
-
-
-
-
- 关于面板 - -
-
-
-

开发组祝大家2023中秋国庆快乐!永无Bug,永不宕机!

-
-
-

欢迎您使用耗子Linux面板。如遇到问题/Bug,可通过 Q群12370907 / QQ频道 寻求帮助

-
-
-
-
-
-
- - diff --git a/public/panel/views/login.html b/public/panel/views/login.html deleted file mode 100644 index 79c6dcc4..00000000 --- a/public/panel/views/login.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - diff --git a/public/panel/views/logout.html b/public/panel/views/logout.html deleted file mode 100644 index dd6864fb..00000000 --- a/public/panel/views/logout.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - diff --git a/public/panel/views/monitor.html b/public/panel/views/monitor.html deleted file mode 100644 index 2d502396..00000000 --- a/public/panel/views/monitor.html +++ /dev/null @@ -1,404 +0,0 @@ - -资源监控 - -
-
-
-
- 开启监控 - 保存天数 -
-
-
- -
-
-
- 时间选择 -
-
- -
- - -
- -
-
- - -
-
-
- -
-
-
-
- 负载 -
-
-
-
-
-
- -
-
-
- CPU -
-
-
-
-
-
-
- -
-
-
-
- 内存 -
-
-
-
-
-
-
-
-
- 网络 -
-
-
-
-
-
-
-
- diff --git a/public/panel/views/plugin.html b/public/panel/views/plugin.html deleted file mode 100644 index 3825fbbc..00000000 --- a/public/panel/views/plugin.html +++ /dev/null @@ -1,185 +0,0 @@ -插件中心 - -
-
-
- 按钮点击一次即可,请勿重复点击以免重复操作,任务中心在右上方! -
-
-
- - - - -
-
-
- - diff --git a/public/panel/views/plugins/fail2ban.html b/public/panel/views/plugins/fail2ban.html deleted file mode 100644 index 970f92e5..00000000 --- a/public/panel/views/plugins/fail2ban.html +++ /dev/null @@ -1,335 +0,0 @@ - -Fail2ban -
-
-
-
-
Fail2ban 运行状态
-
-
当前状态:获取中
-
- - - - -
-
- 基本设置 -
-
-
- -
- -
-
IP白名单,以英文逗号,分隔
-
-
-
- -
-
-
-
-
-
-
Fail2ban 规则列表
-
-
- - - - -
-
-
-
-
- - diff --git a/public/panel/views/plugins/fail2ban/add_rule.html b/public/panel/views/plugins/fail2ban/add_rule.html deleted file mode 100644 index def482b9..00000000 --- a/public/panel/views/plugins/fail2ban/add_rule.html +++ /dev/null @@ -1,170 +0,0 @@ - - - diff --git a/public/panel/views/plugins/fail2ban/view_rule.html b/public/panel/views/plugins/fail2ban/view_rule.html deleted file mode 100644 index aaedbaf3..00000000 --- a/public/panel/views/plugins/fail2ban/view_rule.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - diff --git a/public/panel/views/plugins/mysql57.html b/public/panel/views/plugins/mysql57.html deleted file mode 100644 index 7a9f0d9d..00000000 --- a/public/panel/views/plugins/mysql57.html +++ /dev/null @@ -1,576 +0,0 @@ - -MySQL -
-
-
-
-
MySQL管理
-
-
-
    -
  • 基本信息
  • -
  • 管理
  • -
  • 配置修改
  • -
  • 负载状态
  • -
  • 错误日志
  • -
  • 慢查询日志
  • -
-
-
-
- 运行状态 -
-
当前状态:获取中
-
- - - - -
-
- 基本设置 -
-
-
- -
- -
-
查看/修改MySQL的root密码
-
-
-
- -
-
-
-
-
-
面板仅集成了部分常用功能,如需更多功能,建议安装 - phpMyAdmin 使用。 -
-
- 数据库列表 -
-
-
- 用户列表 -
-
- - - - - - - - -
-
-
此处修改的是MySQL主配置文件,如果你不了解各参数的含义,请不要随意修改!
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
-
-
-
-
-
- - diff --git a/public/panel/views/plugins/mysql57/add_database.html b/public/panel/views/plugins/mysql57/add_database.html deleted file mode 100644 index 19945a8b..00000000 --- a/public/panel/views/plugins/mysql57/add_database.html +++ /dev/null @@ -1,80 +0,0 @@ - - - diff --git a/public/panel/views/plugins/mysql57/add_user.html b/public/panel/views/plugins/mysql57/add_user.html deleted file mode 100644 index f0971a29..00000000 --- a/public/panel/views/plugins/mysql57/add_user.html +++ /dev/null @@ -1,80 +0,0 @@ - - - diff --git a/public/panel/views/plugins/mysql57/backup.html b/public/panel/views/plugins/mysql57/backup.html deleted file mode 100644 index 1689c7b3..00000000 --- a/public/panel/views/plugins/mysql57/backup.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - diff --git a/public/panel/views/plugins/mysql80.html b/public/panel/views/plugins/mysql80.html deleted file mode 100644 index 2c1134ce..00000000 --- a/public/panel/views/plugins/mysql80.html +++ /dev/null @@ -1,576 +0,0 @@ - -MySQL -
-
-
-
-
MySQL管理
-
-
-
    -
  • 基本信息
  • -
  • 管理
  • -
  • 配置修改
  • -
  • 负载状态
  • -
  • 错误日志
  • -
  • 慢查询日志
  • -
-
-
-
- 运行状态 -
-
当前状态:获取中
-
- - - - -
-
- 基本设置 -
-
-
- -
- -
-
查看/修改MySQL的root密码
-
-
-
- -
-
-
-
-
-
面板仅集成了部分常用功能,如需更多功能,建议安装 - phpMyAdmin 使用。 -
-
- 数据库列表 -
-
-
- 用户列表 -
-
- - - - - - - - -
-
-
此处修改的是MySQL主配置文件,如果你不了解各参数的含义,请不要随意修改!
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
-
-
-
-
-
- - diff --git a/public/panel/views/plugins/mysql80/add_database.html b/public/panel/views/plugins/mysql80/add_database.html deleted file mode 100644 index 5071c751..00000000 --- a/public/panel/views/plugins/mysql80/add_database.html +++ /dev/null @@ -1,80 +0,0 @@ - - - diff --git a/public/panel/views/plugins/mysql80/add_user.html b/public/panel/views/plugins/mysql80/add_user.html deleted file mode 100644 index e4e19efc..00000000 --- a/public/panel/views/plugins/mysql80/add_user.html +++ /dev/null @@ -1,80 +0,0 @@ - - - diff --git a/public/panel/views/plugins/mysql80/backup.html b/public/panel/views/plugins/mysql80/backup.html deleted file mode 100644 index bc83f293..00000000 --- a/public/panel/views/plugins/mysql80/backup.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - diff --git a/public/panel/views/plugins/openresty.html b/public/panel/views/plugins/openresty.html deleted file mode 100644 index b449be64..00000000 --- a/public/panel/views/plugins/openresty.html +++ /dev/null @@ -1,245 +0,0 @@ - -OpenResty -
-
-
-
-
OpenResty管理
-
-
-
    -
  • 运行状态
  • -
  • 配置修改
  • -
  • 负载状态
  • -
  • 错误日志
  • -
-
-
-
当前状态:获取中
-
- - - - -
-
-
-
此处修改的是OpenResty主配置文件,如果你不了解各参数的含义,请不要随意修改!
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
-
-
-
-
-
- - diff --git a/public/panel/views/plugins/php74.html b/public/panel/views/plugins/php74.html deleted file mode 100644 index 934b0301..00000000 --- a/public/panel/views/plugins/php74.html +++ /dev/null @@ -1,381 +0,0 @@ - -PHP-7.4 -
-
-
-
-
PHP-7.4管理
-
-
-
    -
  • 运行状态
  • -
  • 拓展管理
  • -
  • 配置修改
  • -
  • 负载状态
  • -
  • 运行日志
  • -
  • 慢日志
  • -
-
-
-
当前状态:获取中
-
- - - - -
-
-
-
- - -
-
-
此处修改的是PHP主配置文件,如果你不了解各参数的含义,请不要随意修改!
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
-
-
-
-
-
- - diff --git a/public/panel/views/plugins/php80.html b/public/panel/views/plugins/php80.html deleted file mode 100644 index 8c6cd3d1..00000000 --- a/public/panel/views/plugins/php80.html +++ /dev/null @@ -1,381 +0,0 @@ - -PHP-8.0 -
-
-
-
-
PHP-8.0管理
-
-
-
    -
  • 运行状态
  • -
  • 拓展管理
  • -
  • 配置修改
  • -
  • 负载状态
  • -
  • 运行日志
  • -
  • 慢日志
  • -
-
-
-
当前状态:获取中
-
- - - - -
-
-
-
- - -
-
-
此处修改的是PHP主配置文件,如果你不了解各参数的含义,请不要随意修改!
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
-
-
-
-
-
- - diff --git a/public/panel/views/plugins/php81.html b/public/panel/views/plugins/php81.html deleted file mode 100644 index 90eb683f..00000000 --- a/public/panel/views/plugins/php81.html +++ /dev/null @@ -1,381 +0,0 @@ - -PHP-8.1 -
-
-
-
-
PHP-8.1管理
-
-
-
    -
  • 运行状态
  • -
  • 拓展管理
  • -
  • 配置修改
  • -
  • 负载状态
  • -
  • 运行日志
  • -
  • 慢日志
  • -
-
-
-
当前状态:获取中
-
- - - - -
-
-
-
- - -
-
-
此处修改的是PHP主配置文件,如果你不了解各参数的含义,请不要随意修改!
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
-
-
-
-
-
- - diff --git a/public/panel/views/plugins/php82.html b/public/panel/views/plugins/php82.html deleted file mode 100644 index 64188dde..00000000 --- a/public/panel/views/plugins/php82.html +++ /dev/null @@ -1,381 +0,0 @@ - -PHP-8.2 -
-
-
-
-
PHP-8.2管理
-
-
-
    -
  • 运行状态
  • -
  • 拓展管理
  • -
  • 配置修改
  • -
  • 负载状态
  • -
  • 运行日志
  • -
  • 慢日志
  • -
-
-
-
当前状态:获取中
-
- - - - -
-
-
-
- - -
-
-
此处修改的是PHP主配置文件,如果你不了解各参数的含义,请不要随意修改!
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
-
-
-
-
-
- - diff --git a/public/panel/views/plugins/phpmyadmin.html b/public/panel/views/plugins/phpmyadmin.html deleted file mode 100644 index d32d2518..00000000 --- a/public/panel/views/plugins/phpmyadmin.html +++ /dev/null @@ -1,92 +0,0 @@ - -phpMyAdmin -
-
-
-
-
phpMyAdmin 信息
-
-
访问地址:获取中...
-
- 基本设置 -
-
-
- -
- -
-
查看 / 修改 phpMyAdmin 访问端口
-
-
-
- -
-
-
-
-
-
-
-
- - diff --git a/public/panel/views/plugins/postgresql15.html b/public/panel/views/plugins/postgresql15.html deleted file mode 100644 index abcc5c4f..00000000 --- a/public/panel/views/plugins/postgresql15.html +++ /dev/null @@ -1,524 +0,0 @@ - -PostgreSQL -
-
-
-
-
PostgreSQL管理
-
-
-
    -
  • 基本信息
  • -
  • 管理
  • -
  • 主配置
  • -
  • 用户配置
  • -
  • 负载状态
  • -
  • 日志
  • -
-
-
-
- 运行状态 -
-
- 当前状态:获取中
-
- - - - -
-
-
-
面板仅集成了部分常用功能,如需更多功能,请使用 - pgAdmin 客户端。 -
-
- 数据库列表 -
-
-
- 用户列表 -
-
- - - - - - - - -
-
-
此处修改的是PostgreSQL主配置文件,如果你不了解各参数的含义,请不要随意修改!
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
此处修改的是PostgreSQL用户配置文件,如果你不了解各参数的含义,请不要随意修改!
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
-
-
-
-                                    获取中...
-                                
-
-
-
-
-
-
-
-
- - diff --git a/public/panel/views/plugins/postgresql15/add_database.html b/public/panel/views/plugins/postgresql15/add_database.html deleted file mode 100644 index b3de339d..00000000 --- a/public/panel/views/plugins/postgresql15/add_database.html +++ /dev/null @@ -1,77 +0,0 @@ - - - diff --git a/public/panel/views/plugins/postgresql15/add_user.html b/public/panel/views/plugins/postgresql15/add_user.html deleted file mode 100644 index 9399af5a..00000000 --- a/public/panel/views/plugins/postgresql15/add_user.html +++ /dev/null @@ -1,79 +0,0 @@ - - - diff --git a/public/panel/views/plugins/postgresql15/backup.html b/public/panel/views/plugins/postgresql15/backup.html deleted file mode 100644 index 3125b4ad..00000000 --- a/public/panel/views/plugins/postgresql15/backup.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - diff --git a/public/panel/views/plugins/postgresql16.html b/public/panel/views/plugins/postgresql16.html deleted file mode 100644 index 77a48cc4..00000000 --- a/public/panel/views/plugins/postgresql16.html +++ /dev/null @@ -1,524 +0,0 @@ - -PostgreSQL -
-
-
-
-
PostgreSQL管理
-
-
-
    -
  • 基本信息
  • -
  • 管理
  • -
  • 主配置
  • -
  • 用户配置
  • -
  • 负载状态
  • -
  • 日志
  • -
-
-
-
- 运行状态 -
-
- 当前状态:获取中
-
- - - - -
-
-
-
面板仅集成了部分常用功能,如需更多功能,请使用 - pgAdmin 客户端。 -
-
- 数据库列表 -
-
-
- 用户列表 -
-
- - - - - - - - -
-
-
此处修改的是PostgreSQL主配置文件,如果你不了解各参数的含义,请不要随意修改!
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
此处修改的是PostgreSQL用户配置文件,如果你不了解各参数的含义,请不要随意修改!
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
-
-
-
-                                    获取中...
-                                
-
-
-
-
-
-
-
-
- - diff --git a/public/panel/views/plugins/postgresql16/add_database.html b/public/panel/views/plugins/postgresql16/add_database.html deleted file mode 100644 index 33057c4e..00000000 --- a/public/panel/views/plugins/postgresql16/add_database.html +++ /dev/null @@ -1,77 +0,0 @@ - - - diff --git a/public/panel/views/plugins/postgresql16/add_user.html b/public/panel/views/plugins/postgresql16/add_user.html deleted file mode 100644 index 841b756a..00000000 --- a/public/panel/views/plugins/postgresql16/add_user.html +++ /dev/null @@ -1,79 +0,0 @@ - - - diff --git a/public/panel/views/plugins/postgresql16/backup.html b/public/panel/views/plugins/postgresql16/backup.html deleted file mode 100644 index b7b1be9f..00000000 --- a/public/panel/views/plugins/postgresql16/backup.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - diff --git a/public/panel/views/plugins/pureftpd.html b/public/panel/views/plugins/pureftpd.html deleted file mode 100644 index 1b61f092..00000000 --- a/public/panel/views/plugins/pureftpd.html +++ /dev/null @@ -1,305 +0,0 @@ - -Pure-Ftpd -
-
-
-
-
Pure-Ftpd 运行状态
-
-
当前状态:获取中
-
- - - - -
-
- 基本设置 -
-
-
- -
- -
-
设置Pure-Ftpd的访问端口
-
-
-
- -
-
-
-
-
-
-
Pure-Ftpd 用户列表
-
-
- - - - -
-
-
-
-
- - diff --git a/public/panel/views/plugins/pureftpd/add_user.html b/public/panel/views/plugins/pureftpd/add_user.html deleted file mode 100644 index 699cad83..00000000 --- a/public/panel/views/plugins/pureftpd/add_user.html +++ /dev/null @@ -1,80 +0,0 @@ - - - diff --git a/public/panel/views/plugins/redis.html b/public/panel/views/plugins/redis.html deleted file mode 100644 index 77bb13b7..00000000 --- a/public/panel/views/plugins/redis.html +++ /dev/null @@ -1,190 +0,0 @@ - -Redis -
-
-
-
-
Redis 管理
-
-
-
    -
  • 运行状态
  • -
  • 配置修改
  • -
  • 负载状态
  • -
-
-
-
当前状态:获取中
-
- - - - -
-
-
-
此处修改的是Redis主配置文件,如果你不了解各参数的含义,请不要随意修改!
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
- - diff --git a/public/panel/views/plugins/s3fs.html b/public/panel/views/plugins/s3fs.html deleted file mode 100644 index a175071e..00000000 --- a/public/panel/views/plugins/s3fs.html +++ /dev/null @@ -1,102 +0,0 @@ - -S3fs -
-
-
-
-
S3fs 挂载列表
-
-
- - - - -
-
-
-
-
- - diff --git a/public/panel/views/plugins/s3fs/add_mount.html b/public/panel/views/plugins/s3fs/add_mount.html deleted file mode 100644 index 2b6a8be1..00000000 --- a/public/panel/views/plugins/s3fs/add_mount.html +++ /dev/null @@ -1,104 +0,0 @@ - - - diff --git a/public/panel/views/plugins/supervisor.html b/public/panel/views/plugins/supervisor.html deleted file mode 100644 index afeb2ebf..00000000 --- a/public/panel/views/plugins/supervisor.html +++ /dev/null @@ -1,451 +0,0 @@ - -Supervisor -
-
-
-
-
Supervisor 管理
-
-
-
    -
  • 运行状态
  • -
  • 进程列表
  • -
  • 配置修改
  • -
  • 运行日志
  • -
-
-
-
- 当前状态:获取中
-
- - - - -
-
-
-
- - - - -
-
-
此处修改的是Supervisor主配置文件,如果你不了解各参数的含义,请不要随意修改!
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
- -
-
-                                    获取中...
-                                
-
-
-
-
-
-
-
-
- - diff --git a/public/panel/views/plugins/supervisor/add_process.html b/public/panel/views/plugins/supervisor/add_process.html deleted file mode 100644 index 0389c7dc..00000000 --- a/public/panel/views/plugins/supervisor/add_process.html +++ /dev/null @@ -1,94 +0,0 @@ - - - diff --git a/public/panel/views/plugins/toolbox.html b/public/panel/views/plugins/toolbox.html deleted file mode 100644 index e085cb0f..00000000 --- a/public/panel/views/plugins/toolbox.html +++ /dev/null @@ -1,302 +0,0 @@ - -系统工具箱 -
-
-
-
-
系统工具箱
-
-
-
    -
  • DNS
  • -
  • SWAP
  • -
  • Hosts
  • -
  • 时区
  • -
  • Root密码
  • -
-
-
-
-
- -
- -
-
修改 DNS 1
-
-
- -
- -
-
修改 DNS 2
-
-
-
- -
-
-
-
-
-
- 总共: - 获取中... -
-
- 已用: - 获取中... -
-
- 可用: - 获取中... -
-
-
- -
- -
-
MB
-
-
-
- -
-
-
-
-
-
此处修改的是 /etc/hosts 文件。
- 提示:Ctrl+F 搜索关键字,Ctrl+S 保存,Ctrl+H 查找替换! -
-
-
- -
-
-
-
-
- -
- -
-
选择一个时区
-
-
-
- -
-
-
-
-
-
-
- -
- -
-
修改 root 密码
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
- - diff --git a/public/panel/views/safe.html b/public/panel/views/safe.html deleted file mode 100644 index 6e591566..00000000 --- a/public/panel/views/safe.html +++ /dev/null @@ -1,309 +0,0 @@ - -系统安全 - -
-
-
-
- 防火墙 - - 启用SSH - - SSH端口 -
- -
-
- -
- 允许Ping - -
-
- -
-
-
- -
-
-
-
- 端口控制 -
- -
-
- -
- -
- -
-
-
-
-
- - -
-
- -
-
- - diff --git a/public/panel/views/setting.html b/public/panel/views/setting.html deleted file mode 100644 index 715bb378..00000000 --- a/public/panel/views/setting.html +++ /dev/null @@ -1,175 +0,0 @@ - -面板设置 -
-
-
-
-
设置
-
- -
- - -
- -
- -
-
修改面板的显示名称
-
-
- -
- -
-
修改面板的登录用户名
-
-
- -
- -
-
修改面板的登录密码(留空不修改)
-
-
- -
- -
-
修改面板账号的邮箱,目前用于签发免费SSL证书
-
-
- -
- -
-
修改面板的访问端口(保存后需要重启面板并修改浏览器地址栏的端口为新端口以访问面板) -
-
-
- -
- -
-
修改面板的访问入口(保存后需要重启面板并修改浏览器地址栏的入口为新入口以访问面板) -
-
-
- -
- -
-
修改面板的默认建站目录
-
-
- -
- -
-
修改面板的默认备份目录
-
-
-
- -
-
-
- -
-
-
-
-
- - diff --git a/public/panel/views/ssh.html b/public/panel/views/ssh.html deleted file mode 100644 index 1414f9a5..00000000 --- a/public/panel/views/ssh.html +++ /dev/null @@ -1,159 +0,0 @@ - -SSH - -
-
-
- SSH -
-
-
-
- 地址 -
- -
- 端口 -
- -
- 账号 -
- -
- 密码 -
- -
-
- -
-
-
-
-
-
-
-
- - - - diff --git a/public/panel/views/task.html b/public/panel/views/task.html deleted file mode 100644 index 60e79912..00000000 --- a/public/panel/views/task.html +++ /dev/null @@ -1,230 +0,0 @@ - - -任务中心 -
-
-
-
-
任务列表
-
-
-
    -
  • 进行中
  • -
  • 等待中
  • -
  • 已完成
  • -
  • 已失败
  • -
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
-
-
-
-
-
- - diff --git a/public/panel/views/ui/404.html b/public/panel/views/ui/404.html deleted file mode 100644 index a0e4e967..00000000 --- a/public/panel/views/ui/404.html +++ /dev/null @@ -1,14 +0,0 @@ -404 页面不存在 - -
-
- -
-

- 4 - 0 - 4 -

-
-
-
\ No newline at end of file diff --git a/public/panel/views/ui/error.html b/public/panel/views/ui/error.html deleted file mode 100644 index 9d790cfa..00000000 --- a/public/panel/views/ui/error.html +++ /dev/null @@ -1,12 +0,0 @@ -出错了 - -
-
- - -
- 好像出错了呢 -
- -
-
\ No newline at end of file diff --git a/public/panel/views/ui/layout.html b/public/panel/views/ui/layout.html deleted file mode 100644 index 68d43477..00000000 --- a/public/panel/views/ui/layout.html +++ /dev/null @@ -1,177 +0,0 @@ -
-
- - - -
- - -
-
- -
-
- - - - - - - -
-
-
- - -
- -
diff --git a/public/panel/views/ui/theme.html b/public/panel/views/ui/theme.html deleted file mode 100644 index 62840a89..00000000 --- a/public/panel/views/ui/theme.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - diff --git a/public/panel/views/website/add.html b/public/panel/views/website/add.html deleted file mode 100644 index c52c6950..00000000 --- a/public/panel/views/website/add.html +++ /dev/null @@ -1,160 +0,0 @@ - - - diff --git a/public/panel/views/website/backup.html b/public/panel/views/website/backup.html deleted file mode 100644 index c12903e4..00000000 --- a/public/panel/views/website/backup.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - diff --git a/public/panel/views/website/default_config.html b/public/panel/views/website/default_config.html deleted file mode 100644 index ed8ce8f7..00000000 --- a/public/panel/views/website/default_config.html +++ /dev/null @@ -1,76 +0,0 @@ - - - diff --git a/public/panel/views/website/edit.html b/public/panel/views/website/edit.html deleted file mode 100644 index 46e00b23..00000000 --- a/public/panel/views/website/edit.html +++ /dev/null @@ -1,482 +0,0 @@ - - - diff --git a/public/panel/views/website/list.html b/public/panel/views/website/list.html deleted file mode 100644 index 855d97f8..00000000 --- a/public/panel/views/website/list.html +++ /dev/null @@ -1,246 +0,0 @@ - -网站 -
-
-
-
-
网站列表
-
-
- - - - - - - - - - - -
-
-
-
-
- - diff --git a/public/robots.txt b/public/robots.txt deleted file mode 100644 index 1f53798b..00000000 --- a/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: /