├── README.md ├── css ├── animate.min.css ├── bootstrap.min.css ├── font-awesome.min.css ├── plugins │ └── bootstrap-table │ │ └── bootstrap-table.min.css ├── style.css └── style.min.css ├── fonts ├── fontawesome-webfont.eot ├── fontawesome-webfont.svg ├── fontawesome-webfont.ttf ├── fontawesome-webfont.woff ├── fontawesome-webfont.woff2 ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.svg ├── glyphicons-halflings-regular.ttf ├── glyphicons-halflings-regular.woff └── glyphicons-halflings-regular.woff2 ├── index.html └── js ├── core └── common │ ├── bootstrap.min.js │ ├── collection.js │ ├── jquery.cookie.js │ ├── jquery.form.js │ ├── jquery.min.js │ ├── util.js │ └── zeus.js ├── plugins ├── bootstrap-table │ ├── bootstrap-table-mobile.min.js │ ├── bootstrap-table.min.js │ └── locale │ │ └── bootstrap-table-zh-CN.min.js └── layer │ ├── laydate │ ├── laydate.js │ ├── need │ │ └── laydate.css │ └── skins │ │ └── default │ │ ├── icon.png │ │ └── laydate.css │ ├── layer.min.js │ ├── layer │ ├── layer.js │ ├── mobile │ │ ├── layer.js │ │ └── need │ │ │ └── layer.css │ └── theme │ │ └── default │ │ ├── icon-ext.png │ │ ├── icon.png │ │ ├── layer.css │ │ ├── loading-0.gif │ │ ├── loading-1.gif │ │ └── loading-2.gif │ └── layim │ ├── layim.css │ ├── layim.js │ └── loading.gif └── static ├── common.js ├── jquery.cookie.js └── specialManagement ├── specialManagement.js └── specialManagement.json /README.md: -------------------------------------------------------------------------------- 1 | # springBoot-example-ui 2 | * 概述: 3 | * 前端html(前后端分离,利用ajax交互) 4 | * 技术:BootStrap + layer + jquery + css + html 5 | * 后台为springBoot-example,参见 https://github.com/jiangcaijun/springBoot-example 6 | 7 | * 首页(路径为springBoot-example-ui\index.html)(这里项目名称为zeus-ui) 8 | ![首页](https://github.com/jiangcaijun/pictureAsset/blob/HEAD/src/zeus-ui/2017-10-30_140806.png?raw=true) 9 | * 首页请求分析 10 | 11 | 以删除为例: 12 | 13 | * **Request Method:DELETE** (RESTFUL风格) 14 | * 后端地址为**Request URL:http://localhost:7500/zeus/specialManagements?idSelections=B3C36EAEC69243B7A9723EAB90150512** 15 | 16 | ![首页请求分析](https://github.com/jiangcaijun/pictureAsset/blob/HEAD/src/zeus-ui/2017-10-30_165436.png?raw=true) -------------------------------------------------------------------------------- /css/font-awesome.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.4.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0) format('embedded-opentype'),url(../fonts/fontawesome-webfont.woff2?v=4.4.0) format('woff2'),url(../fonts/fontawesome-webfont.woff?v=4.4.0) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.4.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-television:before,.fa-tv:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"} -------------------------------------------------------------------------------- /css/plugins/bootstrap-table/bootstrap-table.min.css: -------------------------------------------------------------------------------- 1 | .bootstrap-table .table{margin-bottom:0!important;border-bottom:1px solid #e4eaec;border-collapse:collapse!important}.bootstrap-table .table,.bootstrap-table .table>tbody>tr>td,.bootstrap-table .table>tbody>tr>th,.bootstrap-table .table>tfoot>tr>td,.bootstrap-table .table>tfoot>tr>th,.bootstrap-table .table>thead>tr>td{padding:8px!important}.bootstrap-table .table.table-no-bordered>tbody>tr>td,.bootstrap-table .table.table-no-bordered>thead>tr>th{border-right:2px solid transparent}.fixed-table-container{position:relative;clear:both;border:1px solid #e4eaec}.fixed-table-container.table-no-bordered{border:1px solid transparent}.fixed-table-footer,.fixed-table-header{height:37px;overflow:hidden}.fixed-table-header{border-bottom:1px solid #e4eaec}.fixed-table-footer{border-top:1px solid #e4eaec}.fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.fixed-table-container table{width:100%}.fixed-table-container thead th{height:0;padding:0;margin:0;border-left:1px solid #e4eaec}.fixed-table-container thead th:first-child{border-left:none}.fixed-table-container tbody td .th-inner,.fixed-table-container thead th .th-inner{padding:8px;line-height:20px;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fixed-table-container thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px}.fixed-table-container th.detail{width:30px}.fixed-table-container tbody td{border-left:1px solid #e4eaec}.fixed-table-container tbody tr:first-child td{border-top:none}.fixed-table-container tbody td:first-child{border-left:none}.fixed-table-container .table .icon,.fixed-table-container table .icon{top:auto;margin:0 5px}.fixed-table-container tbody .selected td{background-color:#f3f7f9}.fixed-table-container .bs-checkbox{text-align:center}.fixed-table-container .bs-checkbox .th-inner{padding:8px 0}.fixed-table-container input[type=radio],.fixed-table-container input[type=checkbox]{margin:0 auto!important}.fixed-table-container .no-records-found{text-align:center}.fixed-table-pagination .pagination-detail,.fixed-table-pagination div.pagination{margin-top:10px;margin-bottom:10px}.fixed-table-pagination div.pagination .pagination{margin:0}.fixed-table-pagination .pagination a{padding:6px 12px;line-height:1.428571429}.fixed-table-pagination .pagination-info{line-height:34px;margin-right:5px}.fixed-table-pagination .btn-group{position:relative;display:inline-block;vertical-align:middle}.fixed-table-pagination .dropup .dropdown-menu{margin-bottom:0}.fixed-table-pagination .page-list{display:inline-block}.fixed-table-toolbar .columns-left{margin-right:5px}.fixed-table-toolbar .columns-right{margin-left:5px}.fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:300;line-height:1.428571429}.fixed-table-toolbar .bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px;line-height:34px}.fixed-table-pagination li.disabled a{pointer-events:none;cursor:default}.fixed-table-loading{display:none;position:absolute;top:42px;right:0;bottom:0;left:0;z-index:6;background-color:#fff;text-align:center}.fixed-table-body .card-view .title{font-weight:400;display:inline-block;min-width:30%;text-align:left!important}.fixed-table-body thead th .th-inner{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.table td,.table th{vertical-align:middle;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.fixed-table-toolbar .dropdown-menu{text-align:left;max-height:300px;overflow:auto}.fixed-table-toolbar .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.fixed-table-toolbar .btn-group>.btn-group>.btn{border-radius:0}.fixed-table-toolbar .btn-group>.btn-group:first-child>.btn{border-top-left-radius:3px;border-bottom-left-radius:3px}.fixed-table-toolbar .btn-group>.btn-group:last-child>.btn{border-top-right-radius:3px;border-bottom-right-radius:3px}.bootstrap-table .table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #e4eaec}.bootstrap-table .table thead>tr>th{padding:0;margin:0}.bootstrap-table .fixed-table-footer tbody>tr>td{padding:0!important}.bootstrap-table .fixed-table-footer .table{border-bottom:none;border-radius:0}.pull-right .dropdown-menu{right:0;left:auto}p.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden} -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 |
22 |
23 |

专项管理

24 |

25 | 27 | 28 | 31 | 33 |

34 |
35 |
36 |
37 |
38 | 39 | 40 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | -------------------------------------------------------------------------------- /js/core/common/collection.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * MAP 数据对象 仿照java.util.Map 3 | ******************************************************************************/ 4 | // Map的实现 5 | function Map() { 6 | this.array = new Array(); 7 | 8 | // 结构 9 | function struct(key, value) { 10 | this.key = key; 11 | this.value = value; 12 | }; 13 | 14 | // 增加 15 | this.put = function(key, value) { 16 | for ( var i = 0; i < this.array.length; i++) { 17 | if (this.array[i].key == key) { 18 | this.array[i].value = value; 19 | return; 20 | } 21 | } 22 | this.array[this.array.length] = new struct(key, value); 23 | }; 24 | 25 | // 取值 26 | this.get = function(key) { 27 | for ( var i = 0; i < this.array.length; i++) { 28 | if (this.array[i].key == key) { 29 | return this.array[i].value; 30 | } 31 | } 32 | return null; 33 | }; 34 | 35 | // 删除 36 | this.remove = function(key) { 37 | var v; 38 | for ( var i = 0; i < this.array.length; i++) { 39 | v = this.array.pop(); 40 | if (v.key == key) { 41 | continue; 42 | } 43 | this.array.unshift(v); 44 | } 45 | }; 46 | 47 | // 长度 48 | this.size = function() { 49 | return this.array.length; 50 | }; 51 | 52 | // 是否为空 53 | this.isEmpty = function() { 54 | return this.array.length <= 0; 55 | }; 56 | 57 | // 是否包含主键 58 | this.containsKey = function(key) { 59 | for ( var i = 0; i < this.array.length; i++) { 60 | if (this.array[i].key == key) { 61 | return true; 62 | } 63 | } 64 | return false; 65 | }; 66 | 67 | // 取全部值 68 | this.values = function() { 69 | var valueArray = new Array(); 70 | for ( var i = 0; i < this.array.length; i++) { 71 | valueArray.push(this.array[i].value); 72 | } 73 | return valueArray; 74 | }; 75 | 76 | // 清空 77 | this.clear = function() { 78 | this.array = []; 79 | }; 80 | } 81 | 82 | // 把Array转换为Map 83 | function arrayToMap(array, key, value) { 84 | if (key == undefined) { 85 | key = function(arg) { 86 | return arg.key; 87 | }; 88 | } 89 | 90 | if (value == undefined) { 91 | value = function(arg) { 92 | return arg.value; 93 | }; 94 | } 95 | 96 | var map = new Map(); 97 | for (data in array) { 98 | map.put(key(array[data]), value(array[data])); 99 | } 100 | 101 | return map; 102 | } -------------------------------------------------------------------------------- /js/core/common/jquery.cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery Cookie Plugin v1.4.1 3 | * https://github.com/carhartl/jquery-cookie 4 | * 5 | * Copyright 2013 Klaus Hartl 6 | * Released under the MIT license 7 | */ 8 | (function (factory) { 9 | if (typeof define === 'function' && define.amd) { 10 | // AMD 11 | define(['jquery'], factory); 12 | } else if (typeof exports === 'object') { 13 | // CommonJS 14 | factory(require('jquery')); 15 | } else { 16 | // Browser globals 17 | factory(jQuery); 18 | } 19 | }(function ($) { 20 | 21 | var pluses = /\+/g; 22 | 23 | function encode(s) { 24 | return config.raw ? s : encodeURIComponent(s); 25 | } 26 | 27 | function decode(s) { 28 | return config.raw ? s : decodeURIComponent(s); 29 | } 30 | 31 | function stringifyCookieValue(value) { 32 | return encode(config.json ? JSON.stringify(value) : String(value)); 33 | } 34 | 35 | function parseCookieValue(s) { 36 | if (s.indexOf('"') === 0) { 37 | // This is a quoted cookie as according to RFC2068, unescape... 38 | s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); 39 | } 40 | 41 | try { 42 | // Replace server-side written pluses with spaces. 43 | // If we can't decode the cookie, ignore it, it's unusable. 44 | // If we can't parse the cookie, ignore it, it's unusable. 45 | s = decodeURIComponent(s.replace(pluses, ' ')); 46 | return config.json ? JSON.parse(s) : s; 47 | } catch(e) {} 48 | } 49 | 50 | function read(s, converter) { 51 | var value = config.raw ? s : parseCookieValue(s); 52 | return $.isFunction(converter) ? converter(value) : value; 53 | } 54 | 55 | var config = $.cookie = function (key, value, options) { 56 | 57 | // Write 58 | 59 | if (value !== undefined && !$.isFunction(value)) { 60 | options = $.extend({}, config.defaults, options); 61 | 62 | if (typeof options.expires === 'number') { 63 | var days = options.expires, t = options.expires = new Date(); 64 | t.setTime(+t + days * 864e+5); 65 | } 66 | 67 | return (document.cookie = [ 68 | encode(key), '=', stringifyCookieValue(value), 69 | options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 70 | options.path ? '; path=' + options.path : '', 71 | options.domain ? '; domain=' + options.domain : '', 72 | options.secure ? '; secure' : '' 73 | ].join('')); 74 | } 75 | 76 | // Read 77 | 78 | var result = key ? undefined : {}; 79 | 80 | // To prevent the for loop in the first place assign an empty array 81 | // in case there are no cookies at all. Also prevents odd result when 82 | // calling $.cookie(). 83 | var cookies = document.cookie ? document.cookie.split('; ') : []; 84 | 85 | for (var i = 0, l = cookies.length; i < l; i++) { 86 | var parts = cookies[i].split('='); 87 | var name = decode(parts.shift()); 88 | var cookie = parts.join('='); 89 | 90 | if (key && key === name) { 91 | // If second argument (value) is a function it's a converter... 92 | result = read(cookie, value); 93 | break; 94 | } 95 | 96 | // Prevent storing a cookie that we couldn't decode. 97 | if (!key && (cookie = read(cookie)) !== undefined) { 98 | result[name] = cookie; 99 | } 100 | } 101 | 102 | return result; 103 | }; 104 | 105 | config.defaults = {}; 106 | 107 | $.removeCookie = function (key, options) { 108 | if ($.cookie(key) === undefined) { 109 | return false; 110 | } 111 | 112 | // Must not alter options, thus extending a fresh object... 113 | $.cookie(key, '', $.extend({}, options, { expires: -1 })); 114 | return !$.cookie(key); 115 | }; 116 | 117 | })); 118 | -------------------------------------------------------------------------------- /js/core/common/util.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * 基础函数列表 3 | ******************************************************************************/ 4 | /** 5 | * 删除首尾空格 6 | */ 7 | function trim(s) { 8 | return s.replace(/(^\s*)|(\s*$)/g, ""); 9 | } 10 | 11 | /** 12 | * 为空 13 | */ 14 | function isEmpty(s) { 15 | if (s == undefined || s == null) { 16 | return true; 17 | } 18 | 19 | if (typeof (s) == 'string' && trim(s).length == 0) { 20 | return true; 21 | } 22 | 23 | return false; 24 | } 25 | 26 | /** 27 | * 不为空 28 | */ 29 | function isNotEmpty(s) { 30 | return !isEmpty(s); 31 | } 32 | 33 | /** 34 | * 是否包含 35 | */ 36 | function isContain(srcStr, containStr) { 37 | if (isEmpty(srcStr)) return false; 38 | 39 | var srcVal = srcStr.split(","); 40 | for (var i = 0; i < srcVal.length; i++) { 41 | if (srcVal[i] == containStr) { 42 | return true; 43 | } 44 | } 45 | 46 | return false; 47 | } 48 | 49 | /** 50 | * 复制对象 51 | */ 52 | function clone(srcObj) { 53 | if (typeof(srcObj) != 'object') { 54 | return srcObj; 55 | } else { 56 | var newObj = new Object(); 57 | for (key in srcObj) { 58 | eval("newObj." + key + " = srcObj." + key); 59 | } 60 | 61 | return newObj; 62 | } 63 | } 64 | 65 | /** 66 | * 替换所有 67 | */ 68 | String.prototype.replaceAll = function(s1, s2) { 69 | return this.replace(new RegExp(s1, "gm"), s2); 70 | } 71 | 72 | /** 73 | * 得到字符串的字节长度 74 | */ 75 | String.prototype.getByteLen = function(clen) { 76 | var len = 0; 77 | 78 | for (var i = 0; i < this.length; i++) { 79 | if (this.charAt(i).match(/[^\x00-\xff]/ig) != null) { 80 | len += clen; 81 | } else { 82 | len++; 83 | } 84 | } 85 | 86 | return len; 87 | } 88 | 89 | /** 90 | * 计算2个日期的差值;例如,传入参数:D1,D2;D1 = 2011-02-02 D2 = 2011-02-01;返回值为1; 91 | * 92 | * @param D1 93 | * @param D2 94 | * @return 95 | */ 96 | function DateDiff(D1, D2) { 97 | var aDate; 98 | var oDate1; 99 | var oDate2; 100 | var iDays; 101 | aDate = D1.split("-"); 102 | oDate1 = new Date(aDate[1] + "-" + aDate[2] + "-" + aDate[0]); 103 | aDate = D2.split("-"); 104 | oDate2 = new Date(aDate[1] + "-" + aDate[2] + "-" + aDate[0]); 105 | iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 / 24); 106 | return iDays; 107 | } 108 | 109 | /** 110 | * 计算两日期的差;interval参数:D为返回天数,H为返回小时数,M为返回分钟数,T为返回秒数; 111 | */ 112 | function countTime(interval, date1, date2) { 113 | var obj = {'D' : 1000 * 60 * 60 * 24, 'H' : 1000 * 60 * 60, 'M' : 1000 * 60, 'S' : 1000, 'T' : 1}; 114 | interval = interval.toUpperCase(); 115 | var dt1 = Date.parse(date1.replace(/-/g, "/")); 116 | var dt2 = Date.parse(date2.replace(/-/g, "/")); 117 | return ((dt2 - dt1) / obj[interval]).toFixed(2); 118 | } 119 | 120 | /** 121 | * 将Date转换为指定格式的字符串 122 | */ 123 | Date.prototype.format = function(format) { 124 | var o = { 125 | "M+" : this.getMonth() + 1, 126 | "d+" : this.getDate(), 127 | "H+" : this.getHours(), 128 | "m+" : this.getMinutes(), 129 | "s+" : this.getSeconds() 130 | } 131 | 132 | if (/(y+)/.test(format)) { 133 | format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 134 | } 135 | 136 | for (var k in o) { 137 | if (new RegExp("(" + k + ")").test(format)) { 138 | format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); 139 | } 140 | } 141 | 142 | return format; 143 | } 144 | -------------------------------------------------------------------------------- /js/core/common/zeus.js: -------------------------------------------------------------------------------- 1 | var base_url = "http://localhost:7500/zeus"; 2 | jQuery.extend( { 3 | /** 4 | *@Author 师晓波 5 | *2017/9/21 6 | *将form表单数据转化为json-data 7 | *@form : form id 8 | *@jsondata : 需要拓展的json数据 9 | *@symbol : 多选分隔符 10 | *@blacklist:不需要的element 11 | */ 12 | form2json : function(form, jsondata, symbol, blacklist) { 13 | var formString = ""; 14 | var dataString = ""; 15 | if (isEmpty(symbol)) { 16 | symbol = ""; 17 | } 18 | if (isNotEmpty(form)) { 19 | var formEle = new Map(); 20 | var elements = jQuery("#" + form).formToArray(true); 21 | for (var i = 0; i < elements.length; i++) { 22 | if (elements[i].type == "checkbox" && elements[i].checked != true) { 23 | continue; 24 | } 25 | if (formEle.containsKey(elements[i].name)) { 26 | formEle.get(elements[i].name).push(elements[i].value); 27 | } else if (elements[i].name != blacklist) { 28 | var dataArray = new Array(); 29 | dataArray[0] = elements[i].value; 30 | formEle.put(elements[i].name, dataArray); 31 | } 32 | } 33 | for (var i = 0; i < formEle.array.length; i++) { 34 | var ele = formEle.array[i]; 35 | var eleName = ele.key; 36 | var eleValue = ""; 37 | for (var j = 0; j < ele.value.length; j++) { 38 | eleValue += symbol + ele.value[j].replaceAll('#','%23').replaceAll('&',"%26") + symbol + ","; 39 | } 40 | if (eleValue.length > 0) { 41 | eleValue = eleValue.substring(0, eleValue.length - 1); 42 | } 43 | formString += '"' + eleName + '":"' + eleValue + '",'; 44 | } 45 | 46 | if (formString.length > 0) { 47 | formString = formString.substring(0, formString.length - 1); 48 | } 49 | } 50 | 51 | if (isNotEmpty(jsondata)) { 52 | dataString = JSON.stringify(jsondata); 53 | dataString = trim(dataString.substring(1, dataString.length - 1)); 54 | } 55 | 56 | var obj = {}; 57 | if (formString.length > 0 && dataString.length > 0) { 58 | obj.data = "{" + formString + "," + dataString + "}"; 59 | } else if (formString.length > 0) { 60 | obj.data = "{" + formString + "}"; 61 | } else { 62 | obj.data = "{" + dataString + "}"; 63 | } 64 | 65 | return obj; 66 | }, 67 | 68 | 69 | /** 70 | *@Author 师晓波 71 | *2017/9/21 72 | *将jsondata转化为form表单展示 73 | *@from form表单id 74 | *@jsondata 传入json 75 | */ 76 | json2form : function(form,data){ 77 | jQuery("#" + form).find("input,select,textarea").each(function() { 78 | var obj = jQuery(this); 79 | switch (this.tagName.toLowerCase()) { 80 | case "input": 81 | if(!obj.attr("type")) {obj.attr("type","text");} 82 | if(obj.attr("type")==null) {obj.attr("type","text");}; 83 | switch (obj.attr("type").toLowerCase()) { 84 | case "radio": 85 | for (var key in data) { 86 | if (obj.attr("name") == key) { 87 | if (obj.val() == data[key]) { 88 | obj.attr("checked", true); 89 | } else { 90 | obj.attr("checked", false); 91 | } 92 | break; 93 | } 94 | } 95 | break; 96 | case "checkbox": 97 | for (var key in data) { 98 | if (obj.attr("name") == key) { 99 | var arr = data[key].split(','); 100 | for (var i = 0; i < arr.length; i++) { 101 | if (obj.val() == arr[i]) { 102 | obj.attr("checked", true); 103 | break; 104 | } 105 | obj.attr("checked", false); 106 | } 107 | } 108 | } 109 | break; 110 | case "text": 111 | 112 | case "hidden": 113 | for (var key in data) { 114 | if (obj.attr("id") == key) { 115 | if (obj.attr("class") && (obj.attr("class").indexOf('easyui-combobox') > -1) && obj.attr("comboname")) { 116 | 117 | } 118 | else { 119 | obj.val(data[key]); 120 | break; 121 | } 122 | } 123 | } 124 | break; 125 | } 126 | break; 127 | case "select": 128 | for (var key in data) { 129 | if (obj.attr("id") == key) { 130 | var arr = data[key].split(','); 131 | obj.children().each(function() { 132 | for (var i = 0; i < arr.length; i++) { 133 | if (jQuery(this).val() == arr[i]) { 134 | this.selected = true; 135 | break; 136 | } 137 | } 138 | }); 139 | } 140 | } 141 | break; 142 | case "textarea": 143 | for (var key in data) { 144 | if (obj.attr("id") == key) { 145 | obj.text(data[key]); 146 | break; 147 | } 148 | } 149 | break; 150 | } 151 | }); 152 | }, 153 | 154 | /** 155 | * @Author 师晓波 156 | * 157 | * AJAX请求 158 | * 159 | * @url:表单提交的url; 160 | * 161 | * @header: header 162 | * 163 | * @reqdata:表单提交的数据;json格式,第一层为json字符串,例如:{data : '{key1 : value1, key2 : value2, key3 : value3}'}; 164 | * 165 | * @sucesscallback:成功的回调函数; 166 | * 167 | * @completecallback:完成的回调函数; 168 | * 169 | * @dataType:从服务器端返回的数据类型; 170 | * 171 | * @timeout:超时时间;毫秒; 172 | * 173 | * @async:是否同步;缺省为异步; 174 | * 175 | * @errorcallback:失败的回调函数; 176 | * 177 | * @requestType:request请求方式;缺省为:POST; 178 | */ 179 | tajax : function(url, header,reqdata, requestType, successcallback, completecallback, dataType, timeout, async,errorcallback) { 180 | jQuery.ajax( { 181 | headers: header, 182 | processData: false, 183 | url : base_url + url, 184 | data : reqdata, 185 | dataType : dataType || 'json', 186 | contentType: 'application/json', 187 | timeout : timeout, 188 | async : isEmpty(async) ? true : async, 189 | type : requestType || 'POST', 190 | success : successcallback, 191 | error : errorcallback 192 | || function(XMLHttpRequest, textStatus, errorThrown) { 193 | alert("调用ajax报错"); 194 | }, 195 | complete : completecallback 196 | }); 197 | }, 198 | /** 199 | * @author 师晓波 200 | * 异步文件上传 201 | * @url 请求后台url 202 | * @fileId file控件id 203 | * 204 | * @reqdata:表单提交的数据;json格式,第一层为json字符串,例如:{data : '{key1 : value1, key2 : value2, key3 : value3}'}; 205 | * 206 | * @sucesscallback:成功的回调函数; 207 | * 208 | * @completecallback:完成的回调函数; 209 | * 210 | * @dataType:从服务器端返回的数据类型; 211 | * 212 | * @timeout:超时时间;毫秒; 213 | * 214 | * @async:是否同步;缺省为异步; 215 | * 216 | * @errorcallback:失败的回调函数; 217 | * 218 | * @requestType:request请求方式;缺省为:POST; 219 | */ 220 | fileupload : function(url,fileId,reqdata,successcallback, completecallback, dataType, timeout, async,errorcallback) { 221 | var formData = new FormData(); 222 | formData.append('file',$("#" + fileId)[0].files[0]); //将文件转成二进制形式 223 | for ( var key in reqdata) { 224 | formData.append(key,reqdata[key]); 225 | } 226 | jQuery.ajax( { 227 | processData: false, 228 | url : base_url + url, 229 | data : formData, 230 | dataType : dataType || 'json', 231 | contentType: false, 232 | processData: false, 233 | cache:false, 234 | timeout : timeout, 235 | async : false, 236 | type : 'POST', 237 | success : successcallback, 238 | error : errorcallback 239 | || function(XMLHttpRequest, textStatus, errorThrown) { 240 | alert("调用ajax报错"); 241 | }, 242 | complete : completecallback 243 | }); 244 | }, 245 | /** 246 | * @author 师晓波 247 | *获取header 248 | */ 249 | reqHeader : function(){ 250 | var header = {}; 251 | var token = $.cookie("zeus_token"); 252 | if(typeof token != "undefined" && token != null) { 253 | header["Authorization"] = "Bearer " + token; 254 | } 255 | return header; 256 | }, 257 | 258 | /** 259 | * @author 师晓波 260 | *@gridID grid 容器id 261 | *@toolbarId 工具类id 262 | *@url 请求url 263 | *@columns 列属性 264 | *@condition 请求参数 265 | *@header 请求headers 266 | *@pageSize 初始每列显示条数 267 | *@noPage 是否分页 268 | */ 269 | tgrid : function(gridID, toolbarId,url, columns, condition,header ,pageSize, noPage,onClickRow) { 270 | //传递的参数 271 | function queryParams(params) { 272 | var param={}; 273 | param["pageNum"]=(params.offset / params.limit) + 1; 274 | param["pageSize"]=params.limit; 275 | param["order"]=params.order; 276 | param["orderBy"]=params.sort; 277 | if( typeof(condition) != "undefined"&&condition !=null ){ 278 | for ( var key in condition) { 279 | param[key]=condition[key]; 280 | } 281 | } 282 | return param; 283 | } 284 | $('#' + gridID).bootstrapTable({ 285 | url: base_url + url, // 请求后台的URL(*) 286 | dataType : "json", 287 | method: 'post', // 请求方式(*) 288 | toolbar: '#'+toolbarId, // 工具按钮用哪个容器 289 | striped: true, // 是否显示行间隔色 290 | cache: false, // 是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) 291 | pagination: isEmpty(noPage) ? true : noPage, // 是否显示分页(*) 292 | sortable: false, // 是否启用排序 293 | sortOrder: "asc", // 排序方式 294 | queryParamsType : "limit", // restful 295 | queryParams: queryParams, // 传递参数(*) 296 | sidePagination: "server", // 分页方式:client客户端分页,server服务端分页(*) 297 | pageNumber: 1, // 初始化加载第一页,默认第一页 298 | pageSize: pageSize, // 每页的记录行数(*) 299 | pageList: [10, 25, 50, 100], // 可供选择的每页的行数(*) 300 | // height : 456, 301 | uniqueId: "ID", // 每一行的唯一标识,一般为主键列 302 | search: false, // 是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大 303 | strictSearch: false, 304 | showColumns: false, // 是否显示所有的列 305 | showRefresh: false, // 是否显示刷新按钮 306 | minimumCountColumns: 2, // 最少允许的列数 307 | clickToSelect: false, // 设置true 将在点击行时,自动选择rediobox 和 checkbox 308 | showToggle: false, // 是否显示详细视图和列表视图的切换按钮 309 | cardView: false, // 是否显示详细视图 310 | detailView: false, // 是否显示父子表、 311 | paginationLoop: true, 312 | maintainSelected: true, 313 | responseHandler: function(res) { // res 为后台return的值 314 | return res; 315 | }, 316 | onCheck: function(row) { 317 | return false; 318 | }, 319 | onUncheck: function(row) { 320 | return false; 321 | }, 322 | onCheckAll: function(rows) { 323 | return false; 324 | }, 325 | onUncheckAll: function(rows) { 326 | return false; 327 | }, 328 | onClickRow : onClickRow, 329 | columns: columns, 330 | ajaxOptions:{ 331 | headers: header 332 | } 333 | }); 334 | }, 335 | /** 336 | * @author 师晓波 337 | * 自动生成checkbox 338 | * @container 容器id 339 | * @data 数据 340 | * @cid checkbox id or name 341 | */ 342 | tcheckbox : function(container,data,cid){ 343 | var str = ""; 344 | for (var i = 0; i < data.length; i++){ 345 | str = str + "" 346 | } 347 | $('#' + container).empty(); 348 | $('#' + container).append(str); 349 | 350 | $(document).ready(function() { 351 | $(".i-checks").iCheck({ 352 | checkboxClass : "icheckbox_square-green", 353 | radioClass : "iradio_square-green", 354 | }) 355 | }); 356 | }, 357 | /** 358 | * @author 师晓波 359 | * 自动生成select 360 | * @container 容器id 361 | * @data 数据 362 | */ 363 | tselect : function(container,data){ 364 | var str = ""; 365 | for (var i = 0; i < data.length; i++){ 366 | str = str + "" 367 | } 368 | $('#' + container).empty(); 369 | $('#' + container).append(str); 370 | }, 371 | 372 | tselect_search : function(container,data){ 373 | var str = ""; 374 | for (var i = 0; i < data.length; i++){ 375 | str = str + "" 376 | } 377 | $('#' + container).empty(); 378 | $('#' + container).append(str); 379 | } 380 | 381 | 382 | }); -------------------------------------------------------------------------------- /js/plugins/bootstrap-table/bootstrap-table-mobile.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * bootstrap-table - v1.9.0 - 2015-09-30 3 | * https://github.com/wenzhixin/bootstrap-table 4 | * Copyright (c) 2015 zhixin wen 5 | * Licensed MIT License 6 | */ 7 | !function(a){"use strict";var b=function(b,c){b.options.columnsHidden.length>0&&a.each(b.columns,function(d,e){-1!==b.options.columnsHidden.indexOf(e.field)&&e.visible!==c&&b.toggleColumn(a.fn.bootstrapTable.utils.getFieldIndex(b.columns,e.field),c,!0)})},c=function(a){(a.options.height||a.options.showFooter)&&setTimeout(a.resetView,1)},d=function(a,b,d){a.options.minHeight?b<=a.options.minWidth&&d<=a.options.minHeight?e(a):b>a.options.minWidth&&d>a.options.minHeight&&f(a):b<=a.options.minWidth?e(a):b>a.options.minWidth&&f(a),c(a)},e=function(a){g(a,!1),b(a,!1)},f=function(a){g(a,!0),b(a,!0)},g=function(a,b){a.options.cardView=b,a.toggleView()},h=function(a,b){var c;return function(){var d=this,e=arguments,f=function(){c=null,a.apply(d,e)};clearTimeout(c),c=setTimeout(f,b)}};a.extend(a.fn.bootstrapTable.defaults,{mobileResponsive:!1,minWidth:562,minHeight:void 0,heightThreshold:100,checkOnInit:!0,columnsHidden:[]});var i=a.fn.bootstrapTable.Constructor,j=i.prototype.init;i.prototype.init=function(){if(j.apply(this,Array.prototype.slice.apply(arguments)),this.options.mobileResponsive&&this.options.minWidth){var b=this,c={width:a(window).width(),height:a(window).height()};if(a(window).on("resize orientationchange",h(function(){var e=a(this).height(),f=a(this).width();(Math.abs(c.height-e)>b.options.heightThreshold||c.width!=f)&&(d(b,f,e),c={width:f,height:e})},200)),this.options.checkOnInit){var e=a(window).height(),f=a(window).width();d(this,f,e),c={width:f,height:e}}}}}(jQuery); -------------------------------------------------------------------------------- /js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * bootstrap-table - v1.9.0 - 2015-09-30 3 | * https://github.com/wenzhixin/bootstrap-table 4 | * Copyright (c) 2015 zhixin wen 5 | * Licensed MIT License 6 | */ 7 | !function(a){"use strict";a.fn.bootstrapTable.locales["zh-CN"]={formatLoadingMessage:function(){return"正在努力地加载数据中,请稍候……"},formatRecordsPerPage:function(a){return"每页显示 "+a+" 条记录"},formatShowingRows:function(a,b,c){return"显示第 "+a+" 到第 "+b+" 条记录,总共 "+c+" 条记录"},formatSearch:function(){return"搜索"},formatNoMatches:function(){return"没有找到匹配的记录"},formatPaginationSwitch:function(){return"隐藏/显示分页"},formatRefresh:function(){return"刷新"},formatToggle:function(){return"切换"},formatColumns:function(){return"列"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["zh-CN"])}(jQuery); -------------------------------------------------------------------------------- /js/plugins/layer/laydate/laydate.js: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | @Name : layDate v1.1 日期控件 4 | @Author: 贤心 5 | @Date: 2014-06-25 6 | @QQ群:176047195 7 | @Site:http://sentsin.com/layui/laydate 8 | 9 | */ 10 | 11 | ;!function(a){var b={path:"",defSkin:"default",format:"YYYY-MM-DD",min:"1900-01-01 00:00:00",max:"2099-12-31 23:59:59",isv:!1},c={},d=document,e="createElement",f="getElementById",g="getElementsByTagName",h=["laydate_box","laydate_void","laydate_click","LayDateSkin","skins/","/laydate.css"];a.laydate=function(b){b=b||{};try{h.event=a.event?a.event:laydate.caller.arguments[0]}catch(d){}return c.run(b),laydate},laydate.v="1.1",c.getPath=function(){var a=document.scripts,c=a[a.length-1].src;return b.path?b.path:c.substring(0,c.lastIndexOf("/")+1)}(),c.use=function(a,b){var f=d[e]("link");f.type="text/css",f.rel="stylesheet",f.href=c.getPath+a+h[5],b&&(f.id=b),d[g]("head")[0].appendChild(f),f=null},c.trim=function(a){return a=a||"",a.replace(/^\s|\s$/g,"").replace(/\s+/g," ")},c.digit=function(a){return 10>a?"0"+(0|a):a},c.stopmp=function(b){return b=b||a.event,b.stopPropagation?b.stopPropagation():b.cancelBubble=!0,this},c.each=function(a,b){for(var c=0,d=a.length;d>c&&b(c,a[c])!==!1;c++);},c.hasClass=function(a,b){return a=a||{},new RegExp("\\b"+b+"\\b").test(a.className)},c.addClass=function(a,b){return a=a||{},c.hasClass(a,b)||(a.className+=" "+b),a.className=c.trim(a.className),this},c.removeClass=function(a,b){if(a=a||{},c.hasClass(a,b)){var d=new RegExp("\\b"+b+"\\b");a.className=a.className.replace(d,"")}return this},c.removeCssAttr=function(a,b){var c=a.style;c.removeProperty?c.removeProperty(b):c.removeAttribute(b)},c.shde=function(a,b){a.style.display=b?"none":"block"},c.query=function(a){var e,b,h,i,j;return a=c.trim(a).split(" "),b=d[f](a[0].substr(1)),b?a[1]?/^\./.test(a[1])?(i=a[1].substr(1),j=new RegExp("\\b"+i+"\\b"),e=[],h=d.getElementsByClassName?b.getElementsByClassName(i):b[g]("*"),c.each(h,function(a,b){j.test(b.className)&&e.push(b)}),e[0]?e:""):(e=b[g](a[1]),e[0]?b[g](a[1]):""):b:void 0},c.on=function(b,d,e){return b.attachEvent?b.attachEvent("on"+d,function(){e.call(b,a.even)}):b.addEventListener(d,e,!1),c},c.stopMosup=function(a,b){"mouseup"!==a&&c.on(b,"mouseup",function(a){c.stopmp(a)})},c.run=function(a){var d,e,g,b=c.query,f=h.event;try{g=f.target||f.srcElement||{}}catch(i){g={}}if(d=a.elem?b(a.elem):g,f&&g.tagName){if(!d||d===c.elem)return;c.stopMosup(f.type,d),c.stopmp(f),c.view(d,a),c.reshow()}else e=a.event||"click",c.each((0|d.length)>0?d:[d],function(b,d){c.stopMosup(e,d),c.on(d,e,function(b){c.stopmp(b),d!==c.elem&&(c.view(d,a),c.reshow())})})},c.scroll=function(a){return a=a?"scrollLeft":"scrollTop",d.body[a]|d.documentElement[a]},c.winarea=function(a){return document.documentElement[a?"clientWidth":"clientHeight"]},c.isleap=function(a){return 0===a%4&&0!==a%100||0===a%400},c.checkVoid=function(a,b,d){var e=[];return a=0|a,b=0|b,d=0|d,ac.maxs[0]?e=["y",1]:a>=c.mins[0]&&a<=c.maxs[0]&&(a==c.mins[0]&&(bc.maxs[1]?e=["m",1]:b==c.maxs[1]&&d>c.maxs[2]&&(e=["d",1]))),e},c.timeVoid=function(a,b){if(c.ymd[1]+1==c.mins[1]&&c.ymd[2]==c.mins[2]){if(0===b&&ac.maxs[3])return 1;if(1===b&&a>c.maxs[4])return 1;if(2===b&&a>c.maxs[5])return 1}return a>(b?59:23)?1:void 0},c.check=function(){var a=c.options.format.replace(/YYYY|MM|DD|hh|mm|ss/g,"\\d+\\").replace(/\\$/g,""),b=new RegExp(a),d=c.elem[h.elemv],e=d.match(/\d+/g)||[],f=c.checkVoid(e[0],e[1],e[2]);if(""!==d.replace(/\s/g,"")){if(!b.test(d))return c.elem[h.elemv]="",c.msg("日期不符合格式,请重新选择。"),1;if(f[0])return c.elem[h.elemv]="",c.msg("日期不在有效期内,请重新选择。"),1;f.value=c.elem[h.elemv].match(b).join(),e=f.value.match(/\d+/g),e[1]<1?(e[1]=1,f.auto=1):e[1]>12?(e[1]=12,f.auto=1):e[1].length<2&&(f.auto=1),e[2]<1?(e[2]=1,f.auto=1):e[2]>c.months[(0|e[1])-1]?(e[2]=31,f.auto=1):e[2].length<2&&(f.auto=1),e.length>3&&(c.timeVoid(e[3],0)&&(f.auto=1),c.timeVoid(e[4],1)&&(f.auto=1),c.timeVoid(e[5],2)&&(f.auto=1)),f.auto?c.creation([e[0],0|e[1],0|e[2]],1):f.value!==c.elem[h.elemv]&&(c.elem[h.elemv]=f.value)}},c.months=[31,null,31,30,31,30,31,31,30,31,30,31],c.viewDate=function(a,b,d){var f=(c.query,{}),g=new Date;a<(0|c.mins[0])&&(a=0|c.mins[0]),a>(0|c.maxs[0])&&(a=0|c.maxs[0]),g.setFullYear(a,b,d),f.ymd=[g.getFullYear(),g.getMonth(),g.getDate()],c.months[1]=c.isleap(f.ymd[0])?29:28,g.setFullYear(f.ymd[0],f.ymd[1],1),f.FDay=g.getDay(),f.PDay=c.months[0===b?11:b-1]-f.FDay+1,f.NDay=1,c.each(h.tds,function(a,b){var g,d=f.ymd[0],e=f.ymd[1]+1;b.className="",a=f.FDay&&a'+a+"年":'
  • '+(a-7+b)+"年
  • "}),b("#laydate_ys").innerHTML=d,c.each(b("#laydate_ys li"),function(a,b){"y"===c.checkVoid(b.getAttribute("y"))[0]?c.addClass(b,h[1]):c.on(b,"click",function(a){c.stopmp(a).reshow(),c.viewDate(0|this.getAttribute("y"),c.ymd[1],c.ymd[2])})})},c.initDate=function(){var d=(c.query,new Date),e=c.elem[h.elemv].match(/\d+/g)||[];e.length<3&&(e=c.options.start.match(/\d+/g)||[],e.length<3&&(e=[d.getFullYear(),d.getMonth()+1,d.getDate()])),c.inymd=e,c.viewDate(e[0],e[1]-1,e[2])},c.iswrite=function(){var a=c.query,b={time:a("#laydate_hms")};c.shde(b.time,!c.options.istime),c.shde(h.oclear,!("isclear"in c.options?c.options.isclear:1)),c.shde(h.otoday,!("istoday"in c.options?c.options.istoday:1)),c.shde(h.ok,!("issure"in c.options?c.options.issure:1))},c.orien=function(a,b){var d,e=c.elem.getBoundingClientRect();a.style.left=e.left+(b?0:c.scroll(1))+"px",d=e.bottom+a.offsetHeight/1.5<=c.winarea()?e.bottom-1:e.top>a.offsetHeight/1.5?e.top-a.offsetHeight+1:c.winarea()-a.offsetHeight,a.style.top=d+(b?0:c.scroll())+"px"},c.follow=function(a){c.options.fixed?(a.style.position="fixed",c.orien(a,1)):(a.style.position="absolute",c.orien(a))},c.viewtb=function(){var a,b=[],f=["日","一","二","三","四","五","六"],h={},i=d[e]("table"),j=d[e]("thead");return j.appendChild(d[e]("tr")),h.creath=function(a){var b=d[e]("th");b.innerHTML=f[a],j[g]("tr")[0].appendChild(b),b=null},c.each(new Array(6),function(d){b.push([]),a=i.insertRow(0),c.each(new Array(7),function(c){b[d][c]=0,0===d&&h.creath(c),a.insertCell(c)})}),i.insertBefore(j,i.children[0]),i.id=i.className="laydate_table",a=b=null,i.outerHTML.toLowerCase()}(),c.view=function(a,f){var i,g=c.query,j={};f=f||a,c.elem=a,c.options=f,c.options.format||(c.options.format=b.format),c.options.start=c.options.start||"",c.mm=j.mm=[c.options.min||b.min,c.options.max||b.max],c.mins=j.mm[0].match(/\d+/g),c.maxs=j.mm[1].match(/\d+/g),h.elemv=/textarea|input/.test(c.elem.tagName.toLocaleLowerCase())?"value":"innerHTML",c.box?c.shde(c.box):(i=d[e]("div"),i.id=h[0],i.className=h[0],i.style.cssText="position: absolute;",i.setAttribute("name","laydate-v"+laydate.v),i.innerHTML=j.html='
      '+function(){var a="";return c.each(new Array(12),function(b){a+=''+c.digit(b+1)+"月"}),a}()+"
      "+"
      "+"
      "+c.viewtb+'
      '+'
        '+'
      • 时间
      • '+"
      • :
      • "+"
      • :
      • "+"
      • "+"
      "+'
      '+'
      '+'清空'+'今天'+'确认'+"
      "+(b.isv?'laydate-v'+laydate.v+"":"")+"
      ",d.body.appendChild(i),c.box=g("#"+h[0]),c.events(),i=null),c.follow(c.box),f.zIndex?c.box.style.zIndex=f.zIndex:c.removeCssAttr(c.box,"z-index"),c.stopMosup("click",c.box),c.initDate(),c.iswrite(),c.check()},c.reshow=function(){return c.each(c.query("#"+h[0]+" .laydate_show"),function(a,b){c.removeClass(b,"laydate_show")}),this},c.close=function(){c.reshow(),c.shde(c.query("#"+h[0]),1),c.elem=null},c.parse=function(a,d,e){return a=a.concat(d),e=e||(c.options?c.options.format:b.format),e.replace(/YYYY|MM|DD|hh|mm|ss/g,function(){return a.index=0|++a.index,c.digit(a[a.index])})},c.creation=function(a,b){var e=(c.query,c.hmsin),f=c.parse(a,[e[0].value,e[1].value,e[2].value]);c.elem[h.elemv]=f,b||(c.close(),"function"==typeof c.options.choose&&c.options.choose(f))},c.events=function(){var b=c.query,e={box:"#"+h[0]};c.addClass(d.body,"laydate_body"),h.tds=b("#laydate_table td"),h.mms=b("#laydate_ms span"),h.year=b("#laydate_y"),h.month=b("#laydate_m"),c.each(b(e.box+" .laydate_ym"),function(a,b){c.on(b,"click",function(b){c.stopmp(b).reshow(),c.addClass(this[g]("div")[0],"laydate_show"),a||(e.YY=parseInt(h.year.value),c.viewYears(e.YY))})}),c.on(b(e.box),"click",function(){c.reshow()}),e.tabYear=function(a){0===a?c.ymd[0]--:1===a?c.ymd[0]++:2===a?e.YY-=14:e.YY+=14,2>a?(c.viewDate(c.ymd[0],c.ymd[1],c.ymd[2]),c.reshow()):c.viewYears(e.YY)},c.each(b("#laydate_YY .laydate_tab"),function(a,b){c.on(b,"click",function(b){c.stopmp(b),e.tabYear(a)})}),e.tabMonth=function(a){a?(c.ymd[1]++,12===c.ymd[1]&&(c.ymd[0]++,c.ymd[1]=0)):(c.ymd[1]--,-1===c.ymd[1]&&(c.ymd[0]--,c.ymd[1]=11)),c.viewDate(c.ymd[0],c.ymd[1],c.ymd[2])},c.each(b("#laydate_MM .laydate_tab"),function(a,b){c.on(b,"click",function(b){c.stopmp(b).reshow(),e.tabMonth(a)})}),c.each(b("#laydate_ms span"),function(a,b){c.on(b,"click",function(a){c.stopmp(a).reshow(),c.hasClass(this,h[1])||c.viewDate(c.ymd[0],0|this.getAttribute("m"),c.ymd[2])})}),c.each(b("#laydate_table td"),function(a,b){c.on(b,"click",function(a){c.hasClass(this,h[1])||(c.stopmp(a),c.creation([0|this.getAttribute("y"),0|this.getAttribute("m"),0|this.getAttribute("d")]))})}),h.oclear=b("#laydate_clear"),c.on(h.oclear,"click",function(){c.elem[h.elemv]="",c.close()}),h.otoday=b("#laydate_today"),c.on(h.otoday,"click",function(){c.elem[h.elemv]=laydate.now(0,c.options.format),c.close()}),h.ok=b("#laydate_ok"),c.on(h.ok,"click",function(){c.valid&&c.creation([c.ymd[0],c.ymd[1]+1,c.ymd[2]])}),e.times=b("#laydate_time"),c.hmsin=e.hmsin=b("#laydate_hms input"),e.hmss=["小时","分钟","秒数"],e.hmsarr=[],c.msg=function(a,d){var f='
      '+(d||"提示")+"×
      ";"string"==typeof a?(f+="

      "+a+"

      ",c.shde(b("#"+h[0])),c.removeClass(e.times,"laydate_time1").addClass(e.times,"laydate_msg")):(e.hmsarr[a]?f=e.hmsarr[a]:(f+='
      ',c.each(new Array(0===a?24:60),function(a){f+=""+a+""}),f+="
      ",e.hmsarr[a]=f),c.removeClass(e.times,"laydate_msg"),c[0===a?"removeClass":"addClass"](e.times,"laydate_time1")),c.addClass(e.times,"laydate_show"),e.times.innerHTML=f},e.hmson=function(a,d){var e=b("#laydate_hmsno span"),f=c.valid?null:1;c.each(e,function(b,e){f?c.addClass(e,h[1]):c.timeVoid(b,d)?c.addClass(e,h[1]):c.on(e,"click",function(){c.hasClass(this,h[1])||(a.value=c.digit(0|this.innerHTML))})}),c.addClass(e[0|a.value],"laydate_click")},c.each(e.hmsin,function(a,b){c.on(b,"click",function(b){c.stopmp(b).reshow(),c.msg(a,e.hmss[a]),e.hmson(this,a)})}),c.on(d,"mouseup",function(){var a=b("#"+h[0]);a&&"none"!==a.style.display&&(c.check()||c.close())}).on(d,"keydown",function(b){b=b||a.event;var d=b.keyCode;13===d&&c.creation([c.ymd[0],c.ymd[1]+1,c.ymd[2]])})},c.init=function(){c.use("need"),c.use(h[4]+b.defSkin,h[3]),c.skinLink=c.query("#"+h[3])}(),laydate.reset=function(){c.box&&c.elem&&c.follow(c.box)},laydate.now=function(a,b){var d=new Date(0|a?function(a){return 864e5>a?+new Date+864e5*a:a}(parseInt(a)):+new Date);return c.parse([d.getFullYear(),d.getMonth()+1,d.getDate()],[d.getHours(),d.getMinutes(),d.getSeconds()],b)},laydate.skin=function(a){c.skinLink.href=c.getPath+h[4]+a+h[5]}}(window); -------------------------------------------------------------------------------- /js/plugins/layer/laydate/need/laydate.css: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | @Name: laydate 核心样式 4 | @Author:贤心 5 | @Site:http://sentsin.com/layui/laydate 6 | 7 | **/ 8 | 9 | html{_background-image:url(about:blank); _background-attachment:fixed;} 10 | .layer-date{display: inline-block!important;vertical-align:text-top;max-width:240px;} 11 | .laydate_body .laydate_box, .laydate_body .laydate_box *{margin:0; padding:0;} 12 | .laydate-icon, 13 | .laydate-icon-default, 14 | .laydate-icon-danlan, 15 | .laydate-icon-dahong, 16 | .laydate-icon-molv{height:34px; padding-right:20px;min-width:34px;vertical-align: text-top;border:1px solid #C6C6C6; background-repeat:no-repeat; background-position:right center; background-color:#fff; outline:0;} 17 | .laydate-icon-default{ background-image:url(../skins/default/icon.png)} 18 | .laydate-icon-danlan{border:1px solid #B1D2EC; background-image:url(../skins/danlan/icon.png)} 19 | .laydate-icon-dahong{background-image:url(../skins/dahong/icon.png)} 20 | .laydate-icon-molv{background-image:url(../skins/molv/icon.png)} 21 | .laydate_body .laydate_box{width:240px; font:12px '\5B8B\4F53'; z-index:99999999; *margin:-2px 0 0 -2px; *overflow:hidden; _margin:0; _position:absolute!important; background-color:#fff;} 22 | .laydate_body .laydate_box li{list-style:none;} 23 | .laydate_body .laydate_box .laydate_void{cursor:text!important;} 24 | .laydate_body .laydate_box a, .laydate_body .laydate_box a:hover{text-decoration:none; blr:expression(this.onFocus=this.blur()); cursor:pointer;} 25 | .laydate_body .laydate_box a:hover{text-decoration:none;} 26 | .laydate_body .laydate_box cite, .laydate_body .laydate_box label{position:absolute; width:0; height:0; border-width:5px; border-style:dashed; border-color:transparent; overflow:hidden; cursor:pointer;} 27 | .laydate_body .laydate_box .laydate_yms, .laydate_body .laydate_box .laydate_time{display:none;} 28 | .laydate_body .laydate_box .laydate_show{display:block;} 29 | .laydate_body .laydate_box input{outline:0; font-size:14px; background-color:#fff;} 30 | .laydate_body .laydate_top{position:relative; height:26px; padding:5px; *width:100%; z-index:99;} 31 | .laydate_body .laydate_ym{position:relative; float:left; height:24px; cursor:pointer;} 32 | .laydate_body .laydate_ym input{float:left; height:24px; line-height:24px; text-align:center; border:none; cursor:pointer;} 33 | .laydate_body .laydate_ym .laydate_yms{position:absolute; left: -1px; top: 24px; height:181px;} 34 | .laydate_body .laydate_y{width:121px;} 35 | .laydate_body .laydate_y input{width:64px; margin-right:15px;} 36 | .laydate_body .laydate_y .laydate_yms{width:121px; text-align:center;} 37 | .laydate_body .laydate_y .laydate_yms a{position:relative; display:block; height:20px;} 38 | .laydate_body .laydate_y .laydate_yms ul{height:139px; padding:0; *overflow:hidden;} 39 | .laydate_body .laydate_y .laydate_yms ul li{float:left; width:60px; height:20px; line-height: 20px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;} 40 | .laydate_box *{box-sizing:content-box!important;} 41 | .laydate_body .laydate_m{width:99px;float: right;margin-right:-2px;} 42 | .laydate_body .laydate_m .laydate_yms{width:99px; padding:0;} 43 | .laydate_body .laydate_m input{width:42px; margin-right:15px;} 44 | .laydate_body .laydate_m .laydate_yms span{display:block; float:left; width:42px; margin: 5px 0 0 5px; line-height:24px; text-align:center; _display:inline;} 45 | .laydate_body .laydate_choose{display:block; float:left; position:relative; width:20px; height:24px;} 46 | .laydate_body .laydate_choose cite, .laydate_body .laydate_tab cite{left:50%; top:50%;} 47 | .laydate_body .laydate_chtop cite{margin:-7px 0 0 -5px; border-bottom-style:solid;} 48 | .laydate_body .laydate_chdown cite, .laydate_body .laydate_ym label{top:50%; margin:-2px 0 0 -5px; border-top-style:solid;} 49 | .laydate_body .laydate_chprev cite{margin:-5px 0 0 -7px;} 50 | .laydate_body .laydate_chnext cite{margin:-5px 0 0 -2px;} 51 | .laydate_body .laydate_ym label{right:28px;} 52 | .laydate_body .laydate_table{ width:230px; margin:0 5px; border-collapse:collapse; border-spacing:0px; } 53 | .laydate_body .laydate_table td{width:31px; height:19px; line-height:19px; text-align: center; cursor:pointer; font-size: 12px;} 54 | .laydate_body .laydate_table thead{height:22px; line-height:22px;} 55 | .laydate_body .laydate_table thead th{font-weight:400; font-size:12px; text-align:center;} 56 | .laydate_body .laydate_bottom{position:relative; height:22px; line-height:20px; padding:5px; font-size:12px;} 57 | .laydate_body .laydate_bottom #laydate_hms{position: relative; z-index: 1; float:left; } 58 | .laydate_body .laydate_time{ position:absolute; left:5px; bottom: 26px; width:129px; height:125px; *overflow:hidden;} 59 | .laydate_body .laydate_time .laydate_hmsno{ padding:5px 0 0 5px;} 60 | .laydate_body .laydate_time .laydate_hmsno span{display:block; float:left; width:24px; height:19px; line-height:19px; text-align:center; cursor:pointer; *margin-bottom:-5px;} 61 | .laydate_body .laydate_time1{width:228px; height:154px;} 62 | .laydate_body .laydate_time1 .laydate_hmsno{padding: 6px 0 0 8px;} 63 | .laydate_body .laydate_time1 .laydate_hmsno span{width:21px; height:20px; line-height:20px;} 64 | .laydate_body .laydate_msg{left:49px; bottom:67px; width:141px; height:auto; overflow: hidden;} 65 | .laydate_body .laydate_msg p{padding:5px 10px;} 66 | .laydate_body .laydate_bottom li{float:left; height:20px; line-height:20px; border-right:none; font-weight:900;} 67 | .laydate_body .laydate_bottom .laydate_sj{width:33px; text-align:center; font-weight:400;} 68 | .laydate_body .laydate_bottom input{float:left; width:21px; height:20px; line-height:20px; border:none; text-align:center; cursor:pointer; font-size:12px; font-weight:400;} 69 | .laydate_body .laydate_bottom .laydte_hsmtex{height:20px; line-height:20px; text-align:center;} 70 | .laydate_body .laydate_bottom .laydte_hsmtex span{position:absolute; width:20px; top:0; right:0px; cursor:pointer;} 71 | .laydate_body .laydate_bottom .laydte_hsmtex span:hover{font-size:14px;} 72 | .laydate_body .laydate_bottom .laydate_btn{position:absolute; right:5px; top:5px;} 73 | .laydate_body .laydate_bottom .laydate_btn a{float:left; height:20px; padding:0 6px; _padding:0 5px;} 74 | .laydate_body .laydate_bottom .laydate_v{position:absolute; left:10px; top:6px; font-family:Courier; z-index:0;} 75 | 76 | -------------------------------------------------------------------------------- /js/plugins/layer/laydate/skins/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/js/plugins/layer/laydate/skins/default/icon.png -------------------------------------------------------------------------------- /js/plugins/layer/laydate/skins/default/laydate.css: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | @Name: laydate皮肤:墨绿 4 | @Author:贤心 5 | @Site:http://sentsin.com/layui/laydate 6 | 7 | **/ 8 | 9 | .laydate-icon{border:1px solid #ccc; background-image:url(icon.png)} 10 | 11 | .laydate_body .laydate_bottom #laydate_hms, 12 | .laydate_body .laydate_time{border:1px solid #ccc;} 13 | 14 | .laydate_body .laydate_box, 15 | .laydate_body .laydate_ym .laydate_yms, 16 | .laydate_body .laydate_time{box-shadow: 2px 2px 5px rgba(0,0,0,.1);} 17 | 18 | .laydate_body .laydate_box{border-top:none; border-bottom:none; background-color:#fff; color:#00625A;} 19 | .laydate_body .laydate_box input{background:none!important; color:#fff;} 20 | .laydate_body .laydate_box .laydate_void{color:#00E8D7!important;} 21 | .laydate_body .laydate_box a, .laydate_body .laydate_box a:hover{color:#00625A;} 22 | .laydate_body .laydate_box a:hover{color:#666;} 23 | .laydate_body .laydate_click{background-color:#009F95!important; color:#fff!important;} 24 | .laydate_body .laydate_top{border-top:1px solid #009F95; background-color:#009F95} 25 | .laydate_body .laydate_ym{border:1px solid #009F95; background-color:#009F95;} 26 | .laydate_body .laydate_ym .laydate_yms{border:1px solid #009F95; background-color:#009F95; color:#fff;} 27 | .laydate_body .laydate_y .laydate_yms a{border-bottom:1px solid #009F95;} 28 | .laydate_body .laydate_y .laydate_yms .laydate_chdown{border-top:1px solid #009F95; border-bottom:none;} 29 | .laydate_body .laydate_choose{border-left:1px solid #009F95;} 30 | .laydate_body .laydate_chprev{border-left:none; border-right:1px solid #009F95;} 31 | .laydate_body .laydate_choose:hover, 32 | .laydate_body .laydate_y .laydate_yms a:hover{background-color:#00C1B3;} 33 | .laydate_body .laydate_chtop cite{border-bottom-color:#fff;} 34 | .laydate_body .laydate_chdown cite, .laydate_body .laydate_ym label{border-top-color:#fff;} 35 | .laydate_body .laydate_chprev cite{border-right-style:solid; border-right-color:#fff;} 36 | .laydate_body .laydate_chnext cite{border-left-style:solid; border-left-color:#fff;} 37 | .laydate_body .laydate_table{width: 240px!important; margin: 0!important; border:1px solid #ccc; border-top:none; border-bottom:none;} 38 | .laydate_body .laydate_table td{border:none; height:21px!important; line-height:21px!important; background-color:#fff; color:#00625A;} 39 | .laydate_body .laydate_table .laydate_nothis{color:#999;} 40 | .laydate_body .laydate_table thead{border-bottom:1px solid #ccc; height:21px!important; line-height:21px!important;} 41 | .laydate_body .laydate_table thead th{} 42 | .laydate_body .laydate_bottom{border:1px solid #ccc; border-top:none;} 43 | .laydate_body .laydate_bottom #laydate_hms{background-color:#fff;} 44 | .laydate_body .laydate_time{background-color:#fff;} 45 | .laydate_body .laydate_time1{width: 226px!important; height: 152px!important;} 46 | .laydate_body .laydate_bottom .laydate_sj{width:31px!important; border-right:1px solid #ccc; background-color:#fff;} 47 | .laydate_body .laydate_bottom input{background-color:#fff; color:#00625A;} 48 | .laydate_body .laydate_bottom .laydte_hsmtex{border-bottom:1px solid #ccc;} 49 | .laydate_body .laydate_bottom .laydate_btn{border-right:1px solid #ccc;} 50 | .laydate_body .laydate_bottom .laydate_v{color:#999} 51 | .laydate_body .laydate_bottom .laydate_btn a{border: 1px solid #ccc; border-right:none; background-color:#fff;} 52 | .laydate_body .laydate_bottom .laydate_btn a:hover{background-color:#F6F6F6; color:#00625A;} 53 | 54 | .laydate_body .laydate_m .laydate_yms span:hover, 55 | .laydate_body .laydate_time .laydate_hmsno span:hover, 56 | .laydate_body .laydate_y .laydate_yms ul li:hover, 57 | .laydate_body .laydate_table td:hover{background-color:#00C1B3; color:#fff;} 58 | 59 | 60 | -------------------------------------------------------------------------------- /js/plugins/layer/layer.min.js: -------------------------------------------------------------------------------- 1 | /*! layer-v2.0 弹层组件 License LGPL http://layer.layui.com/ By 贤心 */ 2 | ;!function(a,b){"use strict";var c,d,e={getPath:function(){var a=document.scripts,b=a[a.length-1],c=b.src;if(!b.getAttribute("merge"))return c.substring(0,c.lastIndexOf("/")+1)}(),enter:function(a){13===a.keyCode&&a.preventDefault()},config:{},end:{},btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"]},f={v:"2.0",ie6:!!a.ActiveXObject&&!a.XMLHttpRequest,index:0,path:e.getPath,config:function(a,b){var d=0;return a=a||{},f.cache=e.config=c.extend(e.config,a),f.path=e.config.path||f.path,"string"==typeof a.extend&&(a.extend=[a.extend]),f.use("skin/layer.css",a.extend&&a.extend.length>0?function g(){var c=a.extend;f.use(c[c[d]?d:d-1],d'+(i?f.title[0]:f.title)+"":"";return f.zIndex=g,b([f.shade?'
      ':"",'
      '+(a&&2!=f.type?"":k)+'
      '+(0==f.type&&-1!==f.icon?'':"")+(1==f.type&&a?"":f.content||"")+'
      '+function(){var a=j?'':"";return f.closeBtn&&(a+=''),a}()+""+(f.btn?function(){var a="";"string"==typeof f.btn&&(f.btn=[f.btn]);for(var b=0,c=f.btn.length;c>b;b++)a+=''+f.btn[b]+"";return'
      '+a+"
      "}():"")+"
      "],k),c},g.pt.creat=function(){var a=this,b=a.config,g=a.index,i=b.content,j="object"==typeof i;switch("string"==typeof b.area&&(b.area="auto"===b.area?["",""]:[b.area,""]),b.type){case 0:b.btn="btn"in b?b.btn:e.btn[0],f.closeAll("dialog");break;case 2:var i=b.content=j?b.content:[b.content||"http://sentsin.com?from=layer","auto"];b.content='';break;case 3:b.title=!1,b.closeBtn=!1,-1===b.icon&&0===b.icon,f.closeAll("loading");break;case 4:j||(b.content=[b.content,"body"]),b.follow=b.content[1],b.content=b.content[0]+'',b.title=!1,b.shade=!1,b.fix=!1,b.tips="object"==typeof b.tips?b.tips:[b.tips,!0],b.tipsMore||f.closeAll("tips")}a.vessel(j,function(d,e){c("body").append(d[0]),j?function(){2==b.type||4==b.type?function(){c("body").append(d[1])}():function(){i.parents("."+h[0])[0]||(i.show().addClass("layui-layer-wrap").wrap(d[1]),c("#"+h[0]+g).find("."+h[5]).before(e))}()}():c("body").append(d[1]),a.layero=c("#"+h[0]+g),b.scrollbar||h.html.css("overflow","hidden").attr("layer-full",g)}).auto(g),2==b.type&&f.ie6&&a.layero.find("iframe").attr("src",i[0]),c(document).off("keydown",e.enter).on("keydown",e.enter),4==b.type?a.tips():a.offset(),b.fix&&d.on("resize",function(){a.offset(),(/^\d+%$/.test(b.area[0])||/^\d+%$/.test(b.area[1]))&&a.auto(g),4==b.type&&a.tips()}),b.time<=0||setTimeout(function(){f.close(a.index)},b.time),a.move().callback()},g.pt.auto=function(a){function b(a){a=g.find(a),a.height(i[1]-j-k-2*(0|parseFloat(a.css("padding"))))}var e=this,f=e.config,g=c("#"+h[0]+a);""===f.area[0]&&f.maxWidth>0&&(/MSIE 7/.test(navigator.userAgent)&&f.btn&&g.width(g.innerWidth()),g.outerWidth()>f.maxWidth&&g.width(f.maxWidth));var i=[g.innerWidth(),g.innerHeight()],j=g.find(h[1]).outerHeight()||0,k=g.find("."+h[6]).outerHeight()||0;switch(f.type){case 2:b("iframe");break;default:""===f.area[1]?f.fix&&i[1]>=d.height()&&(i[1]=d.height(),b("."+h[5])):b("."+h[5])}return e},g.pt.offset=function(){var a=this,b=a.config,c=a.layero,e=[c.outerWidth(),c.outerHeight()],f="object"==typeof b.offset;a.offsetTop=(d.height()-e[1])/2,a.offsetLeft=(d.width()-e[0])/2,f?(a.offsetTop=b.offset[0],a.offsetLeft=b.offset[1]||a.offsetLeft):"auto"!==b.offset&&(a.offsetTop=b.offset,"rb"===b.offset&&(a.offsetTop=d.height()-e[1],a.offsetLeft=d.width()-e[0])),b.fix||(a.offsetTop=/%$/.test(a.offsetTop)?d.height()*parseFloat(a.offsetTop)/100:parseFloat(a.offsetTop),a.offsetLeft=/%$/.test(a.offsetLeft)?d.width()*parseFloat(a.offsetLeft)/100:parseFloat(a.offsetLeft),a.offsetTop+=d.scrollTop(),a.offsetLeft+=d.scrollLeft()),c.css({top:a.offsetTop,left:a.offsetLeft})},g.pt.tips=function(){var a=this,b=a.config,e=a.layero,f=[e.outerWidth(),e.outerHeight()],g=c(b.follow);g[0]||(g=c("body"));var i={width:g.outerWidth(),height:g.outerHeight(),top:g.offset().top,left:g.offset().left},j=e.find(".layui-layer-TipsG"),k=b.tips[0];b.tips[1]||j.remove(),i.autoLeft=function(){i.left+f[0]-d.width()>0?(i.tipLeft=i.left+i.width-f[0],j.css({right:12,left:"auto"})):i.tipLeft=i.left},i.where=[function(){i.autoLeft(),i.tipTop=i.top-f[1]-10,j.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",b.tips[1])},function(){i.tipLeft=i.left+i.width+10,i.tipTop=i.top,j.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",b.tips[1])},function(){i.autoLeft(),i.tipTop=i.top+i.height+10,j.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",b.tips[1])},function(){i.tipLeft=i.left-f[0]-10,i.tipTop=i.top,j.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",b.tips[1])}],i.where[k-1](),1===k?i.top-(d.scrollTop()+f[1]+16)<0&&i.where[2]():2===k?d.width()-(i.left+i.width+f[0]+16)>0||i.where[3]():3===k?i.top-d.scrollTop()+i.height+f[1]+16-d.height()>0&&i.where[0]():4===k&&f[0]+16-i.left>0&&i.where[1](),e.find("."+h[5]).css({"background-color":b.tips[1],"padding-right":b.closeBtn?"30px":""}),e.css({left:i.tipLeft,top:i.tipTop})},g.pt.move=function(){var a=this,b=a.config,e={setY:0,moveLayer:function(){var a=e.layero,b=parseInt(a.css("margin-left")),c=parseInt(e.move.css("left"));0===b||(c-=b),"fixed"!==a.css("position")&&(c-=a.parent().offset().left,e.setY=0),a.css({left:c,top:parseInt(e.move.css("top"))-e.setY})}},f=a.layero.find(b.move);return b.move&&f.attr("move","ok"),f.css({cursor:b.move?"move":"auto"}),c(b.move).on("mousedown",function(a){if(a.preventDefault(),"ok"===c(this).attr("move")){e.ismove=!0,e.layero=c(this).parents("."+h[0]);var f=e.layero.offset().left,g=e.layero.offset().top,i=e.layero.outerWidth()-6,j=e.layero.outerHeight()-6;c("#layui-layer-moves")[0]||c("body").append('
      '),e.move=c("#layui-layer-moves"),b.moveType&&e.move.css({visibility:"hidden"}),e.moveX=a.pageX-e.move.position().left,e.moveY=a.pageY-e.move.position().top,"fixed"!==e.layero.css("position")||(e.setY=d.scrollTop())}}),c(document).mousemove(function(a){if(e.ismove){var c=a.pageX-e.moveX,f=a.pageY-e.moveY;if(a.preventDefault(),!b.moveOut){e.setY=d.scrollTop();var g=d.width()-e.move.outerWidth(),h=e.setY;0>c&&(c=0),c>g&&(c=g),h>f&&(f=h),f>d.height()-e.move.outerHeight()+e.setY&&(f=d.height()-e.move.outerHeight()+e.setY)}e.move.css({left:c,top:f}),b.moveType&&e.moveLayer(),c=f=g=h=null}}).mouseup(function(){try{e.ismove&&(e.moveLayer(),e.move.remove(),b.moveEnd&&b.moveEnd()),e.ismove=!1}catch(a){e.ismove=!1}}),a},g.pt.callback=function(){function a(){var a=g.cancel&&g.cancel(b.index);a===!1||f.close(b.index)}var b=this,d=b.layero,g=b.config;b.openLayer(),g.success&&(2==g.type?d.find("iframe")[0].onload=function(){this.className="",g.success(d,b.index)}:g.success(d,b.index)),f.ie6&&b.IE6(d),d.find("."+h[6]).children("a").on("click",function(){var e=c(this).index();g["btn"+(e+1)]&&g["btn"+(e+1)](b.index,d),0===e?g.yes?g.yes(b.index,d):f.close(b.index):1===e?a():g["btn"+(e+1)]||f.close(b.index)}),d.find("."+h[7]).on("click",a),g.shadeClose&&c("#layui-layer-shade"+b.index).on("click",function(){f.close(b.index)}),d.find(".layui-layer-min").on("click",function(){f.min(b.index,g),g.min&&g.min(d)}),d.find(".layui-layer-max").on("click",function(){c(this).hasClass("layui-layer-maxmin")?(f.restore(b.index),g.restore&&g.restore(d)):(f.full(b.index,g),g.full&&g.full(d))}),g.end&&(e.end[b.index]=g.end)},e.reselect=function(){c.each(c("select"),function(a,b){var d=c(this);d.parents("."+h[0])[0]||1==d.attr("layer")&&c("."+h[0]).length<1&&d.removeAttr("layer").show(),d=null})},g.pt.IE6=function(a){function b(){a.css({top:f+(e.config.fix?d.scrollTop():0)})}var e=this,f=a.offset().top;b(),d.scroll(b),c("select").each(function(a,b){var d=c(this);d.parents("."+h[0])[0]||"none"===d.css("display")||d.attr({layer:"1"}).hide(),d=null})},g.pt.openLayer=function(){var a=this;f.zIndex=a.config.zIndex,f.setTop=function(a){var b=function(){f.zIndex++,a.css("z-index",f.zIndex+1)};return f.zIndex=parseInt(a[0].style.zIndex),a.on("mousedown",b),f.zIndex}},e.record=function(a){var b=[a.outerWidth(),a.outerHeight(),a.position().top,a.position().left+parseFloat(a.css("margin-left"))];a.find(".layui-layer-max").addClass("layui-layer-maxmin"),a.attr({area:b})},e.rescollbar=function(a){h.html.attr("layer-full")==a&&(h.html[0].style.removeProperty?h.html[0].style.removeProperty("overflow"):h.html[0].style.removeAttribute("overflow"),h.html.removeAttr("layer-full"))},f.getChildFrame=function(a,b){return b=b||c("."+h[4]).attr("times"),c("#"+h[0]+b).find("iframe").contents().find(a)},f.getFrameIndex=function(a){return c("#"+a).parents("."+h[4]).attr("times")},f.iframeAuto=function(a){if(a){var b=f.getChildFrame("body",a).outerHeight(),d=c("#"+h[0]+a),e=d.find(h[1]).outerHeight()||0,g=d.find("."+h[6]).outerHeight()||0;d.css({height:b+e+g}),d.find("iframe").css({height:b})}},f.iframeSrc=function(a,b){c("#"+h[0]+a).find("iframe").attr("src",b)},f.style=function(a,b){var d=c("#"+h[0]+a),f=d.attr("type"),g=d.find(h[1]).outerHeight()||0,i=d.find("."+h[6]).outerHeight()||0;(f===e.type[1]||f===e.type[2])&&(d.css(b),f===e.type[2]&&d.find("iframe").css({height:parseFloat(b.height)-g-i}))},f.min=function(a,b){var d=c("#"+h[0]+a),g=d.find(h[1]).outerHeight()||0;e.record(d),f.style(a,{width:180,height:g,overflow:"hidden"}),d.find(".layui-layer-min").hide(),"page"===d.attr("type")&&d.find(h[4]).hide(),e.rescollbar(a)},f.restore=function(a){var b=c("#"+h[0]+a),d=b.attr("area").split(",");b.attr("type");f.style(a,{width:parseFloat(d[0]),height:parseFloat(d[1]),top:parseFloat(d[2]),left:parseFloat(d[3]),overflow:"visible"}),b.find(".layui-layer-max").removeClass("layui-layer-maxmin"),b.find(".layui-layer-min").show(),"page"===b.attr("type")&&b.find(h[4]).show(),e.rescollbar(a)},f.full=function(a){var b,g=c("#"+h[0]+a);e.record(g),h.html.attr("layer-full")||h.html.css("overflow","hidden").attr("layer-full",a),clearTimeout(b),b=setTimeout(function(){var b="fixed"===g.css("position");f.style(a,{top:b?0:d.scrollTop(),left:b?0:d.scrollLeft(),width:d.width(),height:d.height()}),g.find(".layui-layer-min").hide()},100)},f.title=function(a,b){var d=c("#"+h[0]+(b||f.index)).find(h[1]);d.html(a)},f.close=function(a){var b=c("#"+h[0]+a),d=b.attr("type");if(b[0]){if(d===e.type[1]&&"object"===b.attr("conType")){b.children(":not(."+h[5]+")").remove();for(var g=0;2>g;g++)b.find(".layui-layer-wrap").unwrap().hide()}else{if(d===e.type[2])try{var i=c("#"+h[4]+a)[0];i.contentWindow.document.write(""),i.contentWindow.close(),b.find("."+h[5])[0].removeChild(i)}catch(j){}b[0].innerHTML="",b.remove()}c("#layui-layer-moves, #layui-layer-shade"+a).remove(),f.ie6&&e.reselect(),e.rescollbar(a),c(document).off("keydown",e.enter),"function"==typeof e.end[a]&&e.end[a](),delete e.end[a]}},f.closeAll=function(a){c.each(c("."+h[0]),function(){var b=c(this),d=a?b.attr("type")===a:1;d&&f.close(b.attr("times")),d=null})},e.run=function(){c=jQuery,d=c(a),h.html=c("html"),f.open=function(a){var b=new g(a);return b.index}},"function"==typeof define?define(function(){return e.run(),f}):function(){a.layer=f,e.run(),f.use("skin/layer.css")}()}(window); -------------------------------------------------------------------------------- /js/plugins/layer/layer/layer.js: -------------------------------------------------------------------------------- 1 | /*! layer-v3.1.0 Web弹层组件 MIT License http://layer.layui.com/ By 贤心 */ 2 | ;!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.scripts,t=e[e.length-1],i=t.src;if(!t.getAttribute("merge"))return i.substring(0,i.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName("head")[0],s=document.createElement("link");"string"==typeof i&&(n=i);var l=(n||t).replace(/\.|\//g,""),f="layuicss-"+l,c=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function u(){return++c>80?e.console&&console.error("layer.css: Invalid"):void(1989===parseInt(o.getStyle(document.getElementById(f),"width"))?i():setTimeout(u,100))}()}}},r={v:"3.1.0",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):o.link("theme/"+e.extend),this):this},ready:function(e){var t="layer",i="",n=(a?"modules/layer/":"theme/")+"default/layer.css?v="+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),document.body?t.creat():setTimeout(function(){t.creat()},30)};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim-00","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'
      '+(f?r.title[0]:r.title)+"
      ":"";return r.zIndex=s,t([r.shade?'
      ':"",'
      '+(e&&2!=r.type?"":u)+'
      '+(0==r.type&&r.icon!==-1?'':"")+(1==r.type&&e?"":r.content||"")+'
      '+function(){var e=c?'':"";return r.closeBtn&&(e+=''),e}()+""+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t'+r.btn[t]+"";return'
      '+e+"
      "}():"")+(r.resize?'':"")+"
      "],u,i('
      ')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"http://layer.layui.com","auto"];t.content='';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i(".layui-layer-move")[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),i("#layui-layer-shade"+e.index).css({"background-color":t.shade[1]||"#000",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u="layer-anim "+l.anim[t.anim];e.layero.addClass(u).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&i("#layui-layer-shade"+t.index).on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){var a=i("#"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr("minLeft")||181*o.minIndex+"px",c=a.css("position");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr("position",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:"fixed",overflow:"hidden"},!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr("minLeft")||o.minIndex++,a.attr("minLeft",f)},r.restore=function(e){var t=i("#"+l[0]+e),n=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i("#"+l[0]+e),n=t.attr("type"),a="layer-anim-close";if(t[0]){var s="layui-layer-wrap",f=function(){if(n===o.type[1]&&"object"===t.attr("conType")){t.children(":not(."+l[5]+")").remove();for(var a=t.find("."+s),r=0;r<2;r++)a.unwrap();a.css("display",a.data("display")).removeClass(s)}else{if(n===o.type[2])try{var f=i("#"+l[4]+e)[0];f.contentWindow.document.write(""),f.contentWindow.close(),t.find("."+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML="",t.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data("isOutAnim")&&t.addClass("layer-anim "+a),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr("minLeft")&&(o.minIndex--,o.minLeft.push(t.attr("minLeft"))),r.ie&&r.ie<10||!t.data("isOutAnim")?f():setTimeout(function(){f()},200)}},r.closeAll=function(e){i.each(i("."+l[0]),function(){var t=i(this),n=e?t.attr("type")===e:1;n&&r.close(t.attr("times")),n=null})};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return''}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(e){s=e.find(".layui-layer-input"),s.focus(),"function"==typeof f&&f(e)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a=''+t[0].title+"";i"+t[i].title+"";return a}(),content:'
        '+function(){var e=t.length,i=1,a="";if(e>0)for(a='
      • '+(t[0].content||"no content")+"
      • ";i'+(t[i].content||"no content")+"";return a}()+"
      ",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext()}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]'+(u[d].alt||
      '+(u.length>1?'':"")+'
      '+(u[d].alt||"")+""+s.imgIndex+"/"+u.length+"
      ",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常
      是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window); -------------------------------------------------------------------------------- /js/plugins/layer/layer/mobile/layer.js: -------------------------------------------------------------------------------- 1 | /*! layer mobile-v2.0.0 Web弹层组件 MIT License http://layer.layui.com/mobile By 贤心 */ 2 | ;!function(e){"use strict";var t=document,n="querySelectorAll",i="getElementsByClassName",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var r=0,o=["layui-m-layer"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement("div");e.id=s.id=o[0]+r,s.setAttribute("class",o[0]+" "+o[0]+(n.type||0)),s.setAttribute("index",r);var l=function(){var e="object"==typeof n.title;return n.title?'

      '+(e?n.title[0]:n.title)+"

      ":""}(),c=function(){"string"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e=''+n.btn[0]+"",2===t&&(e=''+n.btn[1]+""+e),'
      '+e+"
      "):""}();if(n.fixed||(n.top=n.hasOwnProperty("top")?n.top:100,n.style=n.style||"",n.style+=" top:"+(t.body.scrollTop+n.top)+"px"),2===n.type&&(n.content='

      '+(n.content||"")+"

      "),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"
      ':"")+'
      "+l+'
      '+n.content+"
      "+c+"
      ",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute("index"))}document.body.appendChild(s);var u=e.elem=a("#"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i]("layui-m-layerbtn")[0].children,r=s.length,o=0;odiv{line-height:22px;padding-top:7px;margin-bottom:20px;font-size:14px}.layui-m-layerbtn{display:box;display:-moz-box;display:-webkit-box;width:100%;height:50px;line-height:50px;font-size:0;border-top:1px solid #D0D0D0;background-color:#F2F2F2}.layui-m-layerbtn span{display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;font-size:14px;cursor:pointer}.layui-m-layerbtn span[yes]{color:#40AFFE}.layui-m-layerbtn span[no]{border-right:1px solid #D0D0D0;border-radius:0 0 0 5px}.layui-m-layerbtn span:active{background-color:#F6F6F6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layui-m-layerend::after,.layui-m-layerend::before{position:absolute;left:5px;top:15px;content:'';width:18px;height:1px;background-color:#999;transform:rotate(45deg);-webkit-transform:rotate(45deg);border-radius:3px}.layui-m-layerend::after{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}body .layui-m-layer .layui-m-layer-footer{position:fixed;width:95%;max-width:100%;margin:0 auto;left:0;right:0;bottom:10px;background:0 0}.layui-m-layer-footer .layui-m-layercont{padding:20px;border-radius:5px 5px 0 0;background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn{display:block;height:auto;background:0 0;border-top:none}.layui-m-layer-footer .layui-m-layerbtn span{background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn span[no]{color:#FD482C;border-top:1px solid #c2c2c2;border-radius:0 0 5px 5px}.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top:10px;border-radius:5px}body .layui-m-layer .layui-m-layer-msg{width:auto;max-width:90%;margin:0 auto;bottom:-150px;background-color:rgba(0,0,0,.7);color:#fff}.layui-m-layer-msg .layui-m-layercont{padding:10px 20px} -------------------------------------------------------------------------------- /js/plugins/layer/layer/theme/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/js/plugins/layer/layer/theme/default/icon-ext.png -------------------------------------------------------------------------------- /js/plugins/layer/layer/theme/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/js/plugins/layer/layer/theme/default/icon.png -------------------------------------------------------------------------------- /js/plugins/layer/layer/theme/default/layer.css: -------------------------------------------------------------------------------- 1 | .layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .layui-layer-title span,.layui-layer-title{text-overflow:ellipsis;white-space:nowrap}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch;top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-load{background:url(loading-1.gif) center center no-repeat #eee}.layui-layer-ico{background:url(icon.png) no-repeat}.layui-layer-btn a,.layui-layer-dialog .layui-layer-ico,.layui-layer-setwin a{display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-layer-title{padding:0 80px 0 20px;height:42px;line-height:42px;border-bottom:1px solid #eee;font-size:14px;color:#333;overflow:hidden;background-color:#F8F8F8;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:15px;font-size:0;line-height:initial}.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:10px;font-size:12px;_overflow:hidden}.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#2E2D3C;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA}.layui-layer-setwin .layui-layer-max{background-position:-32px -40px}.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px}.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px}.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px}.layui-layer-setwin .layui-layer-close1{background-position:1px -40px;cursor:pointer}.layui-layer-setwin .layui-layer-close1:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px;margin-left:0;background-position:-149px -31px;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{background-position:-180px -31px}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:#1E9FFF;background-color:#1E9FFF;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:260px}.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:16px;left:15px;_left:-40px;width:30px;height:30px}.layui-layer-ico1{background-position:-30px 0}.layui-layer-ico2{background-position:-60px 0}.layui-layer-ico3{background-position:-90px 0}.layui-layer-ico4{background-position:-120px 0}.layui-layer-ico5{background-position:-150px 0}.layui-layer-ico6{background-position:-180px 0}.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:20px 20px 20px 55px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(loading-2.gif) no-repeat}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan[type=dialog]{min-width:280px}.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;text-align:right;border-top:1px solid #E9E7E7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#E9E7E7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1}.layui-layer-iconext{background:url(icon-ext.png) no-repeat}.layui-layer-prompt .layui-layer-input{display:block;width:230px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:20px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:260px;padding:0 20px;text-align:center;overflow:hidden;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:43px;border-left:1px solid #eee;border-right:1px solid #eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{-webkit-animation-duration:.8s;animation-duration:.8s}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgbar,.layui-layer-imguide{display:none}.layui-layer-imgnext,.layui-layer-imgprev{position:absolute;top:50%;width:27px;_width:44px;height:44px;margin-top:-22px;outline:0;blr:expression(this.onFocus=this.blur())}.layui-layer-imgprev{left:10px;background-position:-5px -5px;_background-position:-70px -5px}.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px}.layui-layer-imgnext{right:10px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px}.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px}.layui-layer-imgbar{position:absolute;left:0;bottom:0;width:100%;height:32px;line-height:32px;background-color:rgba(0,0,0,.8);background-color:#000\9;filter:Alpha(opacity=80);color:#fff;overflow:hidden;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px}.layui-layer-imgtit a{max-width:65%;overflow:hidden;color:#fff}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{padding-left:10px;font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}} -------------------------------------------------------------------------------- /js/plugins/layer/layer/theme/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/js/plugins/layer/layer/theme/default/loading-0.gif -------------------------------------------------------------------------------- /js/plugins/layer/layer/theme/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/js/plugins/layer/layer/theme/default/loading-1.gif -------------------------------------------------------------------------------- /js/plugins/layer/layer/theme/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/js/plugins/layer/layer/theme/default/loading-2.gif -------------------------------------------------------------------------------- /js/plugins/layer/layim/layim.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | @Name: layim WebIM 1.0.0 4 | @Author:贤心(子涵修改) 5 | @Date: 2014-04-25 6 | @Blog: http://sentsin.com 7 | 8 | */ 9 | body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,input,button,textarea,p,blockquote,th,td,form{margin:0; padding:0;} 10 | input,button,textarea,select,optgroup,option{font-family:inherit; font-size:inherit; font-style:inherit; font-weight:inherit; outline: 0;} 11 | li{list-style:none;} 12 | .xxim_icon, .xxim_main i, .layim_chatbox i{position:absolute;} 13 | .loading{background:url(loading.gif) no-repeat center center;} 14 | .layim_chatbox a, .layim_chatbox a:hover{color:#343434; text-decoration:none; } 15 | .layim_zero{position:absolute; width:0; height:0; border-style:dashed; border-color:transparent; overflow:hidden;} 16 | 17 | .xxim_main{position:fixed; right:1px; bottom:1px; width:230px; border:1px solid #BEBEBE; background-color:#fff; font-size:12px; box-shadow: 0 0 10px rgba(0,0,0,.2); z-index:99999999} 18 | .layim_chatbox textarea{resize:none;} 19 | .xxim_main em, .xxim_main i, .layim_chatbox em, .layim_chatbox i{font-style:normal; font-weight:400;} 20 | .xxim_main h5{font-size:100%; font-weight:400;} 21 | 22 | /* 搜索栏 */ 23 | .xxim_search{position:relative; padding-left:40px; height:40px; border-bottom:1px solid #DCDCDC; background-color:#fff;} 24 | .xxim_search i{left:10px; top:12px; width:16px; height:16px;font-size: 16px;color:#999;} 25 | .xxim_search input{border:none; background:none; width: 180px; margin-top:10px; line-height:20px;} 26 | .xxim_search span{display:none; position:absolute; right:10px; top:10px; height:18px; line-height:18px;width:18px;text-align: center;background-color:#AFAFAF; color:#fff; cursor:pointer; border-radius:2px; font-size:12px; font-weight:900;} 27 | .xxim_search span:hover{background-color:#FCBE00;} 28 | 29 | /* 主面板tab */ 30 | .xxim_tabs{height:45px; border-bottom:1px solid #DBDBDB; background-color:#F4F4F4; font-size:0;} 31 | .xxim_tabs span{position:relative; display:inline-block; *display:inline; *zoom:1; vertical-align:top; width:76px; height:45px; border-right:1px solid #DBDBDB; cursor:pointer; font-size:12px;} 32 | .xxim_tabs span i{top:12px; left:50%; width:20px; margin-left:-10px; height:20px;font-size:20px;color:#ccc;} 33 | .xxim_tabs .xxim_tabnow{height:46px; background-color:#fff;} 34 | .xxim_tabs .xxim_tabnow i{color:#1ab394;} 35 | .xxim_tabs .xxim_latechat{border-right:none;} 36 | .xxim_tabs .xxim_tabfriend i{width:14px; margin-left:-7px;} 37 | 38 | /* 主面板列表 */ 39 | .xxim_list{display:none; height:350px; padding:5px 0; overflow:hidden;} 40 | .xxim_list:hover{ overflow-y:auto;} 41 | .xxim_list h5{position:relative; padding-left:32px; height:26px; line-height:26px; cursor:pointer; color:#000; font-size:0;} 42 | .xxim_list h5 span{display:inline-block; *display:inline; *zoom:1; vertical-align:top; max-width:140px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap; font-size:12px;} 43 | .xxim_list h5 i{left:15px; top:8px; width:10px; height:10px;font-size:10px;color:#666;} 44 | .xxim_list h5 *{font-size:12px;} 45 | .xxim_list .xxim_chatlist{display:none;} 46 | .xxim_list .xxim_liston h5 i{width:8px; height:7px;} 47 | .xxim_list .xxim_liston .xxim_chatlist{display:block;} 48 | .xxim_chatlist {} 49 | .xxim_chatlist li{position:relative; height:40px; line-height:30px; padding:5px 10px; font-size:0; cursor:pointer;} 50 | .xxim_chatlist li:hover{background-color:#F2F4F8} 51 | .xxim_chatlist li *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; font-size:12px;} 52 | .xxim_chatlist li span{padding-left:10px; max-width:120px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap;} 53 | .xxim_chatlist li img{width:30px; height:30px;} 54 | .xxim_chatlist li .xxim_time{position:absolute; right:10px; color:#999;} 55 | .xxim_list .xxim_errormsg{text-align:center; margin:50px 0; color:#999;} 56 | .xxim_searchmain{position:absolute; width:230px; height:491px; left:0; top:41px; z-index:10; background-color:#fff;} 57 | 58 | /* 主面板底部 */ 59 | .xxim_bottom{height:34px; border-top:1px solid #D0DCF3; background-color:#F2F4F8;} 60 | .xxim_expend{border-left:1px solid #D0DCF3; border-bottom:1px solid #D0DCF3;} 61 | .xxim_bottom li{position:relative; width:50px; height:32px; line-height:32px; float:left; border-right:1px solid #D0DCF3; cursor:pointer;} 62 | .xxim_bottom li i{ top:9px;} 63 | .xxim_bottom .xxim_hide{border-right:none;} 64 | .xxim_bottom .xxim_online{width:72px; padding-left:35px;} 65 | .xxim_online i{left:13px; width:14px; height:14px;font-size:14px;color:#FFA00A;} 66 | .xxim_setonline{display:none; position:absolute; left:-79px; bottom:-1px; border:1px solid #DCDCDC; background-color:#fff;} 67 | .xxim_setonline span{position:relative; display:block; width:32px;width: 77px; padding:0 10px 0 35px;} 68 | .xxim_setonline span:hover{background-color:#F2F4F8;} 69 | .xxim_offline .xxim_nowstate, .xxim_setoffline i{color:#999;} 70 | .xxim_mymsg i{left:18px; width:14px; height:14px;font-size: 14px;} 71 | .xxim_mymsg a{position:absolute; left:0; top:0; width:50px; height:32px;} 72 | .xxim_seter i{left:18px; width:14px; height:14px;font-size: 14px;} 73 | .xxim_hide i{left:18px; width:14px; height:14px;font-size: 14px;} 74 | .xxim_show i{} 75 | .xxim_bottom .xxim_on{position:absolute; left:-17px; top:50%; width:16px;text-align: center;color:#999;line-height: 97px; height:97px; margin-top:-49px;border:solid 1px #BEBEBE;border-right: none; background:#F2F4F8;} 76 | .xxim_bottom .xxim_off{} 77 | 78 | /* 聊天窗口 */ 79 | .layim_chatbox{width:620px; border:1px solid #BEBEBE; background-color:#fff; font-size:12px; box-shadow: 0 0 10px rgba(0,0,0,.2);} 80 | .layim_chatbox h6{position:relative; height:40px; border-bottom:1px solid #D9D9D9; background-color:#FCFDFA} 81 | .layim_move{position:absolute; height:40px; width: 620px; z-index:0;} 82 | .layim_face{position:absolute; bottom:-1px; left:10px; width:64px; height:64px;padding:1px;background: #fff; border:1px solid #ccc;} 83 | .layim_face img{width:60px; height:60px;} 84 | .layim_names{position:absolute; left:90px; max-width:300px; line-height:40px; color:#000; overflow:hidden; text-overflow: ellipsis; white-space:nowrap; font-size:14px;} 85 | .layim_rightbtn{position:absolute; right:15px; top:12px; font-size:20px;} 86 | .layim_rightbtn i{position:relative; width:16px; height:16px; display:inline-block; *display:inline; *zoom:1; vertical-align:top; cursor:pointer; transition: all .3s;text-align: center;line-height: 16px;} 87 | .layim_rightbtn .layim_close{background: #FFA00A;color:#fff;} 88 | .layim_rightbtn .layim_close:hover{-webkit-transform: rotate(180deg); -moz-transform: rotate(180deg);} 89 | .layim_rightbtn .layer_setmin{margin-right:5px;color:#999;font-size:14px;font-weight: 700;} 90 | .layim_chat, .layim_chatmore,.layim_groups{height:450px; overflow:hidden;} 91 | .layim_chatmore{display:none; float:left; width:135px; border-right:1px solid #BEBEBE; background-color:#F2F2F2} 92 | .layim_chatlist li, .layim_groups li{position:relative; height:30px; line-height:30px; padding:0 10px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap; cursor:pointer;} 93 | .layim_chatlist li{padding:0 20px 0 10px;} 94 | .layim_chatlist li:hover{background-color:#E3E3E3;} 95 | .layim_chatlist li span{display:inline-block; *display:inline; *zoom:1; vertical-align:top; width:90px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap;} 96 | .layim_chatlist li em{display:none; position:absolute; top:6px; right:10px; height:18px; line-height:18px;width:18px;text-align: center;font-size:14px;font-weight:900; border-radius:3px;} 97 | .layim_chatlist li em:hover{background-color: #FCBE00; color:#fff;} 98 | .layim_chatlist .layim_chatnow,.layim_chatlist .layim_chatnow:hover{/*border-top:1px solid #D9D9D9; border-bottom:1px solid #D9D9D9;*/ background-color:#fff;} 99 | .layim_chat{} 100 | .layim_chatarea{height:280px;} 101 | .layim_chatview{display:none; height:280px; overflow:hidden;} 102 | .layim_chatmore:hover, .layim_groups:hover, .layim_chatview:hover{overflow-y:auto;} 103 | .layim_chatview li{margin-bottom:10px; clear:both; *zoom:1;} 104 | .layim_chatview li:after{content:'\20'; clear:both; *zoom:1; display:block; height:0;} 105 | 106 | .layim_chatthis{display:block;} 107 | .layim_chatuser{float:left; padding:15px; font-size:0;} 108 | .layim_chatuser *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; line-height:30px; font-size:12px; padding-right:10px;} 109 | .layim_chatuser img{width:30px; height:30px;padding-right: 0;margin-right: 15px;} 110 | .layim_chatuser .layim_chatname{max-width:230px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap;} 111 | .layim_chatuser .layim_chattime{color:#999; padding-left:10px;} 112 | .layim_chatsay{position:relative; float:left; margin:0 15px; padding:10px; line-height:20px; background-color:#F3F3F3; border-radius:3px; clear:both;} 113 | .layim_chatsay .layim_zero{left:5px; top:-8px; border-width:8px; border-right-style:solid; border-right-color:#F3F3F3;} 114 | .layim_chateme .layim_chatuser{float:right;} 115 | .layim_chateme .layim_chatuser *{padding-right:0; padding-left:10px;} 116 | .layim_chateme .layim_chatuser img{margin-left:15px;padding-left: 0;} 117 | .layim_chateme .layim_chatsay .layim_zero{left:auto; right:10px;} 118 | .layim_chateme .layim_chatuser .layim_chattime{padding-left:0; padding-right:10px;} 119 | .layim_chateme .layim_chatsay{float:right; background-color:#EBFBE3} 120 | .layim_chateme .layim_zero{border-right-color:#EBFBE3;} 121 | .layim_groups{display:none; float:right; width:130px; border-left:1px solid #D9D9D9; background-color:#fff;} 122 | .layim_groups ul{display:none;} 123 | .layim_groups ul.layim_groupthis{display:block;} 124 | .layim_groups li *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; margin-right:10px;} 125 | .layim_groups li img{width:20px; height:20px; margin-top:5px;} 126 | .layim_groups li span{max-width:80px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap;} 127 | .layim_groups li:hover{background-color:#F3F3F3;} 128 | .layim_groups .layim_errors{text-align:center; color:#999;} 129 | .layim_tool{position:relative; height:35px; line-height:35px; padding-left:10px; background-color:#F3F3F3;} 130 | .layim_tool i{position:relative; top:10px; display:inline-block; *display:inline; *zoom:1; vertical-align:top; width:16px; height:16px; margin-right:10px; cursor:pointer;font-size:16px;color:#999;font-weight: 700;} 131 | .layim_tool i:hover{color:#FFA00A;} 132 | .layim_tool .layim_seechatlog{position:absolute; right:15px;} 133 | .layim_tool .layim_seechatlog i{} 134 | .layim_write{display:block; border:none; width:98%; height:90px; line-height:20px; margin:5px auto 0;} 135 | .layim_send{position:relative; height:40px; background-color:#F3F3F3;} 136 | .layim_sendbtn{position:absolute; height:26px; line-height:26px; right:10px; top:8px; padding:0 40px 0 20px; background-color:#FFA00A; color:#fff; border-radius:3px; cursor:pointer;} 137 | .layim_enter{position:absolute; right:0; border-left:1px solid #FFB94F; width:24px; height:26px;} 138 | .layim_enter:hover{background-color:#E68A00; border-radius:0 3px 3px 0;} 139 | .layim_enter .layim_zero{left:7px; top:11px; border-width:5px; border-top-style:solid; border-top-color:#FFE0B3;} 140 | .layim_sendtype{display:none; position:absolute; right:10px; bottom:37px; border:1px solid #D9D9D9; background-color:#fff; text-align:left;} 141 | .layim_sendtype span{display:block; line-height:24px; padding:0 10px 0 25px; cursor:pointer;} 142 | .layim_sendtype span:hover{background-color:#F3F3F3;} 143 | .layim_sendtype span i{left:5px;} 144 | 145 | .layim_min{display:none; position:absolute; left:-190px; bottom:-1px; width:160px; height:32px; line-height:32px; padding:0 10px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap; border:1px solid #ccc; box-shadow: 0 0 5px rgba(0,0,75,.2); background-color:#FCFDFA; cursor:pointer;} 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | -------------------------------------------------------------------------------- /js/plugins/layer/layim/layim.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | @Name: layui WebIM 1.0.0 4 | @Author:贤心 5 | @Date: 2014-04-25 6 | @Blog: http://sentsin.com 7 | 8 | */ 9 | 10 | ;!function(win, undefined){ 11 | 12 | var config = { 13 | msgurl: 'mailbox.html?msg=', 14 | chatlogurl: 'mailbox.html?user=', 15 | aniTime: 200, 16 | right: -232, 17 | api: { 18 | friend: 'js/plugins/layer/layim/data/friend.json', //好友列表接口 19 | group: 'js/plugins/layer/layim/data/group.json', //群组列表接口 20 | chatlog: 'js/plugins/layer/layim/data/chatlog.json', //聊天记录接口 21 | groups: 'js/plugins/layer/layim/data/groups.json', //群组成员接口 22 | sendurl: '' //发送消息接口 23 | }, 24 | user: { //当前用户信息 25 | name: '游客', 26 | face: 'img/a1.jpg' 27 | }, 28 | 29 | //自动回复内置文案,也可动态读取数据库配置 30 | autoReplay: [ 31 | '您好,我现在有事不在,一会再和您联系。', 32 | '你没发错吧?', 33 | '洗澡中,请勿打扰,偷窥请购票,个体四十,团体八折,订票电话:一般人我不告诉他!', 34 | '你好,我是主人的美女秘书,有什么事就跟我说吧,等他回来我会转告他的。', 35 | '我正在拉磨,没法招呼您,因为我们家毛驴去动物保护协会把我告了,说我剥夺它休产假的权利。', 36 | '<(@ ̄︶ ̄@)>', 37 | '你要和我说话?你真的要和我说话?你确定自己想说吗?你一定非说不可吗?那你说吧,这是自动回复。', 38 | '主人正在开机自检,键盘鼠标看好机会出去凉快去了,我是他的电冰箱,我打字比较慢,你慢慢说,别急……', 39 | '(*^__^*) 嘻嘻,是贤心吗?' 40 | ], 41 | 42 | 43 | chating: {}, 44 | hosts: (function(){ 45 | var dk = location.href.match(/\:\d+/); 46 | dk = dk ? dk[0] : ''; 47 | return 'http://' + document.domain + dk + '/'; 48 | })(), 49 | json: function(url, data, callback, error){ 50 | return $.ajax({ 51 | type: 'POST', 52 | url: url, 53 | data: data, 54 | dataType: 'json', 55 | success: callback, 56 | error: error 57 | }); 58 | }, 59 | stopMP: function(e){ 60 | e ? e.stopPropagation() : e.cancelBubble = true; 61 | } 62 | }, dom = [$(window), $(document), $('html'), $('body')], xxim = {}; 63 | 64 | //主界面tab 65 | xxim.tabs = function(index){ 66 | var node = xxim.node; 67 | node.tabs.eq(index).addClass('xxim_tabnow').siblings().removeClass('xxim_tabnow'); 68 | node.list.eq(index).show().siblings('.xxim_list').hide(); 69 | if(node.list.eq(index).find('li').length === 0){ 70 | xxim.getDates(index); 71 | } 72 | }; 73 | 74 | //节点 75 | xxim.renode = function(){ 76 | var node = xxim.node = { 77 | tabs: $('#xxim_tabs>span'), 78 | list: $('.xxim_list'), 79 | online: $('.xxim_online'), 80 | setonline: $('.xxim_setonline'), 81 | onlinetex: $('#xxim_onlinetex'), 82 | xximon: $('#xxim_on'), 83 | layimFooter: $('#xxim_bottom'), 84 | xximHide: $('#xxim_hide'), 85 | xximSearch: $('#xxim_searchkey'), 86 | searchMian: $('#xxim_searchmain'), 87 | closeSearch: $('#xxim_closesearch'), 88 | layimMin: $('#layim_min') 89 | }; 90 | }; 91 | 92 | //主界面缩放 93 | xxim.expend = function(){ 94 | var node = xxim.node; 95 | if(xxim.layimNode.attr('state') !== '1'){ 96 | xxim.layimNode.stop().animate({right: config.right}, config.aniTime, function(){ 97 | node.xximon.addClass('xxim_off'); 98 | try{ 99 | localStorage.layimState = 1; 100 | }catch(e){} 101 | xxim.layimNode.attr({state: 1}); 102 | node.layimFooter.addClass('xxim_expend').stop().animate({marginLeft: config.right}, config.aniTime/2); 103 | node.xximHide.addClass('xxim_show'); 104 | }); 105 | } else { 106 | xxim.layimNode.stop().animate({right: 1}, config.aniTime, function(){ 107 | node.xximon.removeClass('xxim_off'); 108 | try{ 109 | localStorage.layimState = 2; 110 | }catch(e){} 111 | xxim.layimNode.removeAttr('state'); 112 | node.layimFooter.removeClass('xxim_expend'); 113 | node.xximHide.removeClass('xxim_show'); 114 | }); 115 | node.layimFooter.stop().animate({marginLeft: 0}, config.aniTime); 116 | } 117 | }; 118 | 119 | //初始化窗口格局 120 | xxim.layinit = function(){ 121 | var node = xxim.node; 122 | 123 | //主界面 124 | try{ 125 | /* 126 | if(!localStorage.layimState){ 127 | config.aniTime = 0; 128 | localStorage.layimState = 1; 129 | } 130 | */ 131 | if(localStorage.layimState === '1'){ 132 | xxim.layimNode.attr({state: 1}).css({right: config.right}); 133 | node.xximon.addClass('xxim_off'); 134 | node.layimFooter.addClass('xxim_expend').css({marginLeft: config.right}); 135 | node.xximHide.addClass('xxim_show'); 136 | } 137 | }catch(e){ 138 | //layer.msg(e.message, 5, -1); 139 | } 140 | }; 141 | 142 | //聊天窗口 143 | xxim.popchat = function(param){ 144 | var node = xxim.node, log = {}; 145 | 146 | log.success = function(layero){ 147 | layer.setMove(); 148 | 149 | xxim.chatbox = layero.find('#layim_chatbox'); 150 | log.chatlist = xxim.chatbox.find('.layim_chatmore>ul'); 151 | 152 | log.chatlist.html('
    • '+ param.name +'×
    • ') 153 | xxim.tabchat(param, xxim.chatbox); 154 | 155 | //最小化聊天窗 156 | xxim.chatbox.find('.layer_setmin').on('click', function(){ 157 | var indexs = layero.attr('times'); 158 | layero.hide(); 159 | node.layimMin.text(xxim.nowchat.name).show(); 160 | }); 161 | 162 | //关闭窗口 163 | xxim.chatbox.find('.layim_close').on('click', function(){ 164 | var indexs = layero.attr('times'); 165 | layer.close(indexs); 166 | xxim.chatbox = null; 167 | config.chating = {}; 168 | config.chatings = 0; 169 | }); 170 | 171 | //关闭某个聊天 172 | log.chatlist.on('mouseenter', 'li', function(){ 173 | $(this).find('em').show(); 174 | }).on('mouseleave', 'li', function(){ 175 | $(this).find('em').hide(); 176 | }); 177 | log.chatlist.on('click', 'li em', function(e){ 178 | var parents = $(this).parent(), dataType = parents.attr('type'); 179 | var dataId = parents.attr('data-id'), index = parents.index(); 180 | var chatlist = log.chatlist.find('li'), indexs; 181 | 182 | config.stopMP(e); 183 | 184 | delete config.chating[dataType + dataId]; 185 | config.chatings--; 186 | 187 | parents.remove(); 188 | $('#layim_area'+ dataType + dataId).remove(); 189 | if(dataType === 'group'){ 190 | $('#layim_group'+ dataType + dataId).remove(); 191 | } 192 | 193 | if(parents.hasClass('layim_chatnow')){ 194 | if(index === config.chatings){ 195 | indexs = index - 1; 196 | } else { 197 | indexs = index + 1; 198 | } 199 | xxim.tabchat(config.chating[chatlist.eq(indexs).attr('type') + chatlist.eq(indexs).attr('data-id')]); 200 | } 201 | 202 | if(log.chatlist.find('li').length === 1){ 203 | log.chatlist.parent().hide(); 204 | } 205 | }); 206 | 207 | //聊天选项卡 208 | log.chatlist.on('click', 'li', function(){ 209 | var othis = $(this), dataType = othis.attr('type'), dataId = othis.attr('data-id'); 210 | xxim.tabchat(config.chating[dataType + dataId]); 211 | }); 212 | 213 | //发送热键切换 214 | log.sendType = $('#layim_sendtype'), log.sendTypes = log.sendType.find('span'); 215 | $('#layim_enter').on('click', function(e){ 216 | config.stopMP(e); 217 | log.sendType.show(); 218 | }); 219 | log.sendTypes.on('click', function(){ 220 | log.sendTypes.find('i').text('') 221 | $(this).find('i').text('√'); 222 | }); 223 | 224 | xxim.transmit(); 225 | }; 226 | 227 | log.html = '
      ' 228 | +'
      ' 229 | +'' 230 | +' ' 231 | +' '+ param.name +'' 232 | +' ' 233 | +' ' 234 | +' ×' 235 | +' ' 236 | +'
      ' 237 | +'
      ' 238 | +'
        ' 239 | +'
        ' 240 | +'
        ' 241 | +'
        ' 242 | +'
        ' 243 | +'
          ' 244 | +'
          ' 245 | +'
          ' 246 | +' ' 247 | +' ' 248 | +' ' 249 | +' 聊天记录' 250 | +'
          ' 251 | +' ' 252 | +'
          ' 253 | +'
          发送
          ' 254 | +'
          ' 255 | +' 按Enter键发送' 256 | +' 按Ctrl+Enter键发送' 257 | +'
          ' 258 | +'
          ' 259 | +'
          ' 260 | +'
          '; 261 | 262 | if(config.chatings < 1){ 263 | $.layer({ 264 | type: 1, 265 | border: [0], 266 | title: false, 267 | shade: [0], 268 | area: ['620px', '493px'], 269 | move: '.layim_chatbox .layim_move', 270 | moveType: 1, 271 | closeBtn: false, 272 | offset: [(($(window).height() - 493)/2)+'px', ''], 273 | page: { 274 | html: log.html 275 | }, success: function(layero){ 276 | log.success(layero); 277 | } 278 | }) 279 | } else { 280 | log.chatmore = xxim.chatbox.find('#layim_chatmore'); 281 | log.chatarea = xxim.chatbox.find('#layim_chatarea'); 282 | 283 | log.chatmore.show(); 284 | 285 | log.chatmore.find('ul>li').removeClass('layim_chatnow'); 286 | log.chatmore.find('ul').append('
        • '+ param.name +'×
        • '); 287 | 288 | log.chatarea.find('.layim_chatview').removeClass('layim_chatthis'); 289 | log.chatarea.append('
            '); 290 | 291 | xxim.tabchat(param); 292 | } 293 | 294 | //群组 295 | log.chatgroup = xxim.chatbox.find('#layim_groups'); 296 | if(param.type === 'group'){ 297 | log.chatgroup.find('ul').removeClass('layim_groupthis'); 298 | log.chatgroup.append('
              '); 299 | xxim.getGroups(param); 300 | } 301 | //点击群员切换聊天窗 302 | log.chatgroup.on('click', 'ul>li', function(){ 303 | xxim.popchatbox($(this)); 304 | }); 305 | }; 306 | 307 | //定位到某个聊天队列 308 | xxim.tabchat = function(param){ 309 | var node = xxim.node, log = {}, keys = param.type + param.id; 310 | xxim.nowchat = param; 311 | 312 | xxim.chatbox.find('#layim_user'+ keys).addClass('layim_chatnow').siblings().removeClass('layim_chatnow'); 313 | xxim.chatbox.find('#layim_area'+ keys).addClass('layim_chatthis').siblings().removeClass('layim_chatthis'); 314 | xxim.chatbox.find('#layim_group'+ keys).addClass('layim_groupthis').siblings().removeClass('layim_groupthis'); 315 | 316 | xxim.chatbox.find('.layim_face>img').attr('src', param.face); 317 | xxim.chatbox.find('.layim_face, .layim_names').attr('href', param.href); 318 | xxim.chatbox.find('.layim_names').text(param.name); 319 | 320 | xxim.chatbox.find('.layim_seechatlog').attr('href', config.chatlogurl + param.id); 321 | 322 | log.groups = xxim.chatbox.find('.layim_groups'); 323 | if(param.type === 'group'){ 324 | log.groups.show(); 325 | } else { 326 | log.groups.hide(); 327 | } 328 | 329 | $('#layim_write').focus(); 330 | 331 | }; 332 | 333 | //弹出聊天窗 334 | xxim.popchatbox = function(othis){ 335 | var node = xxim.node, dataId = othis.attr('data-id'), param = { 336 | id: dataId, //用户ID 337 | type: othis.attr('type'), 338 | name: othis.find('.xxim_onename').text(), //用户名 339 | face: othis.find('.xxim_oneface').attr('src'), //用户头像 340 | href: 'profile.html?user=' + dataId //用户主页 341 | }, key = param.type + dataId; 342 | if(!config.chating[key]){ 343 | xxim.popchat(param); 344 | config.chatings++; 345 | } else { 346 | xxim.tabchat(param); 347 | } 348 | config.chating[key] = param; 349 | 350 | var chatbox = $('#layim_chatbox'); 351 | if(chatbox[0]){ 352 | node.layimMin.hide(); 353 | chatbox.parents('.xubox_layer').show(); 354 | } 355 | }; 356 | 357 | //请求群员 358 | xxim.getGroups = function(param){ 359 | var keys = param.type + param.id, str = '', 360 | groupss = xxim.chatbox.find('#layim_group'+ keys); 361 | groupss.addClass('loading'); 362 | config.json(config.api.groups, {}, function(datas){ 363 | if(datas.status === 1){ 364 | var ii = 0, lens = datas.data.length; 365 | if(lens > 0){ 366 | for(; ii < lens; ii++){ 367 | str += '
            • '+ datas.data[ii].name +'
            • '; 368 | } 369 | } else { 370 | str = '
            • 没有群员
            • '; 371 | } 372 | 373 | } else { 374 | str = '
            • '+ datas.msg +'
            • '; 375 | } 376 | groupss.removeClass('loading'); 377 | groupss.html(str); 378 | }, function(){ 379 | groupss.removeClass('loading'); 380 | groupss.html('
            • 请求异常
            • '); 381 | }); 382 | }; 383 | 384 | //消息传输 385 | xxim.transmit = function(){ 386 | var node = xxim.node, log = {}; 387 | node.sendbtn = $('#layim_sendbtn'); 388 | node.imwrite = $('#layim_write'); 389 | 390 | //发送 391 | log.send = function(){ 392 | var data = { 393 | content: node.imwrite.val(), 394 | id: xxim.nowchat.id, 395 | sign_key: '', //密匙 396 | _: +new Date 397 | }; 398 | 399 | if(data.content.replace(/\s/g, '') === ''){ 400 | layer.tips('说点啥呗!', '#layim_write', 2); 401 | node.imwrite.focus(); 402 | } else { 403 | //此处皆为模拟 404 | var keys = xxim.nowchat.type + xxim.nowchat.id; 405 | 406 | //聊天模版 407 | log.html = function(param, type){ 408 | return '
            • ' 409 | +'
              ' 410 | + function(){ 411 | if(type === 'me'){ 412 | return ''+ param.time +'' 413 | +''+ param.name +'' 414 | +''; 415 | } else { 416 | return '' 417 | +''+ param.name +'' 418 | +''+ param.time +''; 419 | } 420 | }() 421 | +'
              ' 422 | +'
              '+ param.content +'
              ' 423 | +'
            • '; 424 | }; 425 | 426 | log.imarea = xxim.chatbox.find('#layim_area'+ keys); 427 | 428 | log.imarea.append(log.html({ 429 | time: '2014-04-26 0:37', 430 | name: config.user.name, 431 | face: config.user.face, 432 | content: data.content 433 | }, 'me')); 434 | node.imwrite.val('').focus(); 435 | log.imarea.scrollTop(log.imarea[0].scrollHeight); 436 | 437 | setTimeout(function(){ 438 | log.imarea.append(log.html({ 439 | time: '2014-04-26 0:38', 440 | name: xxim.nowchat.name, 441 | face: xxim.nowchat.face, 442 | content: config.autoReplay[(Math.random()*config.autoReplay.length) | 0] 443 | })); 444 | log.imarea.scrollTop(log.imarea[0].scrollHeight); 445 | }, 500); 446 | 447 | /* 448 | that.json(config.api.sendurl, data, function(datas){ 449 | 450 | }); 451 | */ 452 | } 453 | 454 | }; 455 | node.sendbtn.on('click', log.send); 456 | 457 | node.imwrite.keyup(function(e){ 458 | if(e.keyCode === 13){ 459 | log.send(); 460 | } 461 | }); 462 | }; 463 | 464 | //事件 465 | xxim.event = function(){ 466 | var node = xxim.node; 467 | 468 | //主界面tab 469 | node.tabs.eq(0).addClass('xxim_tabnow'); 470 | node.tabs.on('click', function(){ 471 | var othis = $(this), index = othis.index(); 472 | xxim.tabs(index); 473 | }); 474 | 475 | //列表展收 476 | node.list.on('click', 'h5', function(){ 477 | var othis = $(this), chat = othis.siblings('.xxim_chatlist'), parentss = othis.find("i"); 478 | if(parentss.hasClass('fa-caret-down')){ 479 | chat.hide(); 480 | parentss.attr('class','fa fa-caret-right'); 481 | } else { 482 | chat.show(); 483 | parentss.attr('class','fa fa-caret-down'); 484 | } 485 | }); 486 | 487 | //设置在线隐身 488 | node.online.on('click', function(e){ 489 | config.stopMP(e); 490 | node.setonline.show(); 491 | }); 492 | node.setonline.find('span').on('click', function(e){ 493 | var index = $(this).index(); 494 | config.stopMP(e); 495 | if(index === 0){ 496 | node.onlinetex.html('在线'); 497 | node.online.removeClass('xxim_offline'); 498 | } else if(index === 1) { 499 | node.onlinetex.html('隐身'); 500 | node.online.addClass('xxim_offline'); 501 | } 502 | node.setonline.hide(); 503 | }); 504 | 505 | node.xximon.on('click', xxim.expend); 506 | node.xximHide.on('click', xxim.expend); 507 | 508 | //搜索 509 | node.xximSearch.keyup(function(){ 510 | var val = $(this).val().replace(/\s/g, ''); 511 | if(val !== ''){ 512 | node.searchMian.show(); 513 | node.closeSearch.show(); 514 | //此处的搜索ajax参考xxim.getDates 515 | node.list.eq(3).html('
            • 没有符合条件的结果
            • '); 516 | } else { 517 | node.searchMian.hide(); 518 | node.closeSearch.hide(); 519 | } 520 | }); 521 | node.closeSearch.on('click', function(){ 522 | $(this).hide(); 523 | node.searchMian.hide(); 524 | node.xximSearch.val('').focus(); 525 | }); 526 | 527 | //弹出聊天窗 528 | config.chatings = 0; 529 | node.list.on('click', '.xxim_childnode', function(){ 530 | var othis = $(this); 531 | xxim.popchatbox(othis); 532 | }); 533 | 534 | //点击最小化栏 535 | node.layimMin.on('click', function(){ 536 | $(this).hide(); 537 | $('#layim_chatbox').parents('.xubox_layer').show(); 538 | }); 539 | 540 | 541 | //document事件 542 | dom[1].on('click', function(){ 543 | node.setonline.hide(); 544 | $('#layim_sendtype').hide(); 545 | }); 546 | }; 547 | 548 | //请求列表数据 549 | xxim.getDates = function(index){ 550 | var api = [config.api.friend, config.api.group, config.api.chatlog], 551 | node = xxim.node, myf = node.list.eq(index); 552 | myf.addClass('loading'); 553 | config.json(api[index], {}, function(datas){ 554 | if(datas.status === 1){ 555 | var i = 0, myflen = datas.data.length, str = '', item; 556 | if(myflen > 1){ 557 | if(index !== 2){ 558 | for(; i < myflen; i++){ 559 | str += '
            • ' 560 | +'
              '+ datas.data[i].name +'('+ datas.data[i].nums +')
              ' 561 | +'
                '; 562 | item = datas.data[i].item; 563 | for(var j = 0; j < item.length; j++){ 564 | str += '
              • '+ item[j].name +'
              • '; 565 | } 566 | str += '
            • '; 567 | } 568 | } else { 569 | str += '
            • ' 570 | +'
                '; 571 | for(; i < myflen; i++){ 572 | str += '
              • '+ datas.data[i].name +''+ datas.data[i].time +'
              • '; 573 | } 574 | str += '
            • '; 575 | } 576 | myf.html(str); 577 | } else { 578 | myf.html('
            • 没有任何数据
            • '); 579 | } 580 | myf.removeClass('loading'); 581 | } else { 582 | myf.html('
            • '+ datas.msg +'
            • '); 583 | } 584 | }, function(){ 585 | myf.html('
            • 请求失败
            • '); 586 | myf.removeClass('loading'); 587 | }); 588 | }; 589 | 590 | //渲染骨架 591 | xxim.view = (function(){ 592 | var xximNode = xxim.layimNode = $('
              ' 593 | +'
              ' 594 | +' ' 595 | +'
              ' 596 | +'
                ' 597 | +'
                  ' 598 | +'
                    ' 599 | +'
                      ' 600 | +'
                      ' 601 | +'
                        ' 602 | +'
                      • ' 603 | +'在线' 604 | +'
                        ' 605 | +'在线' 606 | +'隐身' 607 | +'
                        ' 608 | +'
                      • ' 609 | +'
                      • ' 610 | +'
                      • ' 611 | +'' 612 | +'
                        ' 613 | 614 | +'
                        ' 615 | +'
                      • ' 616 | +'
                      • ' 617 | +'
                      • ' 618 | +'
                        ' 619 | +'
                      ' 620 | +'
                      '); 621 | dom[3].append(xximNode); 622 | 623 | xxim.renode(); 624 | xxim.getDates(0); 625 | xxim.event(); 626 | xxim.layinit(); 627 | }()); 628 | 629 | }(window); 630 | 631 | -------------------------------------------------------------------------------- /js/plugins/layer/layim/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangcaijun/springBoot-example-ui/6375aea047a0f66c3d8a900c542c73e657e85a63/js/plugins/layer/layim/loading.gif -------------------------------------------------------------------------------- /js/static/common.js: -------------------------------------------------------------------------------- 1 | ZEUS_BASE_URL="http://localhost:7500/zeus"; 2 | 3 | function ajaxRequest(method, url, callback, urlParams, bodyParams) { 4 | 5 | var urlSuffix = ""; 6 | if(typeof urlParams != 'undefined') { 7 | for(var k in urlParams) { 8 | if(urlSuffix.length == 0) { 9 | urlSuffix = "?"; 10 | } else { 11 | urlSuffix += "&"; 12 | } 13 | urlSuffix += k + "=" + encodeURIComponent(urlParams[k]); 14 | } 15 | } 16 | 17 | var data = ""; 18 | if(typeof bodyParams != 'undefined') { 19 | data = bodyParams; 20 | } 21 | 22 | var header = {}; 23 | var token = $.cookie("zeus_token"); 24 | if(typeof token != "undefined" && token != null) { 25 | header["Authorization"] = "Bearer " + token; 26 | } 27 | $.ajax({ 28 | headers: header, 29 | dataType: 'json', 30 | processData: false, 31 | contentType: 'application/json', 32 | type: method, 33 | url: ZEUS_BASE_URL + url + urlSuffix, 34 | data: data, 35 | success: function(data) { 36 | callback(data); 37 | } , 38 | error: function(jqXHR, textStatus, errorThrown){ 39 | var msg = JSON.stringify(jqXHR); 40 | console.error("连接服务器错误: " + msg +". 请联系管理员后再做尝试" ); 41 | } 42 | }); 43 | } 44 | 45 | function ajaxGet(url, callback, urlParams) { 46 | ajaxRequest("GET", url, callback, urlParams); 47 | } 48 | 49 | function checkLogin() { 50 | var token = $.cookie("zeus_token"); 51 | if(typeof token == "undefined" || token == null) { 52 | location.href="./login.html"; 53 | } 54 | } 55 | 56 | function logout() { 57 | $.removeCookie("zeus_token"); 58 | location.href="./login.html"; 59 | } -------------------------------------------------------------------------------- /js/static/jquery.cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery Cookie Plugin v1.4.1 3 | * https://github.com/carhartl/jquery-cookie 4 | * 5 | * Copyright 2013 Klaus Hartl 6 | * Released under the MIT license 7 | */ 8 | (function (factory) { 9 | if (typeof define === 'function' && define.amd) { 10 | // AMD 11 | define(['jquery'], factory); 12 | } else if (typeof exports === 'object') { 13 | // CommonJS 14 | factory(require('jquery')); 15 | } else { 16 | // Browser globals 17 | factory(jQuery); 18 | } 19 | }(function ($) { 20 | 21 | var pluses = /\+/g; 22 | 23 | function encode(s) { 24 | return config.raw ? s : encodeURIComponent(s); 25 | } 26 | 27 | function decode(s) { 28 | return config.raw ? s : decodeURIComponent(s); 29 | } 30 | 31 | function stringifyCookieValue(value) { 32 | return encode(config.json ? JSON.stringify(value) : String(value)); 33 | } 34 | 35 | function parseCookieValue(s) { 36 | if (s.indexOf('"') === 0) { 37 | // This is a quoted cookie as according to RFC2068, unescape... 38 | s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); 39 | } 40 | 41 | try { 42 | // Replace server-side written pluses with spaces. 43 | // If we can't decode the cookie, ignore it, it's unusable. 44 | // If we can't parse the cookie, ignore it, it's unusable. 45 | s = decodeURIComponent(s.replace(pluses, ' ')); 46 | return config.json ? JSON.parse(s) : s; 47 | } catch(e) {} 48 | } 49 | 50 | function read(s, converter) { 51 | var value = config.raw ? s : parseCookieValue(s); 52 | return $.isFunction(converter) ? converter(value) : value; 53 | } 54 | 55 | var config = $.cookie = function (key, value, options) { 56 | 57 | // Write 58 | 59 | if (value !== undefined && !$.isFunction(value)) { 60 | options = $.extend({}, config.defaults, options); 61 | 62 | if (typeof options.expires === 'number') { 63 | var days = options.expires, t = options.expires = new Date(); 64 | t.setTime(+t + days * 864e+5); 65 | } 66 | 67 | return (document.cookie = [ 68 | encode(key), '=', stringifyCookieValue(value), 69 | options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 70 | options.path ? '; path=' + options.path : '', 71 | options.domain ? '; domain=' + options.domain : '', 72 | options.secure ? '; secure' : '' 73 | ].join('')); 74 | } 75 | 76 | // Read 77 | 78 | var result = key ? undefined : {}; 79 | 80 | // To prevent the for loop in the first place assign an empty array 81 | // in case there are no cookies at all. Also prevents odd result when 82 | // calling $.cookie(). 83 | var cookies = document.cookie ? document.cookie.split('; ') : []; 84 | 85 | for (var i = 0, l = cookies.length; i < l; i++) { 86 | var parts = cookies[i].split('='); 87 | var name = decode(parts.shift()); 88 | var cookie = parts.join('='); 89 | 90 | if (key && key === name) { 91 | // If second argument (value) is a function it's a converter... 92 | result = read(cookie, value); 93 | break; 94 | } 95 | 96 | // Prevent storing a cookie that we couldn't decode. 97 | if (!key && (cookie = read(cookie)) !== undefined) { 98 | result[name] = cookie; 99 | } 100 | } 101 | 102 | return result; 103 | }; 104 | 105 | config.defaults = {}; 106 | 107 | $.removeCookie = function (key, options) { 108 | if ($.cookie(key) === undefined) { 109 | return false; 110 | } 111 | 112 | // Must not alter options, thus extending a fresh object... 113 | $.cookie(key, '', $.extend({}, options, { expires: -1 })); 114 | return !$.cookie(key); 115 | }; 116 | 117 | })); 118 | -------------------------------------------------------------------------------- /js/static/specialManagement/specialManagement.js: -------------------------------------------------------------------------------- 1 | var chk_value = []; 2 | var userTableInit = new Object(); 3 | var $table = $('#tb_users'), 4 | selections = []; 5 | var logPageSize = 10; 6 | 7 | $(function() { 8 | // 1.初始化Table 9 | var oTable = new TableInit(); 10 | oTable.Init(); 11 | }); 12 | 13 | function check(obj) { 14 | var o = $(obj); 15 | $("#userAddForm").valid(o); 16 | } 17 | 18 | var TableInit = function() { 19 | // 初始化Table 20 | userTableInit.Init = function() { 21 | $('#tb_users').bootstrapTable({ 22 | // url: '../../js/static/specialManagement/specialManagement.json', // 请求后台的URL(*) 23 | url: ZEUS_BASE_URL + '/specialManagements', // 请求后台的URL(*) 24 | method: 'get', // 请求方式(*) 25 | toolbar: '#toolbar', // 工具按钮用哪个容器 26 | striped: true, // 是否显示行间隔色 27 | cache: false, // 是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) 28 | pagination: true, // 是否显示分页(*) 29 | sortable: false, // 是否启用排序 30 | sortOrder: "asc", // 排序方式 31 | queryParams: userTableInit.queryParams, // 传递参数(*) 32 | sidePagination: "server", // 分页方式:client客户端分页,server服务端分页(*) 33 | pageNumber: 1, // 初始化加载第一页,默认第一页 34 | pageSize: 10, // 每页的记录行数(*) 35 | pageList: [10, 25, 50, 100], // 可供选择的每页的行数(*) 36 | // height : 456, 37 | uniqueId: "ID", // 每一行的唯一标识,一般为主键列 38 | search: false, // 是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大 39 | strictSearch: false, 40 | showColumns: false, // 是否显示所有的列 41 | showRefresh: false, // 是否显示刷新按钮 42 | minimumCountColumns: 2, // 最少允许的列数 43 | clickToSelect: false, // 设置true 将在点击行时,自动选择rediobox 和 checkbox 44 | showToggle: false, // 是否显示详细视图和列表视图的切换按钮 45 | cardView: false, // 是否显示详细视图 46 | detailView: false, // 是否显示父子表、 47 | paginationLoop: true, 48 | maintainSelected: true, 49 | responseHandler: function(res) { // res 为后台return的值 50 | $.each(res.rows, function(i, row) { 51 | row.state = $.inArray(row.userUuid, selections) !== -1; 52 | }); 53 | return res; 54 | }, 55 | columns: [{ 56 | field: 'state', 57 | title: '全选', 58 | checkbox: true, 59 | align: 'center', 60 | valign: 'middle' 61 | }, { 62 | field: 'zxCode', 63 | title: '编号' 64 | }, { 65 | field: 'zxName', 66 | title: '名称' 67 | }, { 68 | field: 'zxRange', 69 | title: '范围', 70 | formatter : function(value, row, index) { 71 | if(value == 1){ 72 | return "全国" ; 73 | }else if(value == 2){ 74 | return "省/直辖市" ; 75 | }else if(value == 3){ 76 | return "区/旗/市" ; 77 | } 78 | } 79 | }, { 80 | field: 'zxType', 81 | title: '类型', 82 | formatter : function(value, row, index) { 83 | if(value == 1){ 84 | return "事件" ; 85 | }else if(value == 2){ 86 | return "案件" ; 87 | } 88 | } 89 | }, { 90 | field: 'zxStatus', 91 | title: '状态', 92 | formatter : function(value, row, index) { 93 | if(value == 1){ 94 | return "进行中" ; 95 | }else if(value == 2){ 96 | return "已完成" ; 97 | } 98 | } 99 | }, { 100 | field: 'startTime', 101 | title: '开始时间' 102 | }] 103 | }); 104 | }; 105 | $table.on('check.bs.table uncheck.bs.table ' + 106 | 'check-all.bs.table uncheck-all.bs.table', 107 | function() { 108 | // save your data, here just save the current page 109 | selections = getIdSelections(); 110 | // push or splice the selections if you want to save all data selections 111 | }); 112 | // 得到查询的参数 113 | userTableInit.queryParams = function(params) { 114 | logPageSize = params.limit; 115 | var chkstr = chk_value.join(","); 116 | var temp = { // 这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的 117 | offset: params.offset, // nowpage 118 | limit: params.limit, // pagesize 119 | }; 120 | return temp; 121 | }; 122 | return userTableInit; 123 | }; 124 | 125 | function getIdSelections() { 126 | return $.map($table.bootstrapTable('getSelections'), function(row) { 127 | return row.zxUuid; 128 | }); 129 | } 130 | 131 | function responseHandler(res) { 132 | $.each(res.rows, function(i, row) { 133 | row.state = $.inArray(row.userUuid, selections) !== -1; 134 | }); 135 | return res; 136 | } 137 | 138 | //"新增"按钮 139 | $(".btn-add").click(function() { 140 | $("input[name='zxName']").val(""); 141 | $("input[name='startTime']").val(""); 142 | $("input[name='endTime']").val(""); 143 | $(".zxRange option:first").prop("selected", 'selected'); 144 | $(".zxType option:first").prop("selected", 'selected'); 145 | $("#modalAddorEditTitle").html("新增专项"); 146 | ajaxRequest("GET", "/specialManagements/zxCode", function(ajaxRet) { 147 | $("input[name='zxCode']").val(ajaxRet.data); 148 | }, undefined,undefined); 149 | $("#modal").modal("show"); 150 | }); 151 | //"编辑"按钮 152 | $(".btn-upd").click(function() { 153 | var idSelections = getIdSelections(); 154 | console.log(idSelections); 155 | if(idSelections == ""){ 156 | layer.msg('您尚未勾选,请勾选需要进行操作的数据', { 157 | icon : 2 158 | }); 159 | }else if(idSelections.length > 1){ 160 | layer.msg('您勾选的数据超过一条,请只选择需要操作的一条数据', { 161 | icon : 2 162 | }); 163 | }else{ 164 | ajaxRequest("GET", "/specialManagementsById", function(ajaxRet) { 165 | $("input[name='zxUuid']").val(ajaxRet.zxUuid);//jquery通过name属性获取html对象并赋值为123 166 | $("input[name='zxCode']").val(ajaxRet.zxCode); 167 | $("input[name='zxName']").val(ajaxRet.zxName); 168 | $(".zxRange").val(ajaxRet.zxRange); 169 | $(".zxType").val(ajaxRet.zxType); 170 | $("input[name='startTime']").val(ajaxRet.startTime); 171 | $("input[name='endTime']").val(ajaxRet.endTime); 172 | }, {"id": idSelections.toString()},undefined); 173 | $("#modalAddorEditTitle").html("修改专项"); //修改模态框标题 174 | $("#modal").modal("show"); 175 | } 176 | }); 177 | 178 | //"删除"按钮 179 | $(".btn-del").click(function() { 180 | var idSelections = getIdSelections(); 181 | console.log("getIdSelections:" + idSelections); 182 | if(idSelections == ""){ 183 | layer.msg('您尚未勾选,请勾选需要进行操作的数据', { 184 | icon : 2 185 | }); 186 | return ; 187 | } 188 | layer.confirm('请是否确定删除所勾选的数据?', { 189 | icon: 7, 190 | title: '提示' 191 | }, function() { 192 | layer.closeAll('dialog'); 193 | ajaxRequest("DELETE", "/specialManagements", function(ajaxRet) { 194 | if(ajaxRet.success) { 195 | layer.msg(ajaxRet.data, { 196 | icon : 1 197 | }); 198 | $("#tb_users").bootstrapTable('destroy'); 199 | userTableInit.Init(); 200 | } 201 | }, {"idSelections": idSelections.toString()},undefined); 202 | }); 203 | }); 204 | //"新增用户"或"修改用户"的模态框重置 205 | function cancer(){ 206 | var modalTitle = $("#modalAddorEditTitle").html(); 207 | console.log(modalTitle); 208 | if(modalTitle == "修改专项"){ 209 | $("input[name='zxName']").val(""); 210 | $("input[name='zxRange']").val(""); 211 | $("input[name='zxType']").val(""); 212 | $("input[name='startTime']").val(""); 213 | $("input[name='endTime']").val(""); 214 | } 215 | $("#modal").modal("hide"); 216 | } 217 | function addOrEdit(){ 218 | var modalTitle = $("#modalAddorEditTitle").html(); 219 | var vasd = jQuery.form2json("myForm"); 220 | var method = ""; 221 | console.log(vasd.data); 222 | if(modalTitle == "新增专项"){ 223 | method = "POST"; 224 | }else if(modalTitle == "修改专项"){ 225 | method = "PATCH"; 226 | } 227 | ajaxRequest(method, "/specialManagements", function(ajaxRet) { 228 | if(!ajaxRet.success) { 229 | layer.alert(ajaxRet.message); 230 | }else{ 231 | $("#tb_users").bootstrapTable('destroy'); 232 | userTableInit.Init(); 233 | $("#modal").modal("hide"); 234 | layer.alert(ajaxRet.data); 235 | } 236 | },undefined ,vasd.data); 237 | } 238 | 239 | //"专项结束"按钮 240 | $(".btn-stop").click(function() { 241 | var idSelections = getIdSelections(); 242 | console.log("getIdSelections:" + idSelections); 243 | if(idSelections == ""){ 244 | layer.msg('您尚未勾选,请勾选需要进行操作的数据', { 245 | icon : 2 246 | }); 247 | return ; 248 | } 249 | layer.confirm('请是否确定结束所勾选的数据?', { 250 | icon: 7, 251 | title: '提示' 252 | }, function() { 253 | layer.closeAll('dialog'); 254 | ajaxRequest("PATCH", "/specialManagements/stop", function(ajaxRet) { 255 | if(ajaxRet.success) { 256 | layer.msg(ajaxRet.data, { 257 | icon : 1 258 | }); 259 | $("#tb_users").bootstrapTable('destroy'); 260 | userTableInit.Init(); 261 | } 262 | }, {"idSelections": idSelections.toString()},undefined); 263 | }); 264 | }); -------------------------------------------------------------------------------- /js/static/specialManagement/specialManagement.json: -------------------------------------------------------------------------------- 1 | { 2 | "total":12, 3 | "rows":[ 4 | { 5 | "userUuid":"413ffe46-8896-4dd1-8fe6-19551ceb1b7", 6 | "userId":"admin11", 7 | "name":"专项名称1", 8 | "startTime":"2017-01-01 11:01:15" 9 | }, 10 | { 11 | "userUuid":"413ffe46-8896-4dd1-8fe6-19551ceb1b7", 12 | "userId":"admin2", 13 | "name":"专项名称2", 14 | "startTime":"2017-01-01 11:01:15" 15 | }, 16 | { 17 | "userUuid":"413ffe46-8896-4dd1-8fe6-19551ceb1b7", 18 | "userId":"admin3", 19 | "name":"专项名称3", 20 | "startTime":"2017-01-01 11:01:15" 21 | }, 22 | { 23 | "userUuid":"413ffe46-8896-4dd1-8fe6-19551ceb1b7", 24 | "userId":"admin11", 25 | "name":"专项名称4", 26 | "startTime":"2017-01-01 11:01:15" 27 | }, 28 | { 29 | "userUuid":"413ffe46-8896-4dd1-8fe6-19551ceb1b7", 30 | "userId":"admin2", 31 | "name":"专项名称5", 32 | "startTime":"2017-01-01 11:01:15" 33 | }, 34 | { 35 | "userUuid":"413ffe46-8896-4dd1-8fe6-19551ceb1b7", 36 | "userId":"admin3", 37 | "name":"专项名称6", 38 | "startTime":"2017-01-01 11:01:15" 39 | }, 40 | { 41 | "userUuid":"413ffe46-8896-4dd1-8fe6-19551ceb1b7", 42 | "userId":"admin11", 43 | "name":"专项名称7", 44 | "startTime":"2017-01-01 11:01:15" 45 | }, 46 | { 47 | "userUuid":"413ffe46-8896-4dd1-8fe6-19551ceb1b7", 48 | "userId":"admin2", 49 | "name":"专项名称8", 50 | "startTime":"2017-01-01 11:01:15" 51 | }, 52 | { 53 | "userUuid":"413ffe46-8896-4dd1-8fe6-19551ceb1b7", 54 | "userId":"admin3", 55 | "name":"专项名称9", 56 | "startTime":"2017-01-01 11:01:15" 57 | }, 58 | { 59 | "userUuid":"413ffe46-8896-4dd1-8fe6-19551ceb1b7", 60 | "userId":"admin3", 61 | "name":"专项名称10", 62 | "startTime":"2017-01-01 11:01:15" 63 | }, 64 | { 65 | "userUuid":"413ffe46-8896-4dd1-8fe6-19551ceb1b7", 66 | "userId":"admin3", 67 | "name":"专项名称11", 68 | "startTime":"2017-01-01 11:01:15" 69 | }, 70 | { 71 | "userUuid":"413ffe46-8896-4dd1-8fe6-19551ceb1b7", 72 | "userId":"admin3", 73 | "name":"专项名称12", 74 | "startTime":"2017-01-01 11:01:15" 75 | } 76 | ] 77 | } --------------------------------------------------------------------------------