├── .gitignore ├── LICENSE ├── README.md ├── app.js ├── assets ├── css │ └── framework-ui.css ├── images │ ├── 404.png │ ├── default_photo.png │ ├── loading.gif │ ├── login_info.png │ ├── shards-logo.ico │ └── shards-logo.svg ├── js │ └── framework-ui.js └── libs │ ├── animate │ └── animate.css │ ├── bootstrap-table │ ├── bootstrap-table.css │ ├── bootstrap-table.js │ ├── extensions │ │ ├── accent-neutralise │ │ │ ├── bootstrap-table-accent-neutralise.js │ │ │ └── bootstrap-table-accent-neutralise.min.js │ │ ├── addrbar │ │ │ ├── bootstrap-table-addrbar.js │ │ │ └── bootstrap-table-addrbar.min.js │ │ ├── auto-refresh │ │ │ ├── bootstrap-table-auto-refresh.js │ │ │ └── bootstrap-table-auto-refresh.min.js │ │ ├── cell-input │ │ │ ├── bootstrap-table-cell-input.css │ │ │ ├── bootstrap-table-cell-input.js │ │ │ ├── bootstrap-table-cell-input.min.css │ │ │ └── bootstrap-table-cell-input.min.js │ │ ├── cookie │ │ │ ├── bootstrap-table-cookie.js │ │ │ └── bootstrap-table-cookie.min.js │ │ ├── copy-rows │ │ │ ├── bootstrap-table-copy-rows.js │ │ │ └── bootstrap-table-copy-rows.min.js │ │ ├── defer-url │ │ │ ├── bootstrap-table-defer-url.js │ │ │ └── bootstrap-table-defer-url.min.js │ │ ├── editable │ │ │ ├── bootstrap-table-editable.js │ │ │ └── bootstrap-table-editable.min.js │ │ ├── export │ │ │ ├── bootstrap-table-export.js │ │ │ └── bootstrap-table-export.min.js │ │ ├── filter-control │ │ │ ├── bootstrap-table-filter-control.css │ │ │ ├── bootstrap-table-filter-control.js │ │ │ ├── bootstrap-table-filter-control.min.css │ │ │ └── bootstrap-table-filter-control.min.js │ │ ├── fixed-columns │ │ │ ├── bootstrap-table-fixed-columns.css │ │ │ ├── bootstrap-table-fixed-columns.js │ │ │ ├── bootstrap-table-fixed-columns.min.css │ │ │ └── bootstrap-table-fixed-columns.min.js │ │ ├── group-by-v2 │ │ │ ├── bootstrap-table-group-by.css │ │ │ ├── bootstrap-table-group-by.js │ │ │ ├── bootstrap-table-group-by.min.css │ │ │ └── bootstrap-table-group-by.min.js │ │ ├── i18n-enhance │ │ │ ├── bootstrap-table-i18n-enhance.js │ │ │ └── bootstrap-table-i18n-enhance.min.js │ │ ├── key-events │ │ │ ├── bootstrap-table-key-events.js │ │ │ └── bootstrap-table-key-events.min.js │ │ ├── mobile │ │ │ ├── bootstrap-table-mobile.js │ │ │ └── bootstrap-table-mobile.min.js │ │ ├── multiple-sort │ │ │ ├── bootstrap-table-multiple-sort.js │ │ │ └── bootstrap-table-multiple-sort.min.js │ │ ├── natural-sorting │ │ │ ├── bootstrap-table-natural-sorting.js │ │ │ └── bootstrap-table-natural-sorting.min.js │ │ ├── page-jump-to │ │ │ ├── bootstrap-table-page-jump-to.css │ │ │ ├── bootstrap-table-page-jump-to.js │ │ │ ├── bootstrap-table-page-jump-to.min.css │ │ │ └── bootstrap-table-page-jump-to.min.js │ │ ├── pipeline │ │ │ ├── bootstrap-table-pipeline.js │ │ │ └── bootstrap-table-pipeline.min.js │ │ ├── print │ │ │ ├── bootstrap-table-print.js │ │ │ └── bootstrap-table-print.min.js │ │ ├── reorder-columns │ │ │ ├── bootstrap-table-reorder-columns.js │ │ │ └── bootstrap-table-reorder-columns.min.js │ │ ├── reorder-rows │ │ │ ├── bootstrap-table-reorder-rows.css │ │ │ ├── bootstrap-table-reorder-rows.js │ │ │ ├── bootstrap-table-reorder-rows.min.css │ │ │ └── bootstrap-table-reorder-rows.min.js │ │ ├── resizable │ │ │ ├── bootstrap-table-resizable.js │ │ │ └── bootstrap-table-resizable.min.js │ │ ├── sticky-header │ │ │ ├── bootstrap-table-sticky-header.css │ │ │ ├── bootstrap-table-sticky-header.js │ │ │ ├── bootstrap-table-sticky-header.min.css │ │ │ └── bootstrap-table-sticky-header.min.js │ │ ├── toolbar │ │ │ ├── bootstrap-table-toolbar.js │ │ │ └── bootstrap-table-toolbar.min.js │ │ └── treegrid │ │ │ ├── bootstrap-table-treegrid.js │ │ │ └── bootstrap-table-treegrid.min.js │ ├── locale │ │ └── bootstrap-table-zh-CN.js │ └── themes │ │ ├── bulma │ │ ├── bootstrap-table-bulma.css │ │ └── bootstrap-table-bulma.js │ │ └── materialize │ │ ├── bootstrap-table-materialize.css │ │ └── bootstrap-table-materialize.js │ ├── bootstrap │ ├── css │ │ └── bootstrap.css │ └── js │ │ └── bootstrap.js │ ├── fSelect │ ├── README.md │ ├── fSelect.css │ ├── fSelect.js │ └── test.html │ ├── font-awesome │ ├── css │ │ ├── fontawesome-all.css │ │ ├── fontawesome-all.min.css │ │ ├── fontawesome.css │ │ └── fontawesome.min.css │ └── webfonts │ │ ├── fa-brands-400.eot │ │ ├── fa-brands-400.svg │ │ ├── fa-brands-400.ttf │ │ ├── fa-brands-400.woff │ │ ├── fa-brands-400.woff2 │ │ ├── fa-regular-400.eot │ │ ├── fa-regular-400.svg │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.eot │ │ ├── fa-solid-900.svg │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff │ │ └── fa-solid-900.woff2 │ ├── jquery-slimScroll │ └── jquery.slimscroll.js │ ├── jquery-treegrid │ ├── css │ │ └── jquery.treegrid.css │ ├── img │ │ ├── collapse.png │ │ ├── expand.png │ │ ├── file.png │ │ └── folder.png │ └── js │ │ └── jquery.treegrid.js │ ├── jquery-validate │ └── jquery.validate.js │ ├── jquery │ └── jquery.js │ ├── layer │ ├── images │ │ ├── icon-ext.png │ │ ├── icon.png │ │ ├── loading-0.gif │ │ ├── loading-1.gif │ │ ├── loading-2.gif │ │ └── loading-3.gif │ ├── layer.css │ └── layer.js │ ├── metisMenu │ └── jquery.metisMenu.js │ ├── moment │ ├── moment.js │ └── zh-cn.js │ ├── pace │ └── pace.js │ ├── popper │ └── popper.js │ ├── select2 │ ├── select2.css │ ├── select2.js │ └── zh-CN.js │ └── zTree │ ├── css │ └── zTreeStyle │ │ ├── img │ │ ├── diy │ │ │ ├── 1_close.png │ │ │ ├── 1_open.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ ├── 6.png │ │ │ ├── 7.png │ │ │ ├── 8.png │ │ │ └── 9.png │ │ ├── line_conn.gif │ │ ├── loading.gif │ │ ├── zTreeStandard.gif │ │ └── zTreeStandard.png │ │ └── zTreeStyle.css │ └── js │ ├── jquery.ztree.all.js │ ├── jquery.ztree.core.js │ ├── jquery.ztree.excheck.js │ ├── jquery.ztree.exedit.js │ └── jquery.ztree.exhide.js ├── common ├── logger.js └── tool.js ├── config.default.js ├── controller ├── login.js ├── main.js └── system.js ├── dbsync.js ├── middleware ├── auth.js └── requestLog.js ├── models ├── branch.js ├── index.js ├── menu.js ├── position.js ├── sql │ └── express_admin_init.sql └── user.js ├── package.json ├── router.js └── views ├── 404.ejs ├── _partial ├── header.ejs └── sidebar.ejs ├── layout-form.ejs ├── layout-main.ejs ├── layout-nologin.ejs ├── login.ejs ├── main └── index.ejs └── system ├── branch-edit.ejs ├── branch-list.ejs ├── menu-edit.ejs ├── menu-list.ejs ├── position-edit.ejs ├── position-list.ejs ├── user-edit.ejs └── user-list.ejs /.gitignore: -------------------------------------------------------------------------------- 1 | logs/ 2 | *.log 3 | *.log* 4 | 5 | *.lock 6 | *.lock.json 7 | *.lock.* 8 | *-lock.* 9 | 10 | node_modules 11 | 12 | .DS_Store 13 | .idea 14 | .classpath 15 | .project 16 | .settings 17 | Thumbs.db 18 | .ntvs_analysis.dat 19 | dist 20 | build 21 | .sass-cache/ 22 | 23 | nginx/ 24 | upload/* 25 | tmp/* 26 | config.js 27 | !.gitkeep 28 | .vscode/launch.json 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 ciey 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |
7 |