├── .gitignore ├── README.md ├── css ├── common.css ├── index.css └── yadmin.css ├── data ├── dept │ └── tree.json ├── menu │ ├── list.json │ └── tree.json ├── operator │ └── tree.json ├── role │ └── list.json ├── system │ └── urls.json └── user │ ├── list.json │ └── loginlog.json ├── favicon.ico ├── images ├── avatar.png ├── nav_userInfo │ └── default-avatar.svg └── security.png ├── index.html ├── js ├── common.js ├── jquery.js ├── tabRightMenu.js └── yadmin.js ├── layui ├── css │ ├── layui.css │ ├── layui.mobile.css │ └── modules │ │ ├── code.css │ │ ├── laydate │ │ └── default │ │ │ └── laydate.css │ │ ├── layer │ │ └── default │ │ │ ├── icon-ext.png │ │ │ ├── icon.png │ │ │ ├── layer.css │ │ │ ├── loading-0.gif │ │ │ ├── loading-1.gif │ │ │ └── loading-2.gif │ │ └── layui-icon-extend │ │ ├── iconfont.css │ │ ├── iconfont.eot │ │ ├── iconfont.js │ │ ├── iconfont.svg │ │ ├── iconfont.ttf │ │ ├── iconfont.woff │ │ └── iconfont.woff2 ├── extend │ ├── autocomplete.css │ ├── autocomplete.js │ ├── clipboard.min.js │ ├── dtree.css │ ├── dtree.js │ ├── font │ │ ├── dtreefont.css │ │ ├── dtreefont.eot │ │ ├── dtreefont.svg │ │ ├── dtreefont.ttf │ │ ├── dtreefont.woff │ │ └── icons.json │ ├── formSelects-v4.css │ ├── formSelects-v4.js │ ├── icon │ │ ├── iconfont.css │ │ ├── iconfont.eot │ │ ├── iconfont.js │ │ ├── iconfont.svg │ │ ├── iconfont.ttf │ │ └── iconfont.woff │ ├── iconPicker.js │ ├── optimizeSelectOption │ │ ├── optimizeSelectOption.css │ │ ├── optimizeSelectOption.js │ │ └── optimizeSelectOption.min.js │ ├── tabRightMenu.js │ ├── tablePlug.css │ ├── tablePlug.js │ └── tinymce │ │ ├── tinymce.bak │ │ ├── jquery.tinymce.min.js │ │ ├── langs │ │ │ ├── readme.md │ │ │ └── zh_CN.js │ │ ├── license.txt │ │ ├── plugins │ │ │ ├── advlist │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── anchor │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── autolink │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── autoresize │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── autosave │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── bbcode │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── charmap │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── code │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── codesample │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── colorpicker │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── contextmenu │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── directionality │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── emoticons │ │ │ │ ├── js │ │ │ │ │ ├── emojis.js │ │ │ │ │ └── emojis.min.js │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── fullpage │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── fullscreen │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── help │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── hr │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── image │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── imagetools │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── importcss │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── indent2em │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── insertdatetime │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── legacyoutput │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── link │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── lists │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── media │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── nonbreaking │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── noneditable │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── pagebreak │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── paste │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── preview │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── print │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── quickbars │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── save │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── searchreplace │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── spellchecker │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── tabfocus │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── table │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── template │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── textcolor │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── textpattern │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── toc │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── visualblocks │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ ├── visualchars │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ │ └── wordcount │ │ │ │ ├── plugin.js │ │ │ │ └── plugin.min.js │ │ ├── skins │ │ │ ├── content │ │ │ │ ├── dark │ │ │ │ │ ├── content.css │ │ │ │ │ ├── content.min.css │ │ │ │ │ └── content.min.css.map │ │ │ │ ├── default │ │ │ │ │ ├── content.css │ │ │ │ │ ├── content.min.css │ │ │ │ │ └── content.min.css.map │ │ │ │ ├── document │ │ │ │ │ ├── content.css │ │ │ │ │ ├── content.min.css │ │ │ │ │ └── content.min.css.map │ │ │ │ └── writer │ │ │ │ │ ├── content.css │ │ │ │ │ ├── content.min.css │ │ │ │ │ └── content.min.css.map │ │ │ └── ui │ │ │ │ ├── oxide-dark │ │ │ │ ├── content.css │ │ │ │ ├── content.inline.css │ │ │ │ ├── content.inline.min.css │ │ │ │ ├── content.inline.min.css.map │ │ │ │ ├── content.min.css │ │ │ │ ├── content.min.css.map │ │ │ │ ├── content.mobile.css │ │ │ │ ├── content.mobile.min.css │ │ │ │ ├── content.mobile.min.css.map │ │ │ │ ├── fonts │ │ │ │ │ └── tinymce-mobile.woff │ │ │ │ ├── skin.css │ │ │ │ ├── skin.min.css │ │ │ │ ├── skin.min.css.map │ │ │ │ ├── skin.mobile.css │ │ │ │ ├── skin.mobile.min.css │ │ │ │ └── skin.mobile.min.css.map │ │ │ │ └── oxide │ │ │ │ ├── content.css │ │ │ │ ├── content.inline.css │ │ │ │ ├── content.inline.min.css │ │ │ │ ├── content.inline.min.css.map │ │ │ │ ├── content.min.css │ │ │ │ ├── content.min.css.map │ │ │ │ ├── content.mobile.css │ │ │ │ ├── content.mobile.min.css │ │ │ │ ├── content.mobile.min.css.map │ │ │ │ ├── fonts │ │ │ │ └── tinymce-mobile.woff │ │ │ │ ├── skin.min.css │ │ │ │ ├── skin.min.css.map │ │ │ │ ├── skin.min1.css │ │ │ │ ├── skin.mobile.css │ │ │ │ ├── skin.mobile.min.css │ │ │ │ └── skin.mobile.min.css.map │ │ ├── themes │ │ │ ├── mobile │ │ │ │ ├── theme.js │ │ │ │ └── theme.min.js │ │ │ └── silver │ │ │ │ ├── theme.js │ │ │ │ └── theme.min.js │ │ ├── tinymce.js │ │ └── tinymce.min.js │ │ ├── tinymce.js │ │ └── tinymce │ │ ├── jquery.tinymce.min.js │ │ ├── langs │ │ ├── readme.md │ │ └── zh_CN.js │ │ ├── license.txt │ │ ├── plugins │ │ ├── advlist │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── anchor │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── autolink │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── autoresize │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── autosave │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── bbcode │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── charmap │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── code │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── codesample │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── colorpicker │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── contextmenu │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── directionality │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── emoticons │ │ │ ├── js │ │ │ │ ├── emojis.js │ │ │ │ └── emojis.min.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── fullpage │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── fullscreen │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── help │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── hr │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── image │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── imagetools │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── importcss │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── indent2em │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── insertdatetime │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── legacyoutput │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── link │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── lists │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── media │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── nonbreaking │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── noneditable │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── pagebreak │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── paste │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── preview │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── print │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── quickbars │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── save │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── searchreplace │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── spellchecker │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── tabfocus │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── table │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── template │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── textcolor │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── textpattern │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── toc │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── visualblocks │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── visualchars │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ └── wordcount │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── readme.md │ │ ├── skins │ │ ├── content │ │ │ ├── dark │ │ │ │ ├── content.css │ │ │ │ ├── content.min.css │ │ │ │ └── content.min.css.map │ │ │ ├── default │ │ │ │ ├── content.css │ │ │ │ ├── content.min.css │ │ │ │ └── content.min.css.map │ │ │ ├── document │ │ │ │ ├── content.css │ │ │ │ ├── content.min.css │ │ │ │ └── content.min.css.map │ │ │ └── writer │ │ │ │ ├── content.css │ │ │ │ ├── content.min.css │ │ │ │ └── content.min.css.map │ │ └── ui │ │ │ ├── oxide-dark │ │ │ ├── content.css │ │ │ ├── content.inline.css │ │ │ ├── content.inline.min.css │ │ │ ├── content.inline.min.css.map │ │ │ ├── content.min.css │ │ │ ├── content.min.css.map │ │ │ ├── content.mobile.css │ │ │ ├── content.mobile.min.css │ │ │ ├── content.mobile.min.css.map │ │ │ ├── fonts │ │ │ │ └── tinymce-mobile.woff │ │ │ ├── skin.css │ │ │ ├── skin.min.css │ │ │ ├── skin.min.css.map │ │ │ ├── skin.mobile.css │ │ │ ├── skin.mobile.min.css │ │ │ └── skin.mobile.min.css.map │ │ │ └── oxide │ │ │ ├── content.css │ │ │ ├── content.inline.css │ │ │ ├── content.inline.min.css │ │ │ ├── content.inline.min.css.map │ │ │ ├── content.min.css │ │ │ ├── content.min.css.map │ │ │ ├── content.mobile.css │ │ │ ├── content.mobile.min.css │ │ │ ├── content.mobile.min.css.map │ │ │ ├── fonts │ │ │ └── tinymce-mobile.woff │ │ │ ├── skin.css │ │ │ ├── skin.min.css │ │ │ ├── skin.min.css.map │ │ │ ├── skin.mobile.css │ │ │ ├── skin.mobile.min.css │ │ │ └── skin.mobile.min.css.map │ │ ├── themes │ │ ├── mobile │ │ │ ├── theme.js │ │ │ └── theme.min.js │ │ └── silver │ │ │ ├── theme.js │ │ │ └── theme.min.js │ │ ├── tinymce.js │ │ └── tinymce.min.js ├── font │ ├── iconfont.eot │ ├── iconfont.svg │ ├── iconfont.ttf │ ├── iconfont.woff │ └── iconfont.woff2 ├── images │ └── face │ │ ├── 0.gif │ │ ├── 1.gif │ │ ├── 10.gif │ │ ├── 11.gif │ │ ├── 12.gif │ │ ├── 13.gif │ │ ├── 14.gif │ │ ├── 15.gif │ │ ├── 16.gif │ │ ├── 17.gif │ │ ├── 18.gif │ │ ├── 19.gif │ │ ├── 2.gif │ │ ├── 20.gif │ │ ├── 21.gif │ │ ├── 22.gif │ │ ├── 23.gif │ │ ├── 24.gif │ │ ├── 25.gif │ │ ├── 26.gif │ │ ├── 27.gif │ │ ├── 28.gif │ │ ├── 29.gif │ │ ├── 3.gif │ │ ├── 30.gif │ │ ├── 31.gif │ │ ├── 32.gif │ │ ├── 33.gif │ │ ├── 34.gif │ │ ├── 35.gif │ │ ├── 36.gif │ │ ├── 37.gif │ │ ├── 38.gif │ │ ├── 39.gif │ │ ├── 4.gif │ │ ├── 40.gif │ │ ├── 41.gif │ │ ├── 42.gif │ │ ├── 43.gif │ │ ├── 44.gif │ │ ├── 45.gif │ │ ├── 46.gif │ │ ├── 47.gif │ │ ├── 48.gif │ │ ├── 49.gif │ │ ├── 5.gif │ │ ├── 50.gif │ │ ├── 51.gif │ │ ├── 52.gif │ │ ├── 53.gif │ │ ├── 54.gif │ │ ├── 55.gif │ │ ├── 56.gif │ │ ├── 57.gif │ │ ├── 58.gif │ │ ├── 59.gif │ │ ├── 6.gif │ │ ├── 60.gif │ │ ├── 61.gif │ │ ├── 62.gif │ │ ├── 63.gif │ │ ├── 64.gif │ │ ├── 65.gif │ │ ├── 66.gif │ │ ├── 67.gif │ │ ├── 68.gif │ │ ├── 69.gif │ │ ├── 7.gif │ │ ├── 70.gif │ │ ├── 71.gif │ │ ├── 8.gif │ │ └── 9.gif ├── lay │ └── modules │ │ ├── carousel.js │ │ ├── code.js │ │ ├── colorpicker.js │ │ ├── element.js │ │ ├── flow.js │ │ ├── form.js │ │ ├── jquery.js │ │ ├── laydate.js │ │ ├── layedit.js │ │ ├── layer.js │ │ ├── laypage.js │ │ ├── laytpl.js │ │ ├── mobile.js │ │ ├── rate.js │ │ ├── slider.js │ │ ├── table.js │ │ ├── transfer.js │ │ ├── tree.js │ │ ├── upload.js │ │ └── util.js ├── layui.all.js └── layui.js ├── signIn.html ├── static ├── echarts │ ├── echarts.min.js │ └── echartsTheme.js └── remixicon │ └── fonts │ ├── .keep │ ├── .keep 3 │ ├── remixicon.css │ ├── remixicon.eot │ ├── remixicon.glyph.json │ ├── remixicon.less │ ├── remixicon.svg │ ├── remixicon.symbol.svg │ ├── remixicon.ttf │ ├── remixicon.woff │ └── remixicon.woff2 └── view ├── abnormalPage ├── 403.html ├── 404.html └── 500.html ├── home └── index.html ├── menu ├── menu-add.html └── menu-list.html ├── nav ├── editPwd.html ├── messaging.html ├── note.html ├── todo.html └── userInfo.html ├── role ├── role-add.html └── role-list.html ├── user ├── user-add.html └── user-list.html └── website └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | .idea -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Y-Admin 2 |  3 | 4 | ## Y-Admin是基于 layui 实现后台管理模板 5 | 6 | > 为了工作上能够有效的控制开发时间,结合 `layui` 知识,参考 `z-admin` 自己搭建的一个关于后台管理系统的模板,能构建一个可以快速使用的简单后台模板,希望能帮助到有需要的人,有时间就会更新新的内容,实现一些常用的功能 7 | 8 | 9 | ## 快速开始 10 | 克隆项目: 11 | ``` 12 | git clone https://github.com/C-GY/Y-Admin.git 13 | ``` 14 | 部署本地后访问 [localhost/Y-Admin/index.html](localhost/Y-Admin/index.html) 15 | 16 | 演示网址 17 | [http://y-admin.yijianku.com](http://y-admin.yijianku.com) 18 | 19 | ## 项目结构说明 20 | ``` 21 | |-- Y-Admin 22 | |-- README.md //说明 23 | |-- .gitignore //git项目忽视文件 24 | |-- favicon.ico //网页标题栏图标 25 | |-- index.html //入口文件 26 | |-- css //CSS文件目录 27 | | |-- common.css //公用CSS文件 28 | | |-- index.css //首页专用CSS文件 29 | | |-- yadmin.css //核心CSS样式 30 | |-- data //静态模拟数据目录 31 | | |-- ... 32 | |-- images //图片目录 33 | | |-- ... 34 | |-- js //JS文件目录 35 | | |-- common.js //公用JS文件 36 | | |-- jquery.js //JQ文件 37 | | |-- tabRightMenu.js //菜单相关操作JS文件 38 | | |-- yadmin.js //核心JS文件 39 | |-- layui //Layui框架 40 | | |-- extend //Layui扩展组件(原Layui包中不存在) 41 | | |-- ... 42 | |-- static //第三方库(如:所用带的remixicon标库、Echarts等) 43 | | |-- ... 44 | |-- view //参考展示页面 45 | | |-- home //首页 46 | | |-- menu //菜单管理 47 | | |-- nav //消息通知、便签、TODO等页面 48 | | |-- role //角色管理 49 | | |-- user //用户管理 50 | | |-- website //网站设置 51 | 52 | 53 | ``` 54 | ## 相关技术 55 | 1. Layui 2.5.6 56 | 2. jQuery 57 | 3. Echarts 58 | 4. TinyMCE 59 | 5. remixicon 60 | 61 | 62 | ## 成果展示 63 |  64 |  65 |  66 |  67 |  68 | 更新中... 69 | -------------------------------------------------------------------------------- /css/common.css: -------------------------------------------------------------------------------- 1 | /* ----- 滚动条样式 ----- */ 2 | 3 | ::-webkit-scrollbar{width: 8px; height: 8px;background: transparent;} 4 | ::-webkit-scrollbar-button:vertical{display: none;} 5 | ::-webkit-scrollbar-track, ::-webkit-scrollbar-corner{background-color: #e2e2e2;} 6 | ::-webkit-scrollbar-thumb{border-radius: 8px; background-color: #a6a6a6;} 7 | ::-webkit-scrollbar-thumb:vertical:hover{background-color: #7f7f7f;} 8 | ::-webkit-scrollbar-thumb:vertical:active{background-color: rgba(0,0,0,.38);} 9 | 10 | /* ----- 滚动条样式 ----- */ 11 | 12 | 13 | * { 14 | box-sizing: border-box; 15 | } 16 | 17 | .page-loading { 18 | position: fixed; 19 | top: 0; 20 | left: 0; 21 | right: 0; 22 | bottom: 0; 23 | background-color: #fff; 24 | } 25 | 26 | .rubik-loader { 27 | width: 64px; 28 | height: 64px; 29 | position: absolute; 30 | left: 50%; 31 | top: 50%; 32 | -webkit-transform: translate(-50%, -50%); 33 | transform: translate(-50%, -50%); 34 | background-image: url(/images/loading.gif); 35 | background-repeat: no-repeat; 36 | background-position: center; 37 | } 38 | 39 | .yadmin-body { 40 | margin: 30px; 41 | } 42 | 43 | .yadmin-search-area input { 44 | height: 32px; 45 | } 46 | 47 | .yadmin-oper-area { 48 | font-size: 18px !important; 49 | margin-right: 5px; 50 | } 51 | 52 | .yadmin-blue { 53 | color: #1E9FFF; 54 | } 55 | 56 | .yadmin-red { 57 | color: #F56C6C; 58 | } 59 | 60 | .yadmin-left { 61 | float: left; 62 | } 63 | 64 | .yadmin-right { 65 | float: right; 66 | } 67 | 68 | .layui-form-select dl dd.layui-this { 69 | background-color: #1E9FFF; 70 | color: white; 71 | } 72 | 73 | /* .layui-form-onswitch { 74 | background-color: #02a7f0; 75 | border-color: #02a7f0; 76 | } */ 77 | 78 | .layui-laypage a:hover { 79 | color: #1E9FFF; 80 | } 81 | 82 | .layui-laypage .layui-laypage-curr .layui-laypage-em { 83 | background-color: #1E9FFF; 84 | } 85 | 86 | .layui-input:focus, .layui-textarea:focus { 87 | border-color: #1E9FFF !important; 88 | } 89 | 90 | .layui-btn-primary:hover { 91 | border-color: #1E9FFF; 92 | } 93 | 94 | .layui-laypage input:focus, .layui-laypage select:focus { 95 | border-color: #1E9FFF !important; 96 | } 97 | 98 | .layui-laypage em { 99 | font-weight: bold; 100 | } 101 | 102 | .layui-form-checked[lay-skin=primary] i { 103 | border-color: #1E9FFF !important; 104 | background-color: #1E9FFF; 105 | } 106 | 107 | 108 | .layui-form-radio>i:hover, .layui-form-radioed>i { 109 | color: #1E9FFF; 110 | } 111 | 112 | .layui-breadcrumb a:hover { 113 | color: #1E9FFF !important; 114 | } 115 | 116 | .layui-btn .layui-icon { 117 | margin-right: 0px !important; 118 | } 119 | 120 | .layui-form-label { 121 | padding: 6px 15px; 122 | } -------------------------------------------------------------------------------- /data/dept/tree.json: -------------------------------------------------------------------------------- 1 | { 2 | "msg": "操作成功", 3 | "code": 0, 4 | "data": [ 5 | { 6 | "parentId": 0, 7 | "orderNum": 1, 8 | "children": [ 9 | { 10 | "parentId": 1, 11 | "orderNum": 4, 12 | "id": 4, 13 | "name": "开发一组" 14 | }, 15 | { 16 | "parentId": 1, 17 | "orderNum": 5, 18 | "id": 5, 19 | "name": "开发二组" 20 | } 21 | ], 22 | "id": 1, 23 | "name": "开发部" 24 | }, 25 | { 26 | "parentId": 0, 27 | "orderNum": 2, 28 | "children": [ 29 | { 30 | "parentId": 2, 31 | "orderNum": 6, 32 | "id": 6, 33 | "name": "测试一组" 34 | }, 35 | { 36 | "parentId": 2, 37 | "orderNum": 7, 38 | "id": 7, 39 | "name": "测试二组" 40 | } 41 | ], 42 | "id": 2, 43 | "name": "测试部" 44 | }, 45 | { 46 | "parentId": 0, 47 | "orderNum": 3, 48 | "children": [ 49 | { 50 | "parentId": 3, 51 | "orderNum": 8, 52 | "id": 8, 53 | "name": "运维一组" 54 | }, 55 | { 56 | "parentId": 3, 57 | "orderNum": 9, 58 | "id": 9, 59 | "name": "运维二组" 60 | }, 61 | { 62 | "parentId": 3, 63 | "orderNum": 10, 64 | "id": 10, 65 | "name": "运维三组" 66 | } 67 | ], 68 | "id": 3, 69 | "name": "运维部" 70 | } 71 | ] 72 | } -------------------------------------------------------------------------------- /data/menu/list.json: -------------------------------------------------------------------------------- 1 | { 2 | "msg": "操作成功", 3 | "code": 0, 4 | "data": [ 5 | { 6 | "parentId": 0, 7 | "url": "#", 8 | "perms": "#", 9 | "orderNum": 0, 10 | "checkArr": "0", 11 | "id": 1, 12 | "name": "权限管理" 13 | }, 14 | { 15 | "parentId": 0, 16 | "url": "#", 17 | "perms": "#", 18 | "orderNum": 5, 19 | "checkArr": "0", 20 | "id": 11, 21 | "name": "系统监控" 22 | }, 23 | { 24 | "parentId": 0, 25 | "url": "/oauth2/index", 26 | "perms": "oauth2:index", 27 | "orderNum": 8, 28 | "checkArr": "0", 29 | "id": 30, 30 | "name": "账号关联" 31 | } 32 | ] 33 | } -------------------------------------------------------------------------------- /data/role/list.json: -------------------------------------------------------------------------------- 1 | { 2 | "count": 2, 3 | "code": 0, 4 | "data": [ 5 | { 6 | "roleId": 1, 7 | "roleName": "管理员", 8 | "remark": "这是一个管理员", 9 | "createTime": "2018-12-02 07:47:40", 10 | "modifyTime": "2018-12-02 07:47:45" 11 | }, 12 | { 13 | "roleId": 2, 14 | "roleName": "普通用户", 15 | "remark": "这是一个普通用户", 16 | "createTime": "2018-12-02 10:09:08", 17 | "modifyTime": "2019-06-05 20:50:41" 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /data/user/list.json: -------------------------------------------------------------------------------- 1 | { 2 | "count": 30, 3 | "code": 0, 4 | "data": [ 5 | { 6 | "userId": 1, 7 | "username": "张三", 8 | "email": "root@zhaojun.im", 9 | "status": "1", 10 | "lastLoginTime": "2019-07-06 18:40:34", 11 | "createTime": "2018-12-02 07:30:52", 12 | "deptId": 1, 13 | "deptName": "开发部" 14 | }, 15 | { 16 | "userId": 2, 17 | "username": "李四", 18 | "email": "user@qq.com", 19 | "status": "0", 20 | "lastLoginTime": "2019-06-05 21:24:23", 21 | "createTime": "2019-06-05 20:50:26", 22 | "deptId": 1, 23 | "deptName": "开发部" 24 | }, 25 | { 26 | "userId": 3, 27 | "username": "王五", 28 | "email": "user@qq.com", 29 | "status": "0", 30 | "lastLoginTime": "2019-06-05 21:24:23", 31 | "createTime": "2019-06-05 20:50:26", 32 | "deptId": 1, 33 | "deptName": "开发部" 34 | }, 35 | { 36 | "userId": 4, 37 | "username": "小明", 38 | "email": "user@qq.com", 39 | "status": "1", 40 | "lastLoginTime": "2019-06-05 21:24:23", 41 | "createTime": "2019-06-05 20:50:26", 42 | "deptId": 1, 43 | "deptName": "开发部" 44 | } 45 | ] 46 | } -------------------------------------------------------------------------------- /data/user/loginlog.json: -------------------------------------------------------------------------------- 1 | { 2 | "count": 30, 3 | "code": 0, 4 | "data": [ 5 | { 6 | "userName": "张三", 7 | "IP": "121.69.4.82", 8 | "status": "成功", 9 | "creationTime": "2018-12-02 07:30:52" 10 | }, 11 | { 12 | "userName": "李四", 13 | "IP": "112.80.107.214", 14 | "status": "成功", 15 | "creationTime": "2018-12-02 07:30:52" 16 | }, 17 | { 18 | "userName": "王五", 19 | "IP": "121.69.4.82", 20 | "status": "成功", 21 | "creationTime": "2018-12-02 07:30:52" 22 | }, 23 | { 24 | "userName": "小明", 25 | "IP": "125.70.231.238", 26 | "status": "成功", 27 | "creationTime": "2018-12-02 07:30:52" 28 | }, 29 | { 30 | "userName": "张三", 31 | "IP": "121.69.4.82", 32 | "status": "成功", 33 | "creationTime": "2018-12-02 07:30:52" 34 | }, 35 | { 36 | "userName": "李四", 37 | "IP": "112.80.107.214", 38 | "status": "成功", 39 | "creationTime": "2018-12-02 07:30:52" 40 | }, 41 | { 42 | "userName": "王五", 43 | "IP": "121.69.4.82", 44 | "status": "成功", 45 | "creationTime": "2018-12-02 07:30:52" 46 | }, 47 | { 48 | "userName": "张三", 49 | "IP": "121.69.4.82", 50 | "status": "成功", 51 | "creationTime": "2018-12-02 07:30:52" 52 | }, 53 | { 54 | "userName": "李四", 55 | "IP": "112.80.107.214", 56 | "status": "成功", 57 | "creationTime": "2018-12-02 07:30:52" 58 | }, 59 | { 60 | "userName": "王五", 61 | "IP": "121.69.4.82", 62 | "status": "成功", 63 | "creationTime": "2018-12-02 07:30:52" 64 | } 65 | ] 66 | } -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/favicon.ico -------------------------------------------------------------------------------- /images/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/images/avatar.png -------------------------------------------------------------------------------- /images/nav_userInfo/default-avatar.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/security.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/images/security.png -------------------------------------------------------------------------------- /js/common.js: -------------------------------------------------------------------------------- 1 | layui.config({ 2 | base: "../../js/", 3 | }).use(["yadmin", "tabRightMenu"], function () { 4 | var yadmin = layui.yadmin; 5 | var tabRightMenu = layui.tabRightMenu; 6 | 7 | // 渲染 tab 右键菜单. 8 | tabRightMenu.render({ 9 | filter: "lay-tab", 10 | pintabIDs: ["main"], 11 | width: 110, 12 | }); 13 | }); -------------------------------------------------------------------------------- /layui/css/modules/code.css: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.4 MIT License By https://www.layui.com */ 2 | html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none} -------------------------------------------------------------------------------- /layui/css/modules/layer/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/css/modules/layer/default/icon-ext.png -------------------------------------------------------------------------------- /layui/css/modules/layer/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/css/modules/layer/default/icon.png -------------------------------------------------------------------------------- /layui/css/modules/layer/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/css/modules/layer/default/loading-0.gif -------------------------------------------------------------------------------- /layui/css/modules/layer/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/css/modules/layer/default/loading-1.gif -------------------------------------------------------------------------------- /layui/css/modules/layer/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/css/modules/layer/default/loading-2.gif -------------------------------------------------------------------------------- /layui/css/modules/layui-icon-extend/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/css/modules/layui-icon-extend/iconfont.eot -------------------------------------------------------------------------------- /layui/css/modules/layui-icon-extend/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/css/modules/layui-icon-extend/iconfont.ttf -------------------------------------------------------------------------------- /layui/css/modules/layui-icon-extend/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/css/modules/layui-icon-extend/iconfont.woff -------------------------------------------------------------------------------- /layui/css/modules/layui-icon-extend/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/css/modules/layui-icon-extend/iconfont.woff2 -------------------------------------------------------------------------------- /layui/extend/autocomplete.css: -------------------------------------------------------------------------------- 1 | .layui-form-autocomplete { 2 | position: relative; 3 | } 4 | 5 | .layui-form-autocomplete dl { 6 | display: none; 7 | position: absolute; 8 | left: 0; 9 | top: 0; 10 | padding: 5px 0; 11 | z-index: 999; 12 | min-width: 100%; 13 | border: 1px solid #d2d2d2; 14 | max-height: 300px; 15 | overflow-y: auto; 16 | background-color: #fff; 17 | border-radius: 2px; 18 | box-shadow: 0 2px 4px rgba(0, 0, 0, .12); 19 | box-sizing: border-box; 20 | } 21 | 22 | .layui-form-autocomplete dl dd, .layui-form-autocomplete dl dt { 23 | padding: 0 10px; 24 | line-height: 36px; 25 | white-space: nowrap; 26 | overflow: hidden; 27 | text-overflow: ellipsis; 28 | } 29 | 30 | .layui-form-autocomplete dl dt { 31 | font-size: 12px; 32 | color: #999; 33 | } 34 | 35 | .layui-form-autocomplete dl dd { 36 | cursor: pointer; 37 | } 38 | 39 | .layui-form-autocomplete dl dd:hover { 40 | background-color: #f2f2f2; 41 | } 42 | 43 | .layui-form-autocomplete .layui-autocomplete-group dd { 44 | padding-left: 20px; 45 | } 46 | 47 | .layui-form-autocomplete dl dd.layui-autocomplete-tips { 48 | padding-left: 10px !important; 49 | color: #999; 50 | } 51 | 52 | .layui-form-autocomplete dl dd.layui-this { 53 | background-color: #5FB878; 54 | color: #fff; 55 | } 56 | 57 | .layui-form-autocomplete-focus dl { 58 | display: block; 59 | } -------------------------------------------------------------------------------- /layui/extend/font/dtreefont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/extend/font/dtreefont.eot -------------------------------------------------------------------------------- /layui/extend/font/dtreefont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/extend/font/dtreefont.ttf -------------------------------------------------------------------------------- /layui/extend/font/dtreefont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/extend/font/dtreefont.woff -------------------------------------------------------------------------------- /layui/extend/icon/iconfont.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face {font-family: "layui-tablePlug-icon"; 3 | src: url('iconfont.eot?t=1544435521530'); /* IE9*/ 4 | src: url('iconfont.eot?t=1544435521530#iefix') format('embedded-opentype'), /* IE6-IE8 */ 5 | url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAASgAAsAAAAAB3QAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFY8e0f3Y21hcAAAAYAAAABLAAABcOcttblnbHlmAAABzAAAANAAAADwQIr9eWhlYWQAAAKcAAAALwAAADYTh/R3aGhlYQAAAswAAAAcAAAAJAfeA4NobXR4AAAC6AAAAAgAAAAICAAAAGxvY2EAAALwAAAABgAAAAYAeAAAbWF4cAAAAvgAAAAgAAAAIAEQAFtuYW1lAAADGAAAAWUAAAL9ieAqlXBvc3QAAASAAAAAHwAAADDM7G18eJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2BkYWCcwMDKwMHUyXSGgYGhH0IzvmYwYuRgYGBiYGVmwAoC0lxTGByesT5jZW7438AQw9zA0AAUZgTJAQDd7QvteJxjYGBgZWBgYAZiHSBmYWBgDGFgZAABP6AoI1icmYELLM7CoARWwwISf8b6/z+MBPJZwCQDIxvDKOABkzJQHjisIJiBEQA1JAl9AHicY2BhYPi/m/kQsy2DJoMZgxODHwMDoz2jHaMeo7KiEh+jmDijsIiYsaGRmTkzo5qZuaIcIzujsBwjSMSUWVyO0ZrRyMxETV2Zj5FVWYlNRAzCZ0diM0czMopwSujL/50gpy/JIcwoxSTIyyvAyPzvBr+oBFOBpIjAvwuMjII8vIKMIUDqC6+gIO8XHkFGQSCB4EJYTFMZGcUtLOTlzSzE/n35dxwozssYyCgtpMPIqCv878k/U5Byxo2xQEpSEGjqdEEpQSBaCaEYAN7HKiV4nGNgZGBgAGKbzDVX4vltvjJwszCAwA2TCEcE/X83CwOzLZDLwcAEEgUAEkMJKAB4nGNgZGBgbvjfwBDDwgACQJKRARUwAQBHCAJrBAAAAAQAAAAAAAAAAHgAAAABAAAAAgBPAAQAAAAAAAIAAAAKAAoAAAD/AAAAAAAAeJyNkr1uwjAUhY/5VUHq0JbOniraivAzInWighUxoK4hOAFkEmQcqqhv0z5DX6d9jm49BLMgBhL56rvnnnsdWwFwgx8IHJ4G14EF7pgduIAqHh0XqXccl8ivjsuo481xhXrguIZnvDuu4xafnCBKV8ye8O1YoIlfxwVci6rjIpqi4bhEfnFcxr1QjivUPxzXMBVfjut4EH+1gVG+VXM5y+QySOIwiW1N+1m6bFl/ptVYp1FrX5ioKNW+OVc6p02V2S6TWHa9zrnySMXKHPfd7qKetaEMTbKWQ36A0jqRG5OsVGC9hbWbfrsdOt0LkjWPMYCBgg/LOIfEDBnjkpeaIEaYR0ufpidDykqLuU+fZseYMUVE7dgxoRpR2/vNxV2X+qZUDbbM95lEFx5/kUu7R1TjfMLpebfY0dmjanlmyWXYsSYN3Q0oTtNkiU1eW1EJqHtY5F0b9NHmG574vXzv9T9MzpLMAAAAeJxjYGKAAC4G7ICJkYmRmYEtLTOnJLWIgQEAEIICogA=') format('woff'), 6 | url('iconfont.ttf?t=1544435521530') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ 7 | url('iconfont.svg?t=1544435521530#layui-tablePlug-icon') format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .layui-tablePlug-icon { 11 | font-family:"layui-tablePlug-icon" !important; 12 | font-size:16px; 13 | font-style:normal; 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | } 17 | 18 | .layui-tablePlug-icon-filter:before { content: "\e605"; } 19 | 20 | -------------------------------------------------------------------------------- /layui/extend/icon/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/extend/icon/iconfont.eot -------------------------------------------------------------------------------- /layui/extend/icon/iconfont.js: -------------------------------------------------------------------------------- 1 | !function(d){var e,l='',t=(e=document.getElementsByTagName("script"))[e.length-1].getAttribute("data-injectcss");if(t&&!d.__iconfont__svg__cssinject__){d.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(e){console&&console.log(e)}}!function(e){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(e,0);else{var t=function(){document.removeEventListener("DOMContentLoaded",t,!1),e()};document.addEventListener("DOMContentLoaded",t,!1)}else document.attachEvent&&(n=e,c=d.document,i=!1,o=function(){i||(i=!0,n())},(l=function(){try{c.documentElement.doScroll("left")}catch(e){return void setTimeout(l,50)}o()})(),c.onreadystatechange=function(){"complete"==c.readyState&&(c.onreadystatechange=null,o())});var n,c,i,o,l}(function(){var e,t,n,c,i,o;(e=document.createElement("div")).innerHTML=l,l=null,(t=e.getElementsByTagName("svg")[0])&&(t.setAttribute("aria-hidden","true"),t.style.position="absolute",t.style.width=0,t.style.height=0,t.style.overflow="hidden",n=t,(c=document.body).firstChild?(i=n,(o=c.firstChild).parentNode.insertBefore(i,o)):c.appendChild(n))})}(window); -------------------------------------------------------------------------------- /layui/extend/icon/iconfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 30 | -------------------------------------------------------------------------------- /layui/extend/icon/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/extend/icon/iconfont.ttf -------------------------------------------------------------------------------- /layui/extend/icon/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/C-GY/Y-Admin/9d6afe220c74d8af92672e0ca0c56530334b3dfd/layui/extend/icon/iconfont.woff -------------------------------------------------------------------------------- /layui/extend/optimizeSelectOption/optimizeSelectOption.css: -------------------------------------------------------------------------------- 1 | .layui-layer-content div.layui-form-select>div.layui-select-title+ dl, 2 | .select_option_in_layer div.layui-form-select>div.layui-select-title+ dl 3 | /*.layui-table-view .layui-form-select dl*/ 4 | { 5 | display: none !important; 6 | } 7 | 8 | .layui-layer.layui-option-layer { 9 | mso-border-shadow: no; 10 | box-shadow: none; 11 | } 12 | -------------------------------------------------------------------------------- /layui/extend/optimizeSelectOption/optimizeSelectOption.min.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.4 MIT License By https://www.layui.com */ 2 | ;!function(e){"use strict";var t="optimizeSelectOption";window.top.layui?window.top.layui.use("layer",function(){layui.define(["form"],function(n){n(t,e(t))})}):(console.warn("使用插件:"+t+"页面顶层窗口必须引入layui"),layui.define(["form"],function(e){e(t,{msg:"使用插件:"+t+"页面顶层窗口必须引入layui"})}))}(function(e){function t(e,n,o){n=n||window,e=e.length?e.get(0):e;var i={};if(o&&n.top!==n.self){var l=n.frames.frameElement;i=t(l,n.parent,o)}var a=e.getBoundingClientRect();return{top:a.top+(i.top||0),left:a.left+(i.left||0)}}var n="0.1.9",o=layui.$,i=layui.form,l=(layui.layer,layui.cache.modules.optimizeSelectOption.substr(0,layui.cache.modules.optimizeSelectOption.lastIndexOf("/")));layui.link(l+"/optimizeSelectOption.css?v"+n);var a=[".layui-table-view",".layui-layer-content",".select_option_to_layer"];if(window.top.layer._indexTemp=window.top.layer._indexTemp||{},!i.render.plugFlag){var r=i.render;i.render=function(e,t,n){var i,l=this;return n?layui.each(n,function(t,n){n=o(n);var a=n.parent(),s=a.hasClass("layui-form"),u=a.attr("lay-filter");s?"":a.addClass("layui-form"),u?"":a.attr("lay-filter","tablePlug_form_filter_temp_"+(new Date).getTime()+"_"+Math.floor(1e5*Math.random())),i=r.call(l,e,a.attr("lay-filter")),s?"":a.removeClass("layui-form"),u?"":a.attr("lay-filter",null)}):i=r.call(l,e,t),i},i.render.plugFlag=!0}var s=function(){window.top.layer.close(window.top.layer._indexTemp[e])},u={},c=function(n,i){var l=this;return u.name?(console.warn("针对",n,"的显示优化已经存在,请不要重复渲染!"),l):void o(document).on("click",a.map(function(e){return e+" "+i.triggerElem}).join(","),function(n){function l(){var e=t(u,window,!0),n=e.top,o=e.left;return p?n=n-c.outerHeight()+u.outerHeight()-parseFloat(c.css("bottom")):n+=parseFloat(c.css("top")),{top:n,left:o}}layui.stope(n),s();var r=o(this),u=r,c="function"==typeof i.dlElem?i.dlElem(r):u.next(),f=u.parent().prev(),p=u.parent().hasClass("layui-form-selectup"),d=l();u.css({backgroundColor:"transparent"}),window.top.layer._indexTemp[e]=window.top.layer.open({type:1,title:!1,closeBtn:0,shade:0,anim:-1,fixed:u.closest(".layui-layer-content").length||window.top!==window.self,isOutAnim:!1,offset:[d.top+"px",d.left+"px"],area:c.outerWidth()+"px",content:'
',skin:"layui-option-layer",success:function(e,t){c.css({top:0,position:"relative"}).appendTo(e.find(".layui-layer-content").css({overflow:"hidden"}).find(".layui-form-selected")),e.width(u.width());var n=window.top.innerHeight-e.outerHeight()-parseFloat(e.css("top"));p&&e.css({top:"auto",bottom:n+"px"}),"function"==typeof i.success&&i.success.call(this,t,e),e.on("mousedown",function(e){layui.stope(e)}),setTimeout(function(){u.parentsUntil(a.join(",")).one("scroll",function(e){s()}),u.parents(a.join(",")).one("scroll",function(e){s()});var e=window;do{var t=e.$||e.layui.$;t&&(t(e.document).one("click",function(e){s()}),t(e.document).one("mousedown",function(e){s()}),t(e).one("resize",function(e){s()}),t(e.document).one("scroll",function(){top!==self&&parent.parent&&s()}))}while(e.self!==e.top&&(e=e.parent))},500)},end:function(){"function"==typeof i.end&&i.end.call(this,f)}})})};return c("layuiSelect",{triggerElem:"div:not(.layui-select-disabled)>.layui-select-title",success:function(e,t){t.find("dl dd").click(function(){s()})},end:function(e){i.render("select",null,e)}}),{version:n,getPosition:t,close:s}}); -------------------------------------------------------------------------------- /layui/extend/tinymce/tinymce.bak/langs/readme.md: -------------------------------------------------------------------------------- 1 | This is where language files should be placed. 2 | 3 | Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/ 4 | -------------------------------------------------------------------------------- /layui/extend/tinymce/tinymce.bak/plugins/anchor/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(){"use strict";function e(o){return function(t){for(var e=0;e]*>/gi,"[quote]"),o(/<\/blockquote>/gi,"[/quote]"),o(/":o(" ",e);n.undoManager.transact(function(){return n.insertContent(t)})},e=function(n){n.addCommand("mceNonBreaking",function(){r(n,1)})},c=tinymce.util.Tools.resolve("tinymce.util.VK"),t=function(e){var t=i(e);0
/gi,"\n"),o(/
/gi,"\n"),o(/
/gi,"\n"),o(//gi,""),o(/<\/p>/gi,"\n"),o(/ |\u00a0/gi," "),o(/"/gi,'"'),o(/</gi,"<"),o(/>/gi,">"),o(/&/gi,"&"),t},i=function(t){t=e.trim(t);function o(o,e){t=t.replace(o,e)}return o(/\n/gi,"
"),o(/\[b\]/gi,""),o(/\[\/b\]/gi,""),o(/\[i\]/gi,""),o(/\[\/i\]/gi,""),o(/\[u\]/gi,""),o(/\[\/u\]/gi,""),o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'$2'),o(/\[url\](.*?)\[\/url\]/gi,'$1'),o(/\[img\](.*?)\[\/img\]/gi,''),o(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2'),o(/\[code\](.*?)\[\/code\]/gi,'$1 '),o(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 '),t};!function n(){o.add("bbcode",function(o){o.on("BeforeSetContent",function(o){o.content=i(o.content)}),o.on("PostProcess",function(o){o.set&&(o.content=i(o.content)),o.get&&(o.content=t(o.content))})})}()}(); -------------------------------------------------------------------------------- /layui/extend/tinymce/tinymce.bak/plugins/code/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | (function () { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | var setContent = function (editor, html) { 15 | editor.focus(); 16 | editor.undoManager.transact(function () { 17 | editor.setContent(html); 18 | }); 19 | editor.selection.setCursorLocation(); 20 | editor.nodeChanged(); 21 | }; 22 | var getContent = function (editor) { 23 | return editor.getContent({ source_view: true }); 24 | }; 25 | var Content = { 26 | setContent: setContent, 27 | getContent: getContent 28 | }; 29 | 30 | var open = function (editor) { 31 | var editorContent = Content.getContent(editor); 32 | editor.windowManager.open({ 33 | title: 'Source Code', 34 | size: 'large', 35 | body: { 36 | type: 'panel', 37 | items: [{ 38 | type: 'textarea', 39 | name: 'code' 40 | }] 41 | }, 42 | buttons: [ 43 | { 44 | type: 'cancel', 45 | name: 'cancel', 46 | text: 'Cancel' 47 | }, 48 | { 49 | type: 'submit', 50 | name: 'save', 51 | text: 'Save', 52 | primary: true 53 | } 54 | ], 55 | initialData: { code: editorContent }, 56 | onSubmit: function (api) { 57 | Content.setContent(editor, api.getData().code); 58 | api.close(); 59 | } 60 | }); 61 | }; 62 | var Dialog = { open: open }; 63 | 64 | var register = function (editor) { 65 | editor.addCommand('mceCodeEditor', function () { 66 | Dialog.open(editor); 67 | }); 68 | }; 69 | var Commands = { register: register }; 70 | 71 | var register$1 = function (editor) { 72 | editor.ui.registry.addButton('code', { 73 | icon: 'sourcecode', 74 | tooltip: 'Source code', 75 | onAction: function () { 76 | return Dialog.open(editor); 77 | } 78 | }); 79 | editor.ui.registry.addMenuItem('code', { 80 | icon: 'sourcecode', 81 | text: 'Source code', 82 | onAction: function () { 83 | return Dialog.open(editor); 84 | } 85 | }); 86 | }; 87 | var Buttons = { register: register$1 }; 88 | 89 | function Plugin () { 90 | global.add('code', function (editor) { 91 | Commands.register(editor); 92 | Buttons.register(editor); 93 | return {}; 94 | }); 95 | } 96 | 97 | Plugin(); 98 | 99 | }()); 100 | -------------------------------------------------------------------------------- /layui/extend/tinymce/tinymce.bak/plugins/code/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e,n){e.focus(),e.undoManager.transact(function(){e.setContent(n)}),e.selection.setCursorLocation(),e.nodeChanged()},o=function(e){return e.getContent({source_view:!0})},n=function(n){var e=o(n);n.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:e},onSubmit:function(e){t(n,e.getData().code),e.close()}})},c=function(e){e.addCommand("mceCodeEditor",function(){n(e)})},i=function(e){e.ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:function(){return n(e)}}),e.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:function(){return n(e)}})};!function u(){e.add("code",function(e){return c(e),i(e),{}})}()}(); -------------------------------------------------------------------------------- /layui/extend/tinymce/tinymce.bak/plugins/colorpicker/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | (function (domGlobals) { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | function Plugin () { 15 | global.add('colorpicker', function () { 16 | domGlobals.console.warn('Color picker plugin is now built in to the core editor, please remove it from your editor configuration'); 17 | }); 18 | } 19 | 20 | Plugin(); 21 | 22 | }(window)); 23 | -------------------------------------------------------------------------------- /layui/extend/tinymce/tinymce.bak/plugins/colorpicker/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(o){"use strict";var i=tinymce.util.Tools.resolve("tinymce.PluginManager");!function n(){i.add("colorpicker",function(){o.console.warn("Color picker plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window); -------------------------------------------------------------------------------- /layui/extend/tinymce/tinymce.bak/plugins/contextmenu/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | (function (domGlobals) { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | function Plugin () { 15 | global.add('contextmenu', function () { 16 | domGlobals.console.warn('Context menu plugin is now built in to the core editor, please remove it from your editor configuration'); 17 | }); 18 | } 19 | 20 | Plugin(); 21 | 22 | }(window)); 23 | -------------------------------------------------------------------------------- /layui/extend/tinymce/tinymce.bak/plugins/contextmenu/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(n){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager");!function e(){o.add("contextmenu",function(){n.console.warn("Context menu plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window); -------------------------------------------------------------------------------- /layui/extend/tinymce/tinymce.bak/plugins/hr/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | (function () { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | var register = function (editor) { 15 | editor.addCommand('InsertHorizontalRule', function () { 16 | editor.execCommand('mceInsertContent', false, '
'); 17 | }); 18 | }; 19 | var Commands = { register: register }; 20 | 21 | var register$1 = function (editor) { 22 | editor.ui.registry.addButton('hr', { 23 | icon: 'horizontal-rule', 24 | tooltip: 'Horizontal line', 25 | onAction: function () { 26 | return editor.execCommand('InsertHorizontalRule'); 27 | } 28 | }); 29 | editor.ui.registry.addMenuItem('hr', { 30 | icon: 'horizontal-rule', 31 | text: 'Horizontal line', 32 | onAction: function () { 33 | return editor.execCommand('InsertHorizontalRule'); 34 | } 35 | }); 36 | }; 37 | var Buttons = { register: register$1 }; 38 | 39 | function Plugin () { 40 | global.add('hr', function (editor) { 41 | Commands.register(editor); 42 | Buttons.register(editor); 43 | }); 44 | } 45 | 46 | Plugin(); 47 | 48 | }()); 49 | -------------------------------------------------------------------------------- /layui/extend/tinymce/tinymce.bak/plugins/hr/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"
")})},t=function(n){n.ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:function(){return n.execCommand("InsertHorizontalRule")}}),n.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:function(){return n.execCommand("InsertHorizontalRule")}})};!function e(){n.add("hr",function(n){o(n),t(n)})}()}(); -------------------------------------------------------------------------------- /layui/extend/tinymce/tinymce.bak/plugins/indent2em/plugin.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add('indent2em', function(editor, url) { 2 | var pluginName='首行缩进'; 3 | var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); 4 | var indent2em_val = editor.getParam('indent2em_val', '2em'); 5 | var doAct = function () { 6 | var dom = editor.dom; 7 | var blocks = editor.selection.getSelectedBlocks(); 8 | var act = ''; 9 | global$1.each(blocks, function (block) { 10 | if(act==''){ 11 | act = dom.getStyle(block,'text-indent')==indent2em_val ? 'remove' : 'add'; 12 | } 13 | if( act=='add' ){ 14 | dom.setStyle(block, 'text-indent', indent2em_val); 15 | }else{ 16 | var style=dom.getAttrib(block,'style'); 17 | style = style.replace(/text-indent:[\s]*2em;/ig,''); 18 | dom.setAttrib(block,'style',style); 19 | } 20 | 21 | }); 22 | }; 23 | 24 | editor.ui.registry.addButton('indent2em', { 25 | text: '', 26 | tooltip: pluginName, 27 | onAction: function () { 28 | doAct(); 29 | } 30 | }); 31 | 32 | editor.ui.registry.addMenuItem('indent2em', { 33 | text: pluginName, 34 | onAction: function() { 35 | doAct(); 36 | } 37 | }); 38 | 39 | return { 40 | getMetadata: function () { 41 | return { 42 | name: pluginName, 43 | url: "http://tinymce.ax-z.cn/more-plugins/indent2em.php", 44 | }; 45 | } 46 | }; 47 | }); 48 | -------------------------------------------------------------------------------- /layui/extend/tinymce/tinymce.bak/plugins/indent2em/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add('indent2em', function(editor, url) { 2 | var pluginName='首行缩进'; 3 | var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); 4 | var indent2em_val = editor.getParam('indent2em_val', '2em'); 5 | var doAct = function () { 6 | var dom = editor.dom; 7 | var blocks = editor.selection.getSelectedBlocks(); 8 | var act = ''; 9 | global$1.each(blocks, function (block) { 10 | if(act==''){ 11 | act = dom.getStyle(block,'text-indent')==indent2em_val ? 'remove' : 'add'; 12 | } 13 | if( act=='add' ){ 14 | dom.setStyle(block, 'text-indent', indent2em_val); 15 | }else{ 16 | var style=dom.getAttrib(block,'style'); 17 | style = style.replace(/text-indent:[\s]*2em;/ig,''); 18 | dom.setAttrib(block,'style',style); 19 | } 20 | 21 | }); 22 | }; 23 | 24 | editor.ui.registry.addButton('indent2em', { 25 | text: '', 26 | tooltip: pluginName, 27 | onAction: function () { 28 | doAct(); 29 | } 30 | }); 31 | 32 | editor.ui.registry.addMenuItem('indent2em', { 33 | text: pluginName, 34 | onAction: function() { 35 | doAct(); 36 | } 37 | }); 38 | 39 | return { 40 | getMetadata: function () { 41 | return { 42 | name: pluginName, 43 | url: "http://tinymce.ax-z.cn/more-plugins/indent2em.php", 44 | }; 45 | } 46 | }; 47 | }); 48 | -------------------------------------------------------------------------------- /layui/extend/tinymce/tinymce.bak/plugins/insertdatetime/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(){"use strict";function n(e){return e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S"))}function r(e){return e.getParam("insertdatetime_formats",["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"])}function a(e,t){if((e=""+e).length'+n+"")}else e.insertContent(i(e,t))},g=i,y=function(e){e.addCommand("mceInsertDate",function(){p(e,t(e))}),e.addCommand("mceInsertTime",function(){p(e,o(e))})},M=tinymce.util.Tools.resolve("tinymce.util.Tools"),S=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return S(t())}}},v=function(n){var t=u(n),r=S(c(n));n.ui.registry.addSplitButton("insertdatetime",{icon:"insert-time",tooltip:"Insert date/time",select:function(e){return e===r.get()},fetch:function(e){e(M.map(t,function(e){return{type:"choiceitem",text:g(n,e),value:e}}))},onAction:function(){for(var e=[],t=0;t '+o(" ",e)+"
"+c()+"
"):e.insertContent(c())})},m=function(n){n.on("ResolveName",function(e){"IMG"===e.target.nodeName&&n.dom.hasClass(e.target,u())&&(e.name="pagebreak")})},s=function(e){e.ui.registry.addButton("pagebreak",{icon:"page-break",tooltip:"Page break",onAction:function(){return e.execCommand("mcePageBreak")}}),e.ui.registry.addMenuItem("pagebreak",{text:"Page break",icon:"page-break",onAction:function(){return e.execCommand("mcePageBreak")}})};!function l(){n.add("pagebreak",function(e){g(e),s(e),o(e),m(e)})}()}(); -------------------------------------------------------------------------------- /layui/extend/tinymce/tinymce.bak/plugins/preview/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.0.16 (2019-09-24) 8 | */ 9 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=function(e){return e.getParam("content_style","")},m=function(e){return e.getParam("content_css_cors",!1,"boolean")},n=function(t){var n="",i=t.dom.encode,e=l(t);n+='