├── 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 | 
9 | * 首页请求分析
10 |
11 | 以删除为例:
12 |
13 | * **Request Method:DELETE** (RESTFUL风格)
14 | * 后端地址为**Request URL:http://localhost:7500/zeus/specialManagements?idSelections=B3C36EAEC69243B7A9723EAB90150512**
15 |
16 | 
--------------------------------------------------------------------------------
/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='"+c.viewtb+'",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]
",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?"':"")+'",!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 | +'
'
240 | +'
'
241 | +'
'
242 | +'
'
245 | +'
'
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 | +'
'
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 | }
--------------------------------------------------------------------------------