2 files modified
30 files added
| | |
| | | <meta charset="utf-8" /> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> |
| | | <title>map</title> |
| | | <title>地图</title> |
| | | <!-- vue --> |
| | | <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script> |
| | | |
| | |
| | | <meta charset="utf-8" /> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> |
| | | <title>map</title> |
| | | <title>地图</title> |
| | | <!-- vue --> |
| | | <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script> |
| | | |
| New file |
| | |
| | | body { |
| | | padding: 0; |
| | | margin: 0; |
| | | } |
| | | |
| | | html, body, #mapVue { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | #map { |
| | | width: 100%; |
| | | height: 50%; |
| | | z-index: 1; |
| | | } |
| | | |
| | | #mapVue { |
| | | overflow: hidden; |
| | | /* border: solid 1px springgreen; */ |
| | | } |
| | | |
| | | .dingwei { |
| | | position: fixed; |
| | | width: 38px; |
| | | height: 38px; |
| | | top: 100px; |
| | | right: 0; |
| | | z-index: 100; |
| | | background-color: #fff; |
| | | border-radius: 20px; |
| | | opacity: 0.8; |
| | | border: 1px solid gray; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | #seedata { |
| | | position: fixed; |
| | | bottom: 0; |
| | | width: 100%; |
| | | height: 70%; |
| | | z-index: 400; |
| | | background-color: #fff; |
| | | /* opacity: 0.9; */ |
| | | display: flex; |
| | | flex-direction: column; |
| | | border-radius: 60px 60px 0 0; |
| | | } |
| | | |
| | | .title { |
| | | width: 100%; |
| | | height: 20%; |
| | | /* border: 1px solid springgreen; */ |
| | | border-radius: 60px 60px 0 0; |
| | | position: relative; |
| | | /* top: -3%; */ |
| | | background-color: #fff; |
| | | z-index: 101; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .title-span { |
| | | height: 15%; |
| | | } |
| | | |
| | | /* .title::after { |
| | | content: ''; |
| | | display: block; |
| | | width: 40px; |
| | | height: 40px; |
| | | border: springgreen solid 1px; |
| | | } */ |
| | | |
| | | .main { |
| | | width: 95%; |
| | | margin: 0 auto; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | flex-direction: column; |
| | | border-top: 1px solid rgb(138, 138, 138); |
| | | } |
| | | |
| | | .f-m-once { |
| | | /* border: 1px solid rgb(194, 142, 0); */ |
| | | width: 100%; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 8px 0 8px 0 |
| | | } |
| | | |
| | | .f-m-o-title { |
| | | display: flex; |
| | | align-items: center; |
| | | width: 40%; |
| | | } |
| | | |
| | | .f-m-o-t-img { |
| | | width: 30px; |
| | | height: 30px; |
| | | padding-right: 10px; |
| | | } |
| | | |
| | | .f-m-o-center { |
| | | width: 60%; |
| | | } |
| | | |
| | | .el-divider { |
| | | margin: 0 auto; |
| | | width: 90%; |
| | | } |
| | | |
| | | .but { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-around; |
| | | padding-top: 5px; |
| | | } |
| | | |
| | | .buta { |
| | | /* border: 1px solid #4D7CEE; */ |
| | | } |
| | | |
| | | .shipingPopup { |
| | | position: fixed; |
| | | top: 0; |
| | | left: 0; |
| | | height: 100%; |
| | | width: 100%; |
| | | background-color: rgba(0, 0, 0, 0.5); |
| | | z-index: 200; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .s-p-main { |
| | | width: 90%; |
| | | height: 90%; |
| | | /* background-color: #fff; */ |
| | | } |
| | | |
| | | .s-p-gaunbi { |
| | | position: relative; |
| | | left: 90%; |
| | | width: 50px; |
| | | height: 50px; |
| | | } |
| | | |
| | | /* video::-webkit-media-controls-timeline { |
| | | display: none; |
| | | } */ |
| | | |
| | | .butb { |
| | | width: 80px; |
| | | height: 80px; |
| | | border: 1px solid rgb(46, 118, 228); |
| | | border-radius: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | color: #fff; |
| | | background-image: linear-gradient(to bottom, #3CA7F4, #4D7CEE); |
| | | } |
| | | |
| | | /* .resultFeedback { |
| | | position: fixed; |
| | | top: 0; |
| | | left: 0; |
| | | height: 100%; |
| | | width: 100%; |
| | | background-color: rgba(0, 0, 0, 0.5); |
| | | z-index: 201; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } */ |
| | | |
| | | /* .b-r-main { |
| | | width: 90%; |
| | | height: 90%; |
| | | } |
| | | |
| | | .b-r-gaunbi { |
| | | position: relative; |
| | | left: 90%; |
| | | width: 50px; |
| | | height: 50px; |
| | | } |
| | | |
| | | .b-r-main-in { |
| | | width: 100%; |
| | | height: auto; |
| | | padding-bottom: 20px; |
| | | background-color: #fff; |
| | | border-radius: 10px; |
| | | } |
| | | |
| | | .b-r-m-i-once { |
| | | padding: 10px 0 10px 10px; |
| | | display: flex; |
| | | justify-content: space-around; |
| | | } |
| | | |
| | | .b-r-m-i-o-title { |
| | | width: 30%; |
| | | position: relative; |
| | | top: 10px; |
| | | } |
| | | |
| | | .b-r-m-i-o-center { |
| | | width: 70%; |
| | | } |
| | | .b-r-i-o-ups{ |
| | | /* align-items: center; */ |
| | | } |
| | | .b-r-m-i-o-c-img { |
| | | width: 50px; |
| | | height: 50px; |
| | | } |
| | | .b-r-m-but{ |
| | | position: relative; |
| | | left: calc(50% - 40px); |
| | | } */ |
| | | .butc { |
| | | /* border: 1px solid #4D7CEE; */ |
| | | } |
| | | |
| | | .b-b-img { |
| | | width: 40px; |
| | | height: 40px; |
| | | display: block; |
| | | /* border: 1px solid #4D7CEE; */ |
| | | } |
| New file |
| | |
| | | @charset "UTF-8";.el-pagination--small .arrow.disabled,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*,.el-table--hidden{visibility:hidden}.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing),.el-message__closeBtn:focus,.el-message__content:focus,.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing),.el-rate:active,.el-rate:focus,.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing),.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}@font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination::after,.el-pagination::before{display:table;content:""}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409EFF}.el-pagination button:disabled{color:#C0C4CC;background-color:#FFF;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat #FFF;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#C0C4CC;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409EFF}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#C0C4CC}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409EFF}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409EFF;color:#FFF}.el-dialog,.el-pager li{background:#FFF;-webkit-box-sizing:border-box}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-date-table,.el-table th{-webkit-user-select:none;-moz-user-select:none}.el-pager .more::before{line-height:30px}.el-pager li{padding:0 4px;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box;text-align:center}.el-menu--collapse .el-menu .el-submenu,.el-menu--popup{min-width:200px}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#C0C4CC}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409EFF}.el-pager li.active{color:#409EFF;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409EFF}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #E4E7ED;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#FFF}.el-dropdown-menu,.el-menu--collapse .el-submenu .el-menu{z-index:10;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#F5F7FA}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#FFF}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default::before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover::before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown-menu{position:absolute;top:0;left:0;padding:10px 0;margin:5px 0;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #EBEEF5}.el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px;background-color:#FFF}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0;background-color:#FFF}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu::after,.el-menu::before{display:table;content:""}.el-menu::after{clear:both}.el-menu.el-menu--horizontal{border-bottom:solid 1px #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409EFF;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#FFF;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409EFF;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;border:1px solid #E4E7ED;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409EFF}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409EFF}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{white-space:nowrap;background:#FFF;border:1px solid #DCDFE6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409EFF}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #409EFF;box-shadow:-1px 0 0 0 #409EFF}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#F2F6FC}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-popover,.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409EFF}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #DCDFE6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#DCDFE6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#FFF}.el-switch.is-checked .el-switch__core{border-color:#409EFF;background-color:#409EFF}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #E4E7ED;border-radius:4px;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409EFF;background-color:#FFF}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#F5F7FA}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\e6da";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#FFF}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#F5F7FA}.el-select-dropdown__item.selected{color:#409EFF;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#E4E7ED}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#C0C4CC}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409EFF}.el-select .el-input .el-select__caret{color:#C0C4CC;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#C0C4CC;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#E4E7ED}.el-select .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#C0C4CC;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#C0C4CC;right:-7px;top:0;color:#FFF}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#FFF}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table--mini,.el-table--small,.el-table__expand-icon{font-size:12px}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th{background:#F5F7FA}.el-table th,.el-table tr{background-color:#FFF}.el-table td,.el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small td,.el-table--small th{padding:8px 0}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table .cell,.el-table--border td:first-child .cell,.el-table--border th:first-child .cell{padding-left:10px}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #EBEEF5}.el-table th.is-sortable{cursor:pointer}.el-table th{overflow:hidden;-ms-user-select:none;user-select:none}.el-table th>.cell{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th>.cell.highlight{color:#409EFF}.el-table th.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #EBEEF5}.el-table--border::after,.el-table--group::after,.el-table::before{content:'';position:absolute;background-color:#EBEEF5;z-index:1}.el-table--border::after,.el-table--group::after{top:0;right:0;width:1px;height:100%}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #EBEEF5}.el-table--border th.gutter:last-of-type{border-bottom:1px solid #EBEEF5;border-bottom-width:1px}.el-table--border th,.el-table__fixed-right-patch{border-bottom:1px solid #EBEEF5}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right::before,.el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#EBEEF5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#FFF}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #EBEEF5;background-color:#F5F7FA;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #EBEEF5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#F5F7FA;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-picker-panel,.el-table-filter{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #EBEEF5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#C0C4CC;top:5px}.el-table .sort-caret.descending{border-top-color:#C0C4CC;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409EFF}.el-table .descending .sort-caret.descending{border-top-color:#409EFF}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#FAFAFA}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td{background-color:#ecf5ff}.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#F5F7FA}.el-table__body tr.current-row>td{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #EBEEF5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#F5F7FA}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #EBEEF5;border-radius:2px;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-date-table td,.el-date-table td div{height:30px;-webkit-box-sizing:border-box}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409EFF;color:#FFF}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #EBEEF5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table td.in-range div,.el-date-table td.in-range div:hover,.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#F2F6FC}.el-table-filter__bottom button:hover{color:#409EFF}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{padding:3px 0;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#C0C4CC}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409EFF;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#FFF}.el-date-table td.available:hover{color:#409EFF}.el-date-table td.current:not(.disabled) span{color:#FFF;background-color:#409EFF}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#FFF}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409EFF}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#F5F7FA;opacity:1;cursor:not-allowed;color:#C0C4CC}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#F2F6FC;border-radius:15px}.el-date-table td.selected div:hover{background-color:#F2F6FC}.el-date-table td.selected span{background-color:#409EFF;color:#FFF;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:solid 1px #EBEEF5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#409EFF;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#FFF}.el-month-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-month-table td.disabled .cell:hover{color:#C0C4CC}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#409EFF}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#F2F6FC}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#FFF}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#FFF;background-color:#409EFF}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#409EFF}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#409EFF;font-weight:700}.el-year-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-year-table td.disabled .cell:hover{color:#C0C4CC}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409EFF}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#FFF}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #EBEEF5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409EFF}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409EFF;font-weight:700}.time-select-item.disabled{color:#E4E7ED;cursor:not-allowed}.time-select-item:hover{background-color:#F5F7FA;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#C0C4CC;float:left;line-height:32px}.el-date-editor .el-range-input,.el-date-editor .el-range-separator{height:100%;margin:0;text-align:center;display:inline-block;font-size:14px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;padding:0;width:39%;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input:-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::placeholder{color:#C0C4CC}.el-date-editor .el-range-separator{padding:0 5px;line-height:32px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#C0C4CC;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#409EFF}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#E4E7ED}.el-range-editor.is-disabled input{background-color:#F5F7FA;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input:-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::placeholder{color:#C0C4CC}.el-range-editor.is-disabled .el-range-separator{color:#C0C4CC}.el-picker-panel{color:#606266;border:1px solid #E4E7ED;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#FFF;border-radius:4px;line-height:30px;margin:5px 0}.el-popover,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#FFF;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409EFF}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409EFF}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409EFF}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#FFF;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#FFF;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409EFF}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#F5F7FA;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#C0C4CC;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #E4E7ED;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-slider__button,.el-slider__button-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #E4E7ED;border-bottom:1px solid #E4E7ED}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409EFF}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #E4E7ED}.el-popover{position:absolute;background:#FFF;min-width:150px;border:1px solid #EBEEF5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#FFF;border-radius:4px;border:1px solid #EBEEF5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#F56C6C}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409EFF}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67C23A}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#E6A23C}.el-message-box__status.el-icon-error{color:#F56C6C}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#F56C6C;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#C0C4CC}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#409EFF;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:""}.el-form-item::after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:""}.el-form-item__content::after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#F56C6C;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:'*';color:#F56C6C;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#F56C6C}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409EFF;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-collapse-item__arrow,.el-tabs__nav{-webkit-transition:-webkit-transform .3s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#409EFF}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#E4E7ED;z-index:1}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after,.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #409EFF inset;box-shadow:0 0 2px 2px #409EFF inset;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#C0C4CC;color:#FFF}.el-tabs__item.is-active{color:#409EFF}.el-tabs__item:hover{color:#409EFF;cursor:pointer}.el-tabs__item.is-disabled{color:#C0C4CC;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #E4E7ED}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #E4E7ED;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #E4E7ED;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#FFF}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--border-card{background:#FFF;border:1px solid #DCDFE6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#F5F7FA;border-bottom:1px solid #E4E7ED;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409EFF;background-color:#FFF;border-right-color:#DCDFE6;border-left-color:#DCDFE6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409EFF}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#C0C4CC}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #DCDFE6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left::after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #E4E7ED;border-bottom:none;border-top:1px solid #E4E7ED;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #E4E7ED;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #E4E7ED;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #E4E7ED;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #E4E7ED}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #E4E7ED;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #E4E7ED;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #E4E7ED;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#FFF;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409EFF}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#F5F7FA}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409EFF;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#F5F7FA}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#C0C4CC;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#C0C4CC}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#FFF;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#C0C4CC}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#FFF}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67C23A}.el-alert--success.is-light .el-alert__description{color:#67C23A}.el-alert--success.is-dark{background-color:#67C23A;color:#FFF}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#FFF}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#E6A23C}.el-alert--warning.is-light .el-alert__description{color:#E6A23C}.el-alert--warning.is-dark{background-color:#E6A23C;color:#FFF}.el-alert--error.is-light{background-color:#fef0f0;color:#F56C6C}.el-alert--error.is-light .el-alert__description{color:#F56C6C}.el-alert--error.is-dark{background-color:#F56C6C;color:#FFF}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #EBEEF5;position:fixed;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67C23A}.el-notification .el-icon-error{color:#F56C6C}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#E6A23C}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#F5F7FA;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409EFF}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409EFF}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #DCDFE6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #DCDFE6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#E4E7ED;color:#E4E7ED}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#E4E7ED;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #DCDFE6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #DCDFE6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-progress-bar__inner::after,.el-row::after,.el-row::before,.el-slider::after,.el-slider::before,.el-slider__button-wrapper::after,.el-upload-cover::after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#FFF}.el-tooltip__popper.is-light{background:#FFF;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#FFF}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#FFF}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#FFF}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#FFF}.el-slider::after,.el-slider::before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper::after{vertical-align:middle;display:inline-block}.el-slider::after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#E4E7ED;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button{border-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409EFF;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;user-select:none;line-height:normal}.el-slider__button-wrapper::after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409EFF;background-color:#FFF;border-radius:50%;-webkit-transition:.2s;transition:.2s;user-select:none}.el-image-viewer__btn,.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#FFF;transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #DCDFE6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#C0C4CC}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409EFF}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-2,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-push-0,.el-col-push-1,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-2,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#409EFF;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409EFF;stroke-linecap:round}.el-loading-spinner i{color:#409EFF}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-upload--picture-card,.el-upload-dragger{-webkit-box-sizing:border-box;cursor:pointer}.el-col-0{width:0%}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409EFF;color:#409EFF}.el-upload:focus .el-upload-dragger{border-color:#409EFF}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#C0C4CC;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #DCDFE6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409EFF;font-style:normal}.el-upload-dragger:hover{border-color:#409EFF}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409EFF}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67C23A}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409EFF}.el-upload-list__item:hover{background-color:#F5F7FA}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409EFF;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409EFF}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#FFF}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#FFF;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#FFF;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#FFF;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner::after,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67C23A}.el-progress.is-success .el-progress__text{color:#67C23A}.el-progress.is-warning .el-progress-bar__inner{background-color:#E6A23C}.el-progress.is-warning .el-progress__text{color:#E6A23C}.el-progress.is-exception .el-progress-bar__inner{background-color:#F56C6C}.el-progress.is-exception .el-progress__text{color:#F56C6C}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#EBEEF5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409EFF;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-card,.el-message{border-radius:4px;overflow:hidden}.el-progress-bar__inner::after{height:100%}.el-progress-bar__innerText{color:#FFF;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-width:1px;border-style:solid;border-color:#EBEEF5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67C23A}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#E6A23C}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#F56C6C}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#C0C4CC;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67C23A}.el-message .el-icon-error{color:#F56C6C}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#E6A23C}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#F56C6C;border-radius:10px;color:#FFF;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #FFF}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409EFF}.el-badge__content--success{background-color:#67C23A}.el-badge__content--warning{background-color:#E6A23C}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#F56C6C}.el-card{border:1px solid #EBEEF5;background-color:#FFF;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#C0C4CC;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-webkit-box;display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#F5F7FA}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#C0C4CC;border-color:#C0C4CC}.el-step__head.is-success{color:#67C23A;border-color:#67C23A}.el-step__head.is-error{color:#F56C6C;border-color:#F56C6C}.el-step__head.is-finish{color:#409EFF;border-color:#409EFF}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#FFF;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#C0C4CC}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#C0C4CC}.el-step__title.is-success{color:#67C23A}.el-step__title.is-error{color:#F56C6C}.el-step__title.is-finish{color:#409EFF}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#C0C4CC}.el-step__description.is-success{color:#67C23A}.el-step__description.is-error{color:#F56C6C}.el-step__description.is-finish{color:#409EFF}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#C0C4CC}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#FFF;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#C0C4CC;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#FFF;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#FFF;opacity:.24;-webkit-transition:.2s;transition:.2s}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #EBEEF5;border-bottom:1px solid #EBEEF5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#FFF;color:#303133;cursor:pointer;border-bottom:1px solid #EBEEF5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409EFF}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#FFF;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #EBEEF5}.el-cascader__tags,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#EBEEF5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#FFF;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#EBEEF5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#FFF}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#EBEEF5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#FFF;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#EBEEF5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#FFF}.el-tag{background-color:#ecf5ff;border-color:#d9ecff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#409EFF;border-width:1px;border-style:solid;border-radius:4px;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#409EFF}.el-tag .el-tag__close{color:#409eff}.el-tag .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67C23A}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#409eff;border-color:#409eff;color:#fff}.el-tag--dark.is-hit{border-color:#409EFF}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#FFF;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67C23A}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#409eff}.el-tag--plain.is-hit{border-color:#409EFF}.el-tag--plain .el-tag__close{color:#409eff}.el-tag--plain .el-tag__close:hover{color:#FFF;background-color:#409eff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67C23A}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#C0C4CC}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#C0C4CC}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#FFF;border:1px solid #E4E7ED;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#C0C4CC;color:#FFF}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#F5F7FA}.el-cascader__suggestion-item.is-checked{color:#409EFF;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#C0C4CC}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#C0C4CC}.el-cascader__search-input:-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::placeholder{color:#C0C4CC}.el-color-predefine{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #409EFF;box-shadow:0 0 3px 2px #409EFF}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(rgba(0,0,0,0)));background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409EFF;border-color:#409EFF}.el-color-dropdown__link-btn{cursor:pointer;color:#409EFF;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409EFF,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#FFF;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#FFF;background-image:none;border:1px solid #DCDFE6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea__inner:-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea__inner:hover{border-color:#C0C4CC}.el-textarea__inner:focus{outline:0;border-color:#409EFF}.el-textarea .el-input__count{color:#909399;background:#FFF;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea.is-exceed .el-textarea__inner{border-color:#F56C6C}.el-textarea.is-exceed .el-input__count{color:#F56C6C}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#C0C4CC;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#FFF;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#FFF;background-image:none;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__prefix,.el-input__suffix{position:absolute;top:0;-webkit-transition:all .3s;height:100%;color:#C0C4CC;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input__inner:-ms-input-placeholder{color:#C0C4CC}.el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input__inner::placeholder{color:#C0C4CC}.el-input__inner:hover{border-color:#C0C4CC}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409EFF;outline:0}.el-input__suffix{right:5px;transition:all .3s}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#F56C6C}.el-input.is-exceed .el-input__suffix .el-input__count{color:#F56C6C}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#F5F7FA;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #DCDFE6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#FFF;background-color:#409EFF;font-size:0}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #DCDFE6;background-color:#F5F7FA;color:#C0C4CC}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer-panel{border:1px solid #EBEEF5;border-radius:4px;overflow:hidden;background:#FFF;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409EFF}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#F5F7FA;margin:0;padding-left:15px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-divider__text,.el-link{font-weight:500;font-size:14px}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#FFF;margin:0;padding:0;border-top:1px solid #EBEEF5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-webkit-box;display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-container{display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical,.el-drawer{-webkit-box-orient:vertical;-webkit-box-direction:normal}.el-aside,.el-header{-webkit-box-sizing:border-box}.el-container.is-vertical{-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside{overflow:auto;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-footer,.el-main{-webkit-box-sizing:border-box}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;box-sizing:border-box;padding:20px}.el-footer{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;font-size:14px;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #E4E7ED}.el-timeline-item__icon{color:#FFF;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#E4E7ED;border-radius:50%;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-webkit-box;display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#409EFF}.el-timeline-item__node--success{background-color:#67C23A}.el-timeline-item__node--warning{background-color:#E6A23C}.el-timeline-item__node--danger{background-color:#F56C6C}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409EFF}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409EFF}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409EFF}.el-link.el-link--default.is-disabled{color:#C0C4CC}.el-link.el-link--primary{color:#409EFF}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#F56C6C}.el-link.el-link--danger{color:#F56C6C}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67C23A}.el-link.el-link--success{color:#67C23A}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#E6A23C}.el-link.el-link--warning{color:#E6A23C}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#DCDFE6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#FFF;padding:0 20px;color:#303133}.el-image__error,.el-image__placeholder{background:#F5F7FA}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__error{display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;color:#C0C4CC;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;user-select:none}.el-button,.el-checkbox{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{top:50%;width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff}.el-image-viewer__prev{-webkit-transform:translateY(-50%);transform:translateY(-50%);left:40px}.el-image-viewer__next{-webkit-transform:translateY(-50%);transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#409EFF;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#FFF;border-color:#409EFF;color:#409EFF}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#FFF;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#FFF;border-color:#EBEEF5;color:#C0C4CC}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#FFF;background-color:#409EFF;border-color:#409EFF}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#FFF}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#FFF;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409EFF;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409EFF;border-color:#409EFF;color:#FFF}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#FFF;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#FFF;background-color:#67C23A;border-color:#67C23A}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#FFF}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#FFF}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#FFF;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67C23A;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67C23A;border-color:#67C23A;color:#FFF}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#FFF;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#FFF;background-color:#E6A23C;border-color:#E6A23C}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#FFF}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#FFF}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#FFF;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#E6A23C;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#E6A23C;border-color:#E6A23C;color:#FFF}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#FFF;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#FFF;background-color:#F56C6C;border-color:#F56C6C}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#FFF}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#FFF}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#FFF;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#F56C6C;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#F56C6C;border-color:#F56C6C;color:#FFF}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#FFF;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#FFF;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#FFF}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#FFF}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#FFF;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#FFF}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#FFF;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--text,.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--mini,.el-button--small{font-size:12px;border-radius:3px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small,.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{color:#409EFF;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;background-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #EBEEF5}.el-backtop,.el-page-header{display:-webkit-box;display:-ms-flexbox}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#C0C4CC}.el-backtop,.el-calendar-table td.is-today{color:#409EFF}.el-calendar-table td{border-bottom:1px solid #EBEEF5;border-right:1px solid #EBEEF5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#F2F8FE}.el-calendar-table tr:first-child td{border-top:1px solid #EBEEF5}.el-calendar-table tr td:first-child{border-left:1px solid #EBEEF5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#F2F8FE}.el-backtop{position:fixed;background-color:#FFF;width:40px;height:40px;border-radius:50%;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#F2F6FC}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left::after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#DCDFE6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;user-select:none;margin-right:30px}.el-checkbox-button__inner,.el-radio{font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409EFF}.el-checkbox.is-bordered.is-disabled{border-color:#EBEEF5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#DCDFE6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#C0C4CC}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#C0C4CC}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#C0C4CC;border-color:#C0C4CC}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409EFF;border-color:#409EFF}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#C0C4CC;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409EFF}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409EFF}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#FFF;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #DCDFE6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#FFF;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409EFF}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #FFF;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409EFF}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-radio,.el-radio__input{line-height:1;white-space:nowrap;outline:0}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#FFF;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #8cc5ff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409EFF}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#EBEEF5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409EFF}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio{color:#606266;cursor:pointer;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#409EFF}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#EBEEF5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#F5F7FA;border-color:#E4E7ED}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{cursor:pointer;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#F5F7FA}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#C0C4CC}.el-radio__input.is-disabled+span.el-radio__label{color:#C0C4CC;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409EFF;background:#409EFF}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409EFF}.el-radio__input.is-focus .el-radio__inner{border-color:#409EFF}.el-radio__inner{border:1px solid #DCDFE6;border-radius:100%;width:14px;height:14px;background-color:#FFF;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#409EFF}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#FFF;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:1px solid #E4E7ED;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:solid 1px #E4E7ED}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-avatar,.el-drawer{-webkit-box-sizing:border-box;overflow:hidden}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#C0C4CC}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#409EFF;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#F5F7FA}.el-cascader-node.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;box-sizing:border-box;text-align:center;color:#fff;background:#C0C4CC;width:40px;height:40px;line-height:40px;font-size:14px}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-drawer,.el-drawer__header{display:-webkit-box;display:-ms-flexbox}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}.el-drawer.btt,.el-drawer.ttb,.el-drawer__container{left:0;right:0;width:100%}.el-drawer.ltr,.el-drawer.rtl,.el-drawer__container{top:0;bottom:0;height:100%}@-webkit-keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@-webkit-keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@-webkit-keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@-webkit-keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}@keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}.el-drawer{position:absolute;box-sizing:border-box;background-color:#FFF;display:flex;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);outline:0}.el-drawer.rtl{-webkit-animation:rtl-drawer-out .3s;animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{-webkit-animation:rtl-drawer-in .3s 1ms;animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{-webkit-animation:ltr-drawer-out .3s;animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{-webkit-animation:ltr-drawer-in .3s 1ms;animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{-webkit-animation:ttb-drawer-out .3s;animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{-webkit-animation:ttb-drawer-in .3s 1ms;animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{-webkit-animation:btt-drawer-out .3s;animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{-webkit-animation:btt-drawer-in .3s 1ms;animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__title{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__body>*{-webkit-box-sizing:border-box;box-sizing:border-box}.el-drawer__container{position:relative}.el-drawer-fade-enter-active{-webkit-animation:el-drawer-fade-in .3s;animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-popconfirm__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0} |
| New file |
| | |
| | | // 使用说明:(需要移动的dom,触摸块dom,跟随改变map dom) |
| | | function myDomMove(dom, div, map) { |
| | | this.m = $(dom); |
| | | this.div = $(div); |
| | | this.mapId = $(map); |
| | | this.__xx = null;//鼠标实时位置 |
| | | this.__yy = null; |
| | | this.__sx = null;//鼠标开始位置 |
| | | this.__sy = null; |
| | | this.__dx = null;//dom位置 |
| | | this.__dy = null; |
| | | this.mapH = null;//地图高度 |
| | | this.__wy = null;//屏幕高度 |
| | | this.state = "up";//dom状态默认up |
| | | |
| | | this.getMosePosition = (x, y) => {//获取鼠标位置 |
| | | this.__sx = x; |
| | | this.__sy = y; |
| | | // console.log(this.__sy, '鼠标开始'); |
| | | |
| | | } |
| | | this.getDomPosition = () => {//获取dom位置 |
| | | this.__dx = this.m.offset().left; |
| | | this.__dy = this.m.offset().top; |
| | | this.__wy = document.documentElement.clientHeight; |
| | | // console.log(this.__dy, 'dom'); |
| | | } |
| | | this.getMapHeight = () => {//获取地图高度 |
| | | var that = this; |
| | | this.mapId.css("height", (index, value) => { |
| | | that.mapH = parseFloat(value); |
| | | }) |
| | | // console.log(that.mapH, 'map位置'); |
| | | } |
| | | this.changeDomPosition = (x, y, dy) => {//改变dom位置 |
| | | var that = this; |
| | | // this.mapId.css("height", (index, value) => {//改变地图高度 |
| | | // var h = this.mapH + y; |
| | | // console.log(h); |
| | | // return h ; |
| | | // }) |
| | | this.m.animate({ top: dy + "px" }, 10); |
| | | |
| | | } |
| | | |
| | | |
| | | //begin |
| | | this.followFinger = (map, state = 14) => {//(地图实例,dom状态判断是向上还是向下) |
| | | // console.log('开始跟随手指'); |
| | | var that = this; |
| | | if(state != 14){ |
| | | that.state = state; |
| | | // console.log(that.state); |
| | | } |
| | | that.getDomPosition();//获取dom位置 |
| | | that.getMapHeight();//获取地图高度 |
| | | var once = true; |
| | | that.div.on('touchmove', function (e) {//获取鼠标位置 |
| | | e = e || window.event; |
| | | that.__xx = e.touches[0].clientX; |
| | | that.__yy = e.touches[0].clientY; |
| | | if (once) {//获取第一次点击的位置 |
| | | once = false; |
| | | that.getMosePosition(that.__xx, that.__yy); |
| | | } |
| | | // console.log(that.__yy, '鼠标'); |
| | | var h = that.__yy - that.__sy//鼠标移动距离y |
| | | |
| | | if (that.state == 'down') {//两种模式 |
| | | // console.log(that.state); |
| | | if (h >= 0 && h + that.__dy <= that.__wy - 20) { |
| | | that.changeDomPosition(0, h, h + that.__dy);//改变位置 |
| | | // console.log(that.state,h + that.__dy,112); |
| | | } |
| | | } else if (that.state == 'up') { |
| | | if (h >= -that.__dy && h <= that.__wy - 20) { |
| | | that.changeDomPosition(0, h, h + that.__wy - 20);//改变位置 |
| | | // console.log(that.state,h + that.__wy - 20,112); |
| | | } |
| | | } |
| | | |
| | | }); |
| | | that.div.on('touchend', function () {//抬起重置 |
| | | once = true;//抬起重置鼠标点击位置 |
| | | if (that.state == 'down') {//两种模式 |
| | | var chous = Math.abs(that.__yy - that.__sy) < that.__wy / 8; |
| | | } else if (that.state == 'up') { |
| | | var chous = Math.abs(that.__yy - that.__sy) > that.__wy / 8; |
| | | } |
| | | if (chous) { |
| | | that.changeDomPosition(0, 0, (parseFloat(that.__wy / 10) * 2.999));//改变位置 |
| | | // that.getDomPosition();//抬起获取dom位置/持续停留使用 |
| | | that.state = 'down'; |
| | | $('#map').css("height", (index, value) => {//改变地图高度 |
| | | return '50%'; |
| | | }) |
| | | map.invalidateSize(true);//应用地图高度 |
| | | } else { |
| | | that.changeDomPosition(0, 0, that.__wy - 80);//改变位置 |
| | | // that.getDomPosition();//抬起获取dom位置/持续停留使用 |
| | | that.state = 'up'; |
| | | $('#map').css("height", (index, value) => {//改变地图高度 |
| | | return '100%'; |
| | | }) |
| | | map.invalidateSize(true);//应用地图高度 |
| | | } |
| | | that.getMapHeight();//抬起获取map高度 |
| | | }); |
| | | } |
| | | this.destruction = () => {//初始化销毁 |
| | | this.m = $(dom); |
| | | this.div = $(div); |
| | | this.mapId = $(map); |
| | | this.__xx = null;//鼠标实时位置 |
| | | this.__yy = null; |
| | | this.__sx = null;//鼠标开始位置 |
| | | this.__sy = null; |
| | | this.__dx = null;//dom位置 |
| | | this.__dy = null; |
| | | this.mapH = null;//地图高度 |
| | | this.__wy = null;//屏幕高度 |
| | | this.state = "up";//dom状态默认up |
| | | this.div.off(); |
| | | } |
| | | } |
| | | |
| | | // export default myDomMove; |
| New file |
| | |
| | | var me = new Vue({ |
| | | el: '#mapVue', |
| | | data: { |
| | | map: null,//map |
| | | getdata: null, |
| | | marker: null, |
| | | layuiLayer: null, |
| | | nowIndex: null, |
| | | |
| | | activeName: 'first', |
| | | |
| | | move: null,//存放移动实例 |
| | | |
| | | seedata: '', |
| | | |
| | | nowPosition: '', |
| | | |
| | | shipingPopupShow: false, |
| | | shipingM3u8Url: '', |
| | | resultFeedbackPopupShow: false, |
| | | popupDisplay: "none", |
| | | }, |
| | | methods: { |
| | | getDataList() { |
| | | var that = this; |
| | | var url = 'https://web.byisf.com/api/blade-jfpts/equipment/equipment/listAll'; |
| | | axios.get(url).then((res) => { |
| | | that.getdata = res.data.data; |
| | | // console.log(that.getdata) |
| | | that.beginCome(); |
| | | }) |
| | | }, |
| | | beginCome() { |
| | | // this.getdata = this.getQueryVariable('data');//url解码 |
| | | console.log(this.getdata) |
| | | // this.getdata = [{ |
| | | // jd: 115.91042800000002, |
| | | // wd: 28.68094757898212, |
| | | // state: 0, |
| | | // dtype: 0, |
| | | // size: 300, |
| | | // title: '第一个' |
| | | // }];//url解码 |
| | | this.map = this.beginMap(this.map, this.getdata);//创建并接受map |
| | | this.move = new myDomMove('#seedata', '.title', '#map'); |
| | | // var dy = document.documentElement.clientHeight - 50; |
| | | // $('#seedata').animate({ top: dy + "px" }, 10); |
| | | // $('#map').css("height", (index, value) => {//改变地图高度 |
| | | // return '100%'; |
| | | // // }) |
| | | this.map.invalidateSize(true);//应用地图高度 |
| | | this.move.followFinger(this.map, 'down'); |
| | | }, |
| | | getQueryVariable(variable) { |
| | | var query = window.location.search.substring(1); |
| | | var vars = query.split("&"); |
| | | for (var i = 0; i < vars.length; i++) { |
| | | var pair = vars[i].split("="); |
| | | if (pair[0] == variable) { return JSON.parse(decodeURI(pair[1])); }//解码url 和 JSON |
| | | } |
| | | return (false); |
| | | }, |
| | | beginMap(map, data) { |
| | | var that = this, |
| | | center = [data[0].wd, data[0].jd], |
| | | url = `/api/blade-jfpts/alarm/alarm/APP-getAlarm?id=${data[0].id}`; |
| | | // console.log(center) |
| | | this.nowPosition = center; |
| | | // axios.post(url).then((res) => { |
| | | // // console.log(res) |
| | | // if (res.data.data.length != 0) { |
| | | // var dat = res.data.data[0]; |
| | | // for (var key in dat) { |
| | | // if (dat[key] == null || dat[key] == '') { |
| | | // dat[key] = '暂无' |
| | | // } |
| | | // } |
| | | // this.seedata = dat; |
| | | |
| | | // } else { |
| | | // this.seedata = data[0]; |
| | | // } |
| | | // // console.log(this.seedata, 1524545453) |
| | | // }) |
| | | |
| | | |
| | | var createMap = () => { |
| | | map = L.map('map', { //初始化地图 |
| | | center: center, |
| | | zoom: 12, |
| | | minZoom: 2, |
| | | maxZoom: 17, |
| | | attributionControl: false, //去掉右下角 |
| | | zoomControl: false, //去掉缩放 |
| | | }); |
| | | L.tileLayer( //添加切片图层 |
| | | // "https://webmap-tile.sf-express.com/MapTileService/rt?x={x}&y={y}&z={z}", {//顺丰地图 |
| | | "https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal", {//顺丰地图 |
| | | // "http://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}", { |
| | | |
| | | // subdomains: ["1", "2", "3", "4"], |
| | | // attribution: "高德" |
| | | } |
| | | ).addTo(map); |
| | | } |
| | | createMap(); |
| | | var markers = L.markerClusterGroup(); |
| | | |
| | | var transportIcon = L.Icon.extend({ //图标初始化 |
| | | options: { |
| | | iconSize: [30, 30], // 图标尺寸 |
| | | // iconAnchor: [30, 30], // 图标偏移量 |
| | | // popupAnchor: [-20, -20] // 弹出框偏移量 |
| | | } |
| | | }); |
| | | var carIcon = new transportIcon({ //引入图标 |
| | | iconUrl: './img/gray.png' |
| | | }), |
| | | planeIcon = new transportIcon({ |
| | | iconUrl: './img/green.png' |
| | | }), |
| | | busIcon = new transportIcon({ |
| | | iconUrl: './img/red.png' |
| | | }); |
| | | // console.log(data, 43545343) |
| | | var setData = (a) => {//定义图标 |
| | | marker = L.marker([a.wd, a.jd], { |
| | | icon: planeIcon, |
| | | // icon: a.dtype == 0 ? carIcon : a.dtype == 1 ? planeIcon : a.dtype == 2 ? busIcon : '', |
| | | // title: title, |
| | | myData: {//自定义数据 |
| | | ...a |
| | | } |
| | | }); |
| | | } |
| | | for (var i = 0; i < data.length; i++) { |
| | | var a = data[i]; |
| | | // var title = a.title; |
| | | // if (a.dtype == 0) { |
| | | // setData(a); |
| | | // } else if (a.dtype == 1) { |
| | | // setData(a); |
| | | // } else if (a.dtype == 2) { |
| | | // setData(a); |
| | | // } |
| | | if (a.jd == '' || a.wd == '') { |
| | | console.log('没有坐标', i) |
| | | } else { |
| | | setData(a); |
| | | } |
| | | // marker.bindPopup(title); |
| | | markers.addLayer(marker); |
| | | } |
| | | map.addLayer(markers); |
| | | |
| | | markers.on('click', function (a) { |
| | | // that.drawer = true; |
| | | that.seedata = a.layer.options.myData; |
| | | that.nowPosition = [that.seedata.wd,that.seedata.jd] |
| | | console.log(that.seedata) |
| | | $('#seedata').css('top', ''); |
| | | $('#map').css("height", (index, value) => {//改变地图高度 |
| | | return '50%'; |
| | | }) |
| | | map.invalidateSize(true);//应用地图高度 |
| | | // console.log(a.layer.options.myData); |
| | | that.move.destruction(); |
| | | that.move.followFinger(map, 'down'); |
| | | |
| | | }); |
| | | that.seedata = data[0]; |
| | | this.nowPosition = center; |
| | | // map.on('mousemove', (e) => {//实时显示坐标 |
| | | // let latlng = e.latlng; |
| | | // console.log(latlng);// {lat: 30.59, lng: 114.32} |
| | | // }); |
| | | return map;//抛出map |
| | | }, |
| | | getLocation() { |
| | | // if (navigator.geolocation) { |
| | | // // console.log(navigator.geolocation) |
| | | // navigator.geolocation.getCurrentPosition(onSuccess, onError); |
| | | |
| | | // } else { |
| | | // alert("您的浏览器不支持使用HTML 5来获取地理位置服务"); |
| | | // } |
| | | |
| | | // function onSuccess(position) { |
| | | // console.log('纬度: ' + position.coords.latitude + '\n' + |
| | | // '经度: ' + position.coords.longitude + '\n' + |
| | | // '海拔: ' + position.coords.altitude + '\n' + |
| | | // '水平精度: ' + position.coords.accuracy + '\n' + |
| | | // '垂直精度: ' + position.coords.altitudeAccura) |
| | | // } |
| | | // function onError(error) { |
| | | // switch (error.code) { |
| | | // case error.PERMISSION_DENIED: |
| | | // alert("您拒绝对获取地理位置的请求"); |
| | | // break; |
| | | // case error.POSITION_UNAVAILABLE: |
| | | // alert("位置信息是不可用的"); |
| | | // break; |
| | | // case error.TIMEOUT: |
| | | // alert("请求您的地理位置超时"); |
| | | // break; |
| | | // case error.UNKNOWN_ERROR: |
| | | // alert("未知错误"); |
| | | // break; |
| | | // } |
| | | // } |
| | | // this.map.locate({ |
| | | // setView: true, |
| | | // maxZoom: 16 |
| | | // }); |
| | | // console.log(this.map) |
| | | // this.map.on('locationfound', function (e) { |
| | | // // var radius = e.accuracy / 2; |
| | | // // L.marker(e.latlng).addTo(mapid).bindPopup("你就在这个圈内"); |
| | | // // L.circle(e.latlng, radius).addTo(mapid); |
| | | // console.log(e) |
| | | // }); |
| | | }, |
| | | handleClick(tab, event) { |
| | | // console.log(tab, event); |
| | | }, |
| | | titleClick(){ |
| | | this.map.setView(this.nowPosition, 12); |
| | | }, |
| | | locationMap() {//定位 |
| | | // this.map.setView(this.nowPosition, 12);//定警情位置 |
| | | // this.getLocation(); |
| | | // console.log(wx,12); |
| | | // wx.miniProgram.navigateTo({url: 'pages/workbench/workbench'}) |
| | | }, |
| | | shipingClick(open) {//打开视频 |
| | | if (open) { |
| | | this.openRealVideoBox(this.seedata.serialNumber, this.seedata.channelNumber, this.seedata.deviceNumber, this.seedata.manufacturer); |
| | | } else { |
| | | this.shipingPopupShow = false; |
| | | } |
| | | }, |
| | | resultFeedbackClick() {//结果反馈跳转小程序 |
| | | this.gotoxcx('policeDetails'); |
| | | }, |
| | | openRealVideoBox(serialNumber, channelNumber, deviceNumber, manufacturer) {//获取视频地址 |
| | | var that = this; |
| | | if (manufacturer == "HK") { |
| | | axios |
| | | .get( |
| | | `/api/blade-jfpts/equipment/equipment/selectEquimentPlayInfo?number=${deviceNumber}&bmp=m3u8&manufacturer=${manufacturer}` |
| | | ) |
| | | .then((result) => { |
| | | that.videoSource = result.data.data.address; |
| | | that.shipingM3u8Url = decodeURIComponent(that.videoSource); |
| | | that.shipingPopupShow = true; |
| | | }) |
| | | .ce; |
| | | } else { |
| | | var newAxios = axios.create({ |
| | | baseURL: "https://web.byisf.com:18000", |
| | | withCredentials: false, |
| | | headers: { |
| | | "Content-type": "application/x-www-form-urlencoded", |
| | | }, |
| | | }); |
| | | newAxios |
| | | .post( |
| | | "/api_control", |
| | | {}, |
| | | { |
| | | params: { |
| | | param: JSON.stringify({ PktType: "GetAccessToken" }), |
| | | }, |
| | | } |
| | | ) |
| | | .then((res) => { |
| | | newAxios |
| | | .get( |
| | | `https://web.byisf.com:18000/GetPlayUrl?deviceCode=${serialNumber}&chl=${channelNumber}` |
| | | ) |
| | | .then((result) => { |
| | | that.videoSource = result.data.data.m3u8; |
| | | that.shipingM3u8Url = decodeURIComponent(that.videoSource); |
| | | that.shipingPopupShow = true; |
| | | }); |
| | | }); |
| | | } |
| | | }, |
| | | upData() { |
| | | console.log('上传信息成功') |
| | | }, |
| | | gotoxcx(routs) { |
| | | wx.miniProgram.navigateTo({ |
| | | url: `../poput/workbench/policeDetails/${routs}?id=${this.seedata.id}`, //指定跳转至小程序页面的门路 |
| | | success: function () { |
| | | console.log('success'); //页面跳转胜利的回调函数 |
| | | } |
| | | }); |
| | | } |
| | | |
| | | }, |
| | | created() { |
| | | }, |
| | | mounted() { |
| | | this.getDataList(); |
| | | }, |
| | | wacth: { |
| | | } |
| | | }) |
| New file |
| | |
| | | .marker-cluster-small { |
| | | background-color: rgba(181, 226, 140, 0.6); |
| | | } |
| | | .marker-cluster-small div { |
| | | background-color: rgba(110, 204, 57, 0.6); |
| | | } |
| | | |
| | | .marker-cluster-medium { |
| | | background-color: rgba(241, 211, 87, 0.6); |
| | | } |
| | | .marker-cluster-medium div { |
| | | background-color: rgba(240, 194, 12, 0.6); |
| | | } |
| | | |
| | | .marker-cluster-large { |
| | | background-color: rgba(253, 156, 115, 0.6); |
| | | } |
| | | .marker-cluster-large div { |
| | | background-color: rgba(241, 128, 23, 0.6); |
| | | } |
| | | |
| | | /* IE 6-8 fallback colors */ |
| | | .leaflet-oldie .marker-cluster-small { |
| | | background-color: rgb(181, 226, 140); |
| | | } |
| | | .leaflet-oldie .marker-cluster-small div { |
| | | background-color: rgb(110, 204, 57); |
| | | } |
| | | |
| | | .leaflet-oldie .marker-cluster-medium { |
| | | background-color: rgb(241, 211, 87); |
| | | } |
| | | .leaflet-oldie .marker-cluster-medium div { |
| | | background-color: rgb(240, 194, 12); |
| | | } |
| | | |
| | | .leaflet-oldie .marker-cluster-large { |
| | | background-color: rgb(253, 156, 115); |
| | | } |
| | | .leaflet-oldie .marker-cluster-large div { |
| | | background-color: rgb(241, 128, 23); |
| | | } |
| | | |
| | | .marker-cluster { |
| | | background-clip: padding-box; |
| | | border-radius: 20px; |
| | | } |
| | | .marker-cluster div { |
| | | width: 30px; |
| | | height: 30px; |
| | | margin-left: 5px; |
| | | margin-top: 5px; |
| | | |
| | | text-align: center; |
| | | border-radius: 15px; |
| | | font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif; |
| | | } |
| | | .marker-cluster span { |
| | | line-height: 30px; |
| | | } |
| New file |
| | |
| | | .leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow { |
| | | -webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in; |
| | | -moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in; |
| | | -o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in; |
| | | transition: transform 0.3s ease-out, opacity 0.3s ease-in; |
| | | } |
| | | |
| | | .leaflet-cluster-spider-leg { |
| | | /* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */ |
| | | -webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in; |
| | | -moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in; |
| | | -o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in; |
| | | transition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in; |
| | | } |
| New file |
| | |
| | | /* required styles */ |
| | | |
| | | .leaflet-pane, |
| | | .leaflet-tile, |
| | | .leaflet-marker-icon, |
| | | .leaflet-marker-shadow, |
| | | .leaflet-tile-container, |
| | | .leaflet-pane > svg, |
| | | .leaflet-pane > canvas, |
| | | .leaflet-zoom-box, |
| | | .leaflet-image-layer, |
| | | .leaflet-layer { |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | } |
| | | .leaflet-container { |
| | | overflow: hidden; |
| | | } |
| | | .leaflet-tile, |
| | | .leaflet-marker-icon, |
| | | .leaflet-marker-shadow { |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | user-select: none; |
| | | -webkit-user-drag: none; |
| | | } |
| | | /* Prevents IE11 from highlighting tiles in blue */ |
| | | .leaflet-tile::selection { |
| | | background: transparent; |
| | | } |
| | | /* Safari renders non-retina tile on retina better with this, but Chrome is worse */ |
| | | .leaflet-safari .leaflet-tile { |
| | | image-rendering: -webkit-optimize-contrast; |
| | | } |
| | | /* hack that prevents hw layers "stretching" when loading new tiles */ |
| | | .leaflet-safari .leaflet-tile-container { |
| | | width: 1600px; |
| | | height: 1600px; |
| | | -webkit-transform-origin: 0 0; |
| | | } |
| | | .leaflet-marker-icon, |
| | | .leaflet-marker-shadow { |
| | | display: block; |
| | | } |
| | | /* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ |
| | | /* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ |
| | | .leaflet-container .leaflet-overlay-pane svg, |
| | | .leaflet-container .leaflet-marker-pane img, |
| | | .leaflet-container .leaflet-shadow-pane img, |
| | | .leaflet-container .leaflet-tile-pane img, |
| | | .leaflet-container img.leaflet-image-layer, |
| | | .leaflet-container .leaflet-tile { |
| | | max-width: none !important; |
| | | max-height: none !important; |
| | | } |
| | | |
| | | .leaflet-container.leaflet-touch-zoom { |
| | | -ms-touch-action: pan-x pan-y; |
| | | touch-action: pan-x pan-y; |
| | | } |
| | | .leaflet-container.leaflet-touch-drag { |
| | | -ms-touch-action: pinch-zoom; |
| | | /* Fallback for FF which doesn't support pinch-zoom */ |
| | | touch-action: none; |
| | | touch-action: pinch-zoom; |
| | | } |
| | | .leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { |
| | | -ms-touch-action: none; |
| | | touch-action: none; |
| | | } |
| | | .leaflet-container { |
| | | -webkit-tap-highlight-color: transparent; |
| | | } |
| | | .leaflet-container a { |
| | | -webkit-tap-highlight-color: rgba(51, 181, 229, 0.4); |
| | | } |
| | | .leaflet-tile { |
| | | filter: inherit; |
| | | visibility: hidden; |
| | | } |
| | | .leaflet-tile-loaded { |
| | | visibility: inherit; |
| | | } |
| | | .leaflet-zoom-box { |
| | | width: 0; |
| | | height: 0; |
| | | -moz-box-sizing: border-box; |
| | | box-sizing: border-box; |
| | | z-index: 800; |
| | | } |
| | | /* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ |
| | | .leaflet-overlay-pane svg { |
| | | -moz-user-select: none; |
| | | } |
| | | |
| | | .leaflet-pane { z-index: 400; } |
| | | |
| | | .leaflet-tile-pane { z-index: 200; } |
| | | .leaflet-overlay-pane { z-index: 400; } |
| | | .leaflet-shadow-pane { z-index: 500; } |
| | | .leaflet-marker-pane { z-index: 600; } |
| | | .leaflet-tooltip-pane { z-index: 650; } |
| | | .leaflet-popup-pane { z-index: 700; } |
| | | |
| | | .leaflet-map-pane canvas { z-index: 100; } |
| | | .leaflet-map-pane svg { z-index: 200; } |
| | | |
| | | .leaflet-vml-shape { |
| | | width: 1px; |
| | | height: 1px; |
| | | } |
| | | .lvml { |
| | | behavior: url(#default#VML); |
| | | display: inline-block; |
| | | position: absolute; |
| | | } |
| | | |
| | | |
| | | /* control positioning */ |
| | | |
| | | .leaflet-control { |
| | | position: relative; |
| | | z-index: 800; |
| | | pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ |
| | | pointer-events: auto; |
| | | } |
| | | .leaflet-top, |
| | | .leaflet-bottom { |
| | | position: absolute; |
| | | z-index: 1000; |
| | | pointer-events: none; |
| | | } |
| | | .leaflet-top { |
| | | top: 0; |
| | | } |
| | | .leaflet-right { |
| | | right: 0; |
| | | } |
| | | .leaflet-bottom { |
| | | bottom: 0; |
| | | } |
| | | .leaflet-left { |
| | | left: 0; |
| | | } |
| | | .leaflet-control { |
| | | float: left; |
| | | clear: both; |
| | | } |
| | | .leaflet-right .leaflet-control { |
| | | float: right; |
| | | } |
| | | .leaflet-top .leaflet-control { |
| | | margin-top: 10px; |
| | | } |
| | | .leaflet-bottom .leaflet-control { |
| | | margin-bottom: 10px; |
| | | } |
| | | .leaflet-left .leaflet-control { |
| | | margin-left: 10px; |
| | | } |
| | | .leaflet-right .leaflet-control { |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | |
| | | /* zoom and fade animations */ |
| | | |
| | | .leaflet-fade-anim .leaflet-tile { |
| | | will-change: opacity; |
| | | } |
| | | .leaflet-fade-anim .leaflet-popup { |
| | | opacity: 0; |
| | | -webkit-transition: opacity 0.2s linear; |
| | | -moz-transition: opacity 0.2s linear; |
| | | transition: opacity 0.2s linear; |
| | | } |
| | | .leaflet-fade-anim .leaflet-map-pane .leaflet-popup { |
| | | opacity: 1; |
| | | } |
| | | .leaflet-zoom-animated { |
| | | -webkit-transform-origin: 0 0; |
| | | -ms-transform-origin: 0 0; |
| | | transform-origin: 0 0; |
| | | } |
| | | .leaflet-zoom-anim .leaflet-zoom-animated { |
| | | will-change: transform; |
| | | } |
| | | .leaflet-zoom-anim .leaflet-zoom-animated { |
| | | -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); |
| | | -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); |
| | | transition: transform 0.25s cubic-bezier(0,0,0.25,1); |
| | | } |
| | | .leaflet-zoom-anim .leaflet-tile, |
| | | .leaflet-pan-anim .leaflet-tile { |
| | | -webkit-transition: none; |
| | | -moz-transition: none; |
| | | transition: none; |
| | | } |
| | | |
| | | .leaflet-zoom-anim .leaflet-zoom-hide { |
| | | visibility: hidden; |
| | | } |
| | | |
| | | |
| | | /* cursors */ |
| | | |
| | | .leaflet-interactive { |
| | | cursor: pointer; |
| | | } |
| | | .leaflet-grab { |
| | | cursor: -webkit-grab; |
| | | cursor: -moz-grab; |
| | | cursor: grab; |
| | | } |
| | | .leaflet-crosshair, |
| | | .leaflet-crosshair .leaflet-interactive { |
| | | cursor: crosshair; |
| | | } |
| | | .leaflet-popup-pane, |
| | | .leaflet-control { |
| | | cursor: auto; |
| | | } |
| | | .leaflet-dragging .leaflet-grab, |
| | | .leaflet-dragging .leaflet-grab .leaflet-interactive, |
| | | .leaflet-dragging .leaflet-marker-draggable { |
| | | cursor: move; |
| | | cursor: -webkit-grabbing; |
| | | cursor: -moz-grabbing; |
| | | cursor: grabbing; |
| | | } |
| | | |
| | | /* marker & overlays interactivity */ |
| | | .leaflet-marker-icon, |
| | | .leaflet-marker-shadow, |
| | | .leaflet-image-layer, |
| | | .leaflet-pane > svg path, |
| | | .leaflet-tile-container { |
| | | pointer-events: none; |
| | | } |
| | | |
| | | .leaflet-marker-icon.leaflet-interactive, |
| | | .leaflet-image-layer.leaflet-interactive, |
| | | .leaflet-pane > svg path.leaflet-interactive, |
| | | svg.leaflet-image-layer.leaflet-interactive path { |
| | | pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ |
| | | pointer-events: auto; |
| | | } |
| | | |
| | | /* visual tweaks */ |
| | | |
| | | .leaflet-container { |
| | | background: #ddd; |
| | | outline: 0; |
| | | } |
| | | .leaflet-container a { |
| | | color: #0078A8; |
| | | } |
| | | .leaflet-container a.leaflet-active { |
| | | outline: 2px solid orange; |
| | | } |
| | | .leaflet-zoom-box { |
| | | border: 2px dotted #38f; |
| | | background: rgba(255,255,255,0.5); |
| | | } |
| | | |
| | | |
| | | /* general typography */ |
| | | .leaflet-container { |
| | | font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; |
| | | } |
| | | |
| | | |
| | | /* general toolbar styles */ |
| | | |
| | | .leaflet-bar { |
| | | box-shadow: 0 1px 5px rgba(0,0,0,0.65); |
| | | border-radius: 4px; |
| | | } |
| | | .leaflet-bar a, |
| | | .leaflet-bar a:hover { |
| | | background-color: #fff; |
| | | border-bottom: 1px solid #ccc; |
| | | width: 26px; |
| | | height: 26px; |
| | | line-height: 26px; |
| | | display: block; |
| | | text-align: center; |
| | | text-decoration: none; |
| | | color: black; |
| | | } |
| | | .leaflet-bar a, |
| | | .leaflet-control-layers-toggle { |
| | | background-position: 50% 50%; |
| | | background-repeat: no-repeat; |
| | | display: block; |
| | | } |
| | | .leaflet-bar a:hover { |
| | | background-color: #f4f4f4; |
| | | } |
| | | .leaflet-bar a:first-child { |
| | | border-top-left-radius: 4px; |
| | | border-top-right-radius: 4px; |
| | | } |
| | | .leaflet-bar a:last-child { |
| | | border-bottom-left-radius: 4px; |
| | | border-bottom-right-radius: 4px; |
| | | border-bottom: none; |
| | | } |
| | | .leaflet-bar a.leaflet-disabled { |
| | | cursor: default; |
| | | background-color: #f4f4f4; |
| | | color: #bbb; |
| | | } |
| | | |
| | | .leaflet-touch .leaflet-bar a { |
| | | width: 30px; |
| | | height: 30px; |
| | | line-height: 30px; |
| | | } |
| | | .leaflet-touch .leaflet-bar a:first-child { |
| | | border-top-left-radius: 2px; |
| | | border-top-right-radius: 2px; |
| | | } |
| | | .leaflet-touch .leaflet-bar a:last-child { |
| | | border-bottom-left-radius: 2px; |
| | | border-bottom-right-radius: 2px; |
| | | } |
| | | |
| | | /* zoom control */ |
| | | |
| | | .leaflet-control-zoom-in, |
| | | .leaflet-control-zoom-out { |
| | | font: bold 18px 'Lucida Console', Monaco, monospace; |
| | | text-indent: 1px; |
| | | } |
| | | |
| | | .leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out { |
| | | font-size: 22px; |
| | | } |
| | | |
| | | |
| | | /* layers control */ |
| | | |
| | | .leaflet-control-layers { |
| | | box-shadow: 0 1px 5px rgba(0,0,0,0.4); |
| | | background: #fff; |
| | | border-radius: 5px; |
| | | } |
| | | .leaflet-control-layers-toggle { |
| | | background-image: url(images/layers.png); |
| | | width: 36px; |
| | | height: 36px; |
| | | } |
| | | .leaflet-retina .leaflet-control-layers-toggle { |
| | | background-image: url(images/layers-2x.png); |
| | | background-size: 26px 26px; |
| | | } |
| | | .leaflet-touch .leaflet-control-layers-toggle { |
| | | width: 44px; |
| | | height: 44px; |
| | | } |
| | | .leaflet-control-layers .leaflet-control-layers-list, |
| | | .leaflet-control-layers-expanded .leaflet-control-layers-toggle { |
| | | display: none; |
| | | } |
| | | .leaflet-control-layers-expanded .leaflet-control-layers-list { |
| | | display: block; |
| | | position: relative; |
| | | } |
| | | .leaflet-control-layers-expanded { |
| | | padding: 6px 10px 6px 6px; |
| | | color: #333; |
| | | background: #fff; |
| | | } |
| | | .leaflet-control-layers-scrollbar { |
| | | overflow-y: scroll; |
| | | overflow-x: hidden; |
| | | padding-right: 5px; |
| | | } |
| | | .leaflet-control-layers-selector { |
| | | margin-top: 2px; |
| | | position: relative; |
| | | top: 1px; |
| | | } |
| | | .leaflet-control-layers label { |
| | | display: block; |
| | | } |
| | | .leaflet-control-layers-separator { |
| | | height: 0; |
| | | border-top: 1px solid #ddd; |
| | | margin: 5px -10px 5px -6px; |
| | | } |
| | | |
| | | /* Default icon URLs */ |
| | | .leaflet-default-icon-path { |
| | | background-image: url(images/marker-icon.png); |
| | | } |
| | | |
| | | |
| | | /* attribution and scale controls */ |
| | | |
| | | .leaflet-container .leaflet-control-attribution { |
| | | background: #fff; |
| | | background: rgba(255, 255, 255, 0.7); |
| | | margin: 0; |
| | | } |
| | | .leaflet-control-attribution, |
| | | .leaflet-control-scale-line { |
| | | padding: 0 5px; |
| | | color: #333; |
| | | } |
| | | .leaflet-control-attribution a { |
| | | text-decoration: none; |
| | | } |
| | | .leaflet-control-attribution a:hover { |
| | | text-decoration: underline; |
| | | } |
| | | .leaflet-container .leaflet-control-attribution, |
| | | .leaflet-container .leaflet-control-scale { |
| | | font-size: 11px; |
| | | } |
| | | .leaflet-left .leaflet-control-scale { |
| | | margin-left: 5px; |
| | | } |
| | | .leaflet-bottom .leaflet-control-scale { |
| | | margin-bottom: 5px; |
| | | } |
| | | .leaflet-control-scale-line { |
| | | border: 2px solid #777; |
| | | border-top: none; |
| | | line-height: 1.1; |
| | | padding: 2px 5px 1px; |
| | | font-size: 11px; |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | -moz-box-sizing: border-box; |
| | | box-sizing: border-box; |
| | | |
| | | background: #fff; |
| | | background: rgba(255, 255, 255, 0.5); |
| | | } |
| | | .leaflet-control-scale-line:not(:first-child) { |
| | | border-top: 2px solid #777; |
| | | border-bottom: none; |
| | | margin-top: -2px; |
| | | } |
| | | .leaflet-control-scale-line:not(:first-child):not(:last-child) { |
| | | border-bottom: 2px solid #777; |
| | | } |
| | | |
| | | .leaflet-touch .leaflet-control-attribution, |
| | | .leaflet-touch .leaflet-control-layers, |
| | | .leaflet-touch .leaflet-bar { |
| | | box-shadow: none; |
| | | } |
| | | .leaflet-touch .leaflet-control-layers, |
| | | .leaflet-touch .leaflet-bar { |
| | | border: 2px solid rgba(0,0,0,0.2); |
| | | background-clip: padding-box; |
| | | } |
| | | |
| | | |
| | | /* popup */ |
| | | |
| | | .leaflet-popup { |
| | | position: absolute; |
| | | text-align: center; |
| | | margin-bottom: 20px; |
| | | } |
| | | .leaflet-popup-content-wrapper { |
| | | padding: 1px; |
| | | text-align: left; |
| | | border-radius: 12px; |
| | | } |
| | | .leaflet-popup-content { |
| | | margin: 13px 19px; |
| | | line-height: 1.4; |
| | | } |
| | | .leaflet-popup-content p { |
| | | margin: 18px 0; |
| | | } |
| | | .leaflet-popup-tip-container { |
| | | width: 40px; |
| | | height: 20px; |
| | | position: absolute; |
| | | left: 50%; |
| | | margin-left: -20px; |
| | | overflow: hidden; |
| | | pointer-events: none; |
| | | } |
| | | .leaflet-popup-tip { |
| | | width: 17px; |
| | | height: 17px; |
| | | padding: 1px; |
| | | |
| | | margin: -10px auto 0; |
| | | |
| | | -webkit-transform: rotate(45deg); |
| | | -moz-transform: rotate(45deg); |
| | | -ms-transform: rotate(45deg); |
| | | transform: rotate(45deg); |
| | | } |
| | | .leaflet-popup-content-wrapper, |
| | | .leaflet-popup-tip { |
| | | background: white; |
| | | color: #333; |
| | | box-shadow: 0 3px 14px rgba(0,0,0,0.4); |
| | | } |
| | | .leaflet-container a.leaflet-popup-close-button { |
| | | position: absolute; |
| | | top: 0; |
| | | right: 0; |
| | | padding: 4px 4px 0 0; |
| | | border: none; |
| | | text-align: center; |
| | | width: 18px; |
| | | height: 14px; |
| | | font: 16px/14px Tahoma, Verdana, sans-serif; |
| | | color: #c3c3c3; |
| | | text-decoration: none; |
| | | font-weight: bold; |
| | | background: transparent; |
| | | } |
| | | .leaflet-container a.leaflet-popup-close-button:hover { |
| | | color: #999; |
| | | } |
| | | .leaflet-popup-scrolled { |
| | | overflow: auto; |
| | | border-bottom: 1px solid #ddd; |
| | | border-top: 1px solid #ddd; |
| | | } |
| | | |
| | | .leaflet-oldie .leaflet-popup-content-wrapper { |
| | | -ms-zoom: 1; |
| | | } |
| | | .leaflet-oldie .leaflet-popup-tip { |
| | | width: 24px; |
| | | margin: 0 auto; |
| | | |
| | | -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; |
| | | filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); |
| | | } |
| | | .leaflet-oldie .leaflet-popup-tip-container { |
| | | margin-top: -1px; |
| | | } |
| | | |
| | | .leaflet-oldie .leaflet-control-zoom, |
| | | .leaflet-oldie .leaflet-control-layers, |
| | | .leaflet-oldie .leaflet-popup-content-wrapper, |
| | | .leaflet-oldie .leaflet-popup-tip { |
| | | border: 1px solid #999; |
| | | } |
| | | |
| | | |
| | | /* div icon */ |
| | | |
| | | .leaflet-div-icon { |
| | | background: #fff; |
| | | border: 1px solid #666; |
| | | } |
| | | |
| | | |
| | | /* Tooltip */ |
| | | /* Base styles for the element that has a tooltip */ |
| | | .leaflet-tooltip { |
| | | position: absolute; |
| | | padding: 6px; |
| | | background-color: #fff; |
| | | border: 1px solid #fff; |
| | | border-radius: 3px; |
| | | color: #222; |
| | | white-space: nowrap; |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | pointer-events: none; |
| | | box-shadow: 0 1px 3px rgba(0,0,0,0.4); |
| | | } |
| | | .leaflet-tooltip.leaflet-clickable { |
| | | cursor: pointer; |
| | | pointer-events: auto; |
| | | } |
| | | .leaflet-tooltip-top:before, |
| | | .leaflet-tooltip-bottom:before, |
| | | .leaflet-tooltip-left:before, |
| | | .leaflet-tooltip-right:before { |
| | | position: absolute; |
| | | pointer-events: none; |
| | | border: 6px solid transparent; |
| | | background: transparent; |
| | | content: ""; |
| | | } |
| | | |
| | | /* Directions */ |
| | | |
| | | .leaflet-tooltip-bottom { |
| | | margin-top: 6px; |
| | | } |
| | | .leaflet-tooltip-top { |
| | | margin-top: -6px; |
| | | } |
| | | .leaflet-tooltip-bottom:before, |
| | | .leaflet-tooltip-top:before { |
| | | left: 50%; |
| | | margin-left: -6px; |
| | | } |
| | | .leaflet-tooltip-top:before { |
| | | bottom: 0; |
| | | margin-bottom: -12px; |
| | | border-top-color: #fff; |
| | | } |
| | | .leaflet-tooltip-bottom:before { |
| | | top: 0; |
| | | margin-top: -12px; |
| | | margin-left: -6px; |
| | | border-bottom-color: #fff; |
| | | } |
| | | .leaflet-tooltip-left { |
| | | margin-left: -6px; |
| | | } |
| | | .leaflet-tooltip-right { |
| | | margin-left: 6px; |
| | | } |
| | | .leaflet-tooltip-left:before, |
| | | .leaflet-tooltip-right:before { |
| | | top: 50%; |
| | | margin-top: -6px; |
| | | } |
| | | .leaflet-tooltip-left:before { |
| | | right: 0; |
| | | margin-right: -12px; |
| | | border-left-color: #fff; |
| | | } |
| | | .leaflet-tooltip-right:before { |
| | | left: 0; |
| | | margin-left: -12px; |
| | | border-right-color: #fff; |
| | | } |
| New file |
| | |
| | | /* |
| | | * Leaflet.markercluster 1.5.0+master.499f71c, |
| | | * Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps. |
| | | * https://github.com/Leaflet/Leaflet.markercluster |
| | | * (c) 2012-2017, Dave Leaver, smartrak |
| | | */ |
| | | (function (global, factory) { |
| | | typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : |
| | | typeof define === 'function' && define.amd ? define(['exports'], factory) : |
| | | (global = global || self, factory((global.Leaflet = global.Leaflet || {}, global.Leaflet.markercluster = {}))); |
| | | }(this, function (exports) { 'use strict'; |
| | | |
| | | /* |
| | | * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within |
| | | */ |
| | | |
| | | var MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({ |
| | | |
| | | options: { |
| | | maxClusterRadius: 80, //A cluster will cover at most this many pixels from its center |
| | | iconCreateFunction: null, |
| | | clusterPane: L.Marker.prototype.options.pane, |
| | | |
| | | spiderfyOnMaxZoom: true, |
| | | showCoverageOnHover: true, |
| | | zoomToBoundsOnClick: true, |
| | | singleMarkerMode: false, |
| | | |
| | | disableClusteringAtZoom: null, |
| | | |
| | | // Setting this to false prevents the removal of any clusters outside of the viewpoint, which |
| | | // is the default behaviour for performance reasons. |
| | | removeOutsideVisibleBounds: true, |
| | | |
| | | // Set to false to disable all animations (zoom and spiderfy). |
| | | // If false, option animateAddingMarkers below has no effect. |
| | | // If L.DomUtil.TRANSITION is falsy, this option has no effect. |
| | | animate: true, |
| | | |
| | | //Whether to animate adding markers after adding the MarkerClusterGroup to the map |
| | | // If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains. |
| | | animateAddingMarkers: false, |
| | | |
| | | // Make it possible to provide custom function to calculate spiderfy shape positions |
| | | spiderfyShapePositions: null, |
| | | |
| | | //Increase to increase the distance away that spiderfied markers appear from the center |
| | | spiderfyDistanceMultiplier: 1, |
| | | |
| | | // Make it possible to specify a polyline options on a spider leg |
| | | spiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 }, |
| | | |
| | | // When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts |
| | | chunkedLoading: false, |
| | | chunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback) |
| | | chunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser |
| | | chunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator) |
| | | |
| | | //Options to pass to the L.Polygon constructor |
| | | polygonOptions: {} |
| | | }, |
| | | |
| | | initialize: function (options) { |
| | | L.Util.setOptions(this, options); |
| | | if (!this.options.iconCreateFunction) { |
| | | this.options.iconCreateFunction = this._defaultIconCreateFunction; |
| | | } |
| | | |
| | | this._featureGroup = L.featureGroup(); |
| | | this._featureGroup.addEventParent(this); |
| | | |
| | | this._nonPointGroup = L.featureGroup(); |
| | | this._nonPointGroup.addEventParent(this); |
| | | |
| | | this._inZoomAnimation = 0; |
| | | this._needsClustering = []; |
| | | this._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of |
| | | //The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move |
| | | this._currentShownBounds = null; |
| | | |
| | | this._queue = []; |
| | | |
| | | this._childMarkerEventHandlers = { |
| | | 'dragstart': this._childMarkerDragStart, |
| | | 'move': this._childMarkerMoved, |
| | | 'dragend': this._childMarkerDragEnd, |
| | | }; |
| | | |
| | | // Hook the appropriate animation methods. |
| | | var animate = L.DomUtil.TRANSITION && this.options.animate; |
| | | L.extend(this, animate ? this._withAnimation : this._noAnimation); |
| | | // Remember which MarkerCluster class to instantiate (animated or not). |
| | | this._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated; |
| | | }, |
| | | |
| | | addLayer: function (layer) { |
| | | |
| | | if (layer instanceof L.LayerGroup) { |
| | | return this.addLayers([layer]); |
| | | } |
| | | |
| | | //Don't cluster non point data |
| | | if (!layer.getLatLng) { |
| | | this._nonPointGroup.addLayer(layer); |
| | | this.fire('layeradd', { layer: layer }); |
| | | return this; |
| | | } |
| | | |
| | | if (!this._map) { |
| | | this._needsClustering.push(layer); |
| | | this.fire('layeradd', { layer: layer }); |
| | | return this; |
| | | } |
| | | |
| | | if (this.hasLayer(layer)) { |
| | | return this; |
| | | } |
| | | |
| | | |
| | | //If we have already clustered we'll need to add this one to a cluster |
| | | |
| | | if (this._unspiderfy) { |
| | | this._unspiderfy(); |
| | | } |
| | | |
| | | this._addLayer(layer, this._maxZoom); |
| | | this.fire('layeradd', { layer: layer }); |
| | | |
| | | // Refresh bounds and weighted positions. |
| | | this._topClusterLevel._recalculateBounds(); |
| | | |
| | | this._refreshClustersIcons(); |
| | | |
| | | //Work out what is visible |
| | | var visibleLayer = layer, |
| | | currentZoom = this._zoom; |
| | | if (layer.__parent) { |
| | | while (visibleLayer.__parent._zoom >= currentZoom) { |
| | | visibleLayer = visibleLayer.__parent; |
| | | } |
| | | } |
| | | |
| | | if (this._currentShownBounds.contains(visibleLayer.getLatLng())) { |
| | | if (this.options.animateAddingMarkers) { |
| | | this._animationAddLayer(layer, visibleLayer); |
| | | } else { |
| | | this._animationAddLayerNonAnimated(layer, visibleLayer); |
| | | } |
| | | } |
| | | return this; |
| | | }, |
| | | |
| | | removeLayer: function (layer) { |
| | | |
| | | if (layer instanceof L.LayerGroup) { |
| | | return this.removeLayers([layer]); |
| | | } |
| | | |
| | | //Non point layers |
| | | if (!layer.getLatLng) { |
| | | this._nonPointGroup.removeLayer(layer); |
| | | this.fire('layerremove', { layer: layer }); |
| | | return this; |
| | | } |
| | | |
| | | if (!this._map) { |
| | | if (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) { |
| | | this._needsRemoving.push({ layer: layer, latlng: layer._latlng }); |
| | | } |
| | | this.fire('layerremove', { layer: layer }); |
| | | return this; |
| | | } |
| | | |
| | | if (!layer.__parent) { |
| | | return this; |
| | | } |
| | | |
| | | if (this._unspiderfy) { |
| | | this._unspiderfy(); |
| | | this._unspiderfyLayer(layer); |
| | | } |
| | | |
| | | //Remove the marker from clusters |
| | | this._removeLayer(layer, true); |
| | | this.fire('layerremove', { layer: layer }); |
| | | |
| | | // Refresh bounds and weighted positions. |
| | | this._topClusterLevel._recalculateBounds(); |
| | | |
| | | this._refreshClustersIcons(); |
| | | |
| | | layer.off(this._childMarkerEventHandlers, this); |
| | | |
| | | if (this._featureGroup.hasLayer(layer)) { |
| | | this._featureGroup.removeLayer(layer); |
| | | if (layer.clusterShow) { |
| | | layer.clusterShow(); |
| | | } |
| | | } |
| | | |
| | | return this; |
| | | }, |
| | | |
| | | //Takes an array of markers and adds them in bulk |
| | | addLayers: function (layersArray, skipLayerAddEvent) { |
| | | if (!L.Util.isArray(layersArray)) { |
| | | return this.addLayer(layersArray); |
| | | } |
| | | |
| | | var fg = this._featureGroup, |
| | | npg = this._nonPointGroup, |
| | | chunked = this.options.chunkedLoading, |
| | | chunkInterval = this.options.chunkInterval, |
| | | chunkProgress = this.options.chunkProgress, |
| | | l = layersArray.length, |
| | | offset = 0, |
| | | originalArray = true, |
| | | m; |
| | | |
| | | if (this._map) { |
| | | var started = (new Date()).getTime(); |
| | | var process = L.bind(function () { |
| | | var start = (new Date()).getTime(); |
| | | |
| | | // Make sure to unspiderfy before starting to add some layers |
| | | if (this._map && this._unspiderfy) { |
| | | this._unspiderfy(); |
| | | } |
| | | |
| | | for (; offset < l; offset++) { |
| | | if (chunked && offset % 200 === 0) { |
| | | // every couple hundred markers, instrument the time elapsed since processing started: |
| | | var elapsed = (new Date()).getTime() - start; |
| | | if (elapsed > chunkInterval) { |
| | | break; // been working too hard, time to take a break :-) |
| | | } |
| | | } |
| | | |
| | | m = layersArray[offset]; |
| | | |
| | | // Group of layers, append children to layersArray and skip. |
| | | // Side effects: |
| | | // - Total increases, so chunkProgress ratio jumps backward. |
| | | // - Groups are not included in this group, only their non-group child layers (hasLayer). |
| | | // Changing array length while looping does not affect performance in current browsers: |
| | | // http://jsperf.com/for-loop-changing-length/6 |
| | | if (m instanceof L.LayerGroup) { |
| | | if (originalArray) { |
| | | layersArray = layersArray.slice(); |
| | | originalArray = false; |
| | | } |
| | | this._extractNonGroupLayers(m, layersArray); |
| | | l = layersArray.length; |
| | | continue; |
| | | } |
| | | |
| | | //Not point data, can't be clustered |
| | | if (!m.getLatLng) { |
| | | npg.addLayer(m); |
| | | if (!skipLayerAddEvent) { |
| | | this.fire('layeradd', { layer: m }); |
| | | } |
| | | continue; |
| | | } |
| | | |
| | | if (this.hasLayer(m)) { |
| | | continue; |
| | | } |
| | | |
| | | this._addLayer(m, this._maxZoom); |
| | | if (!skipLayerAddEvent) { |
| | | this.fire('layeradd', { layer: m }); |
| | | } |
| | | |
| | | //If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will |
| | | if (m.__parent) { |
| | | if (m.__parent.getChildCount() === 2) { |
| | | var markers = m.__parent.getAllChildMarkers(), |
| | | otherMarker = markers[0] === m ? markers[1] : markers[0]; |
| | | fg.removeLayer(otherMarker); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (chunkProgress) { |
| | | // report progress and time elapsed: |
| | | chunkProgress(offset, l, (new Date()).getTime() - started); |
| | | } |
| | | |
| | | // Completed processing all markers. |
| | | if (offset === l) { |
| | | |
| | | // Refresh bounds and weighted positions. |
| | | this._topClusterLevel._recalculateBounds(); |
| | | |
| | | this._refreshClustersIcons(); |
| | | |
| | | this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds); |
| | | } else { |
| | | setTimeout(process, this.options.chunkDelay); |
| | | } |
| | | }, this); |
| | | |
| | | process(); |
| | | } else { |
| | | var needsClustering = this._needsClustering; |
| | | |
| | | for (; offset < l; offset++) { |
| | | m = layersArray[offset]; |
| | | |
| | | // Group of layers, append children to layersArray and skip. |
| | | if (m instanceof L.LayerGroup) { |
| | | if (originalArray) { |
| | | layersArray = layersArray.slice(); |
| | | originalArray = false; |
| | | } |
| | | this._extractNonGroupLayers(m, layersArray); |
| | | l = layersArray.length; |
| | | continue; |
| | | } |
| | | |
| | | //Not point data, can't be clustered |
| | | if (!m.getLatLng) { |
| | | npg.addLayer(m); |
| | | continue; |
| | | } |
| | | |
| | | if (this.hasLayer(m)) { |
| | | continue; |
| | | } |
| | | |
| | | needsClustering.push(m); |
| | | } |
| | | } |
| | | return this; |
| | | }, |
| | | |
| | | //Takes an array of markers and removes them in bulk |
| | | removeLayers: function (layersArray) { |
| | | var i, m, |
| | | l = layersArray.length, |
| | | fg = this._featureGroup, |
| | | npg = this._nonPointGroup, |
| | | originalArray = true; |
| | | |
| | | if (!this._map) { |
| | | for (i = 0; i < l; i++) { |
| | | m = layersArray[i]; |
| | | |
| | | // Group of layers, append children to layersArray and skip. |
| | | if (m instanceof L.LayerGroup) { |
| | | if (originalArray) { |
| | | layersArray = layersArray.slice(); |
| | | originalArray = false; |
| | | } |
| | | this._extractNonGroupLayers(m, layersArray); |
| | | l = layersArray.length; |
| | | continue; |
| | | } |
| | | |
| | | this._arraySplice(this._needsClustering, m); |
| | | npg.removeLayer(m); |
| | | if (this.hasLayer(m)) { |
| | | this._needsRemoving.push({ layer: m, latlng: m._latlng }); |
| | | } |
| | | this.fire('layerremove', { layer: m }); |
| | | } |
| | | return this; |
| | | } |
| | | |
| | | if (this._unspiderfy) { |
| | | this._unspiderfy(); |
| | | |
| | | // Work on a copy of the array, so that next loop is not affected. |
| | | var layersArray2 = layersArray.slice(), |
| | | l2 = l; |
| | | for (i = 0; i < l2; i++) { |
| | | m = layersArray2[i]; |
| | | |
| | | // Group of layers, append children to layersArray and skip. |
| | | if (m instanceof L.LayerGroup) { |
| | | this._extractNonGroupLayers(m, layersArray2); |
| | | l2 = layersArray2.length; |
| | | continue; |
| | | } |
| | | |
| | | this._unspiderfyLayer(m); |
| | | } |
| | | } |
| | | |
| | | for (i = 0; i < l; i++) { |
| | | m = layersArray[i]; |
| | | |
| | | // Group of layers, append children to layersArray and skip. |
| | | if (m instanceof L.LayerGroup) { |
| | | if (originalArray) { |
| | | layersArray = layersArray.slice(); |
| | | originalArray = false; |
| | | } |
| | | this._extractNonGroupLayers(m, layersArray); |
| | | l = layersArray.length; |
| | | continue; |
| | | } |
| | | |
| | | if (!m.__parent) { |
| | | npg.removeLayer(m); |
| | | this.fire('layerremove', { layer: m }); |
| | | continue; |
| | | } |
| | | |
| | | this._removeLayer(m, true, true); |
| | | this.fire('layerremove', { layer: m }); |
| | | |
| | | if (fg.hasLayer(m)) { |
| | | fg.removeLayer(m); |
| | | if (m.clusterShow) { |
| | | m.clusterShow(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // Refresh bounds and weighted positions. |
| | | this._topClusterLevel._recalculateBounds(); |
| | | |
| | | this._refreshClustersIcons(); |
| | | |
| | | //Fix up the clusters and markers on the map |
| | | this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds); |
| | | |
| | | return this; |
| | | }, |
| | | |
| | | //Removes all layers from the MarkerClusterGroup |
| | | clearLayers: function () { |
| | | //Need our own special implementation as the LayerGroup one doesn't work for us |
| | | |
| | | //If we aren't on the map (yet), blow away the markers we know of |
| | | if (!this._map) { |
| | | this._needsClustering = []; |
| | | this._needsRemoving = []; |
| | | delete this._gridClusters; |
| | | delete this._gridUnclustered; |
| | | } |
| | | |
| | | if (this._noanimationUnspiderfy) { |
| | | this._noanimationUnspiderfy(); |
| | | } |
| | | |
| | | //Remove all the visible layers |
| | | this._featureGroup.clearLayers(); |
| | | this._nonPointGroup.clearLayers(); |
| | | |
| | | this.eachLayer(function (marker) { |
| | | marker.off(this._childMarkerEventHandlers, this); |
| | | delete marker.__parent; |
| | | }, this); |
| | | |
| | | if (this._map) { |
| | | //Reset _topClusterLevel and the DistanceGrids |
| | | this._generateInitialClusters(); |
| | | } |
| | | |
| | | return this; |
| | | }, |
| | | |
| | | //Override FeatureGroup.getBounds as it doesn't work |
| | | getBounds: function () { |
| | | var bounds = new L.LatLngBounds(); |
| | | |
| | | if (this._topClusterLevel) { |
| | | bounds.extend(this._topClusterLevel._bounds); |
| | | } |
| | | |
| | | for (var i = this._needsClustering.length - 1; i >= 0; i--) { |
| | | bounds.extend(this._needsClustering[i].getLatLng()); |
| | | } |
| | | |
| | | bounds.extend(this._nonPointGroup.getBounds()); |
| | | |
| | | return bounds; |
| | | }, |
| | | |
| | | //Overrides LayerGroup.eachLayer |
| | | eachLayer: function (method, context) { |
| | | var markers = this._needsClustering.slice(), |
| | | needsRemoving = this._needsRemoving, |
| | | thisNeedsRemoving, i, j; |
| | | |
| | | if (this._topClusterLevel) { |
| | | this._topClusterLevel.getAllChildMarkers(markers); |
| | | } |
| | | |
| | | for (i = markers.length - 1; i >= 0; i--) { |
| | | thisNeedsRemoving = true; |
| | | |
| | | for (j = needsRemoving.length - 1; j >= 0; j--) { |
| | | if (needsRemoving[j].layer === markers[i]) { |
| | | thisNeedsRemoving = false; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (thisNeedsRemoving) { |
| | | method.call(context, markers[i]); |
| | | } |
| | | } |
| | | |
| | | this._nonPointGroup.eachLayer(method, context); |
| | | }, |
| | | |
| | | //Overrides LayerGroup.getLayers |
| | | getLayers: function () { |
| | | var layers = []; |
| | | this.eachLayer(function (l) { |
| | | layers.push(l); |
| | | }); |
| | | return layers; |
| | | }, |
| | | |
| | | //Overrides LayerGroup.getLayer, WARNING: Really bad performance |
| | | getLayer: function (id) { |
| | | var result = null; |
| | | |
| | | id = parseInt(id, 10); |
| | | |
| | | this.eachLayer(function (l) { |
| | | if (L.stamp(l) === id) { |
| | | result = l; |
| | | } |
| | | }); |
| | | |
| | | return result; |
| | | }, |
| | | |
| | | //Returns true if the given layer is in this MarkerClusterGroup |
| | | hasLayer: function (layer) { |
| | | if (!layer) { |
| | | return false; |
| | | } |
| | | |
| | | var i, anArray = this._needsClustering; |
| | | |
| | | for (i = anArray.length - 1; i >= 0; i--) { |
| | | if (anArray[i] === layer) { |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | anArray = this._needsRemoving; |
| | | for (i = anArray.length - 1; i >= 0; i--) { |
| | | if (anArray[i].layer === layer) { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | return !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer); |
| | | }, |
| | | |
| | | //Zoom down to show the given layer (spiderfying if necessary) then calls the callback |
| | | zoomToShowLayer: function (layer, callback) { |
| | | |
| | | var map = this._map; |
| | | |
| | | if (typeof callback !== 'function') { |
| | | callback = function () {}; |
| | | } |
| | | |
| | | var showMarker = function () { |
| | | // Assumes that map.hasLayer checks for direct appearance on map, not recursively calling |
| | | // hasLayer on Layer Groups that are on map (typically not calling this MarkerClusterGroup.hasLayer, which would always return true) |
| | | if ((map.hasLayer(layer) || map.hasLayer(layer.__parent)) && !this._inZoomAnimation) { |
| | | this._map.off('moveend', showMarker, this); |
| | | this.off('animationend', showMarker, this); |
| | | |
| | | if (map.hasLayer(layer)) { |
| | | callback(); |
| | | } else if (layer.__parent._icon) { |
| | | this.once('spiderfied', callback, this); |
| | | layer.__parent.spiderfy(); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | if (layer._icon && this._map.getBounds().contains(layer.getLatLng())) { |
| | | //Layer is visible ond on screen, immediate return |
| | | callback(); |
| | | } else if (layer.__parent._zoom < Math.round(this._map._zoom)) { |
| | | //Layer should be visible at this zoom level. It must not be on screen so just pan over to it |
| | | this._map.on('moveend', showMarker, this); |
| | | this._map.panTo(layer.getLatLng()); |
| | | } else { |
| | | this._map.on('moveend', showMarker, this); |
| | | this.on('animationend', showMarker, this); |
| | | layer.__parent.zoomToBounds(); |
| | | } |
| | | }, |
| | | |
| | | //Overrides FeatureGroup.onAdd |
| | | onAdd: function (map) { |
| | | this._map = map; |
| | | var i, l, layer; |
| | | |
| | | if (!isFinite(this._map.getMaxZoom())) { |
| | | throw "Map has no maxZoom specified"; |
| | | } |
| | | |
| | | this._featureGroup.addTo(map); |
| | | this._nonPointGroup.addTo(map); |
| | | |
| | | if (!this._gridClusters) { |
| | | this._generateInitialClusters(); |
| | | } |
| | | |
| | | this._maxLat = map.options.crs.projection.MAX_LATITUDE; |
| | | |
| | | //Restore all the positions as they are in the MCG before removing them |
| | | for (i = 0, l = this._needsRemoving.length; i < l; i++) { |
| | | layer = this._needsRemoving[i]; |
| | | layer.newlatlng = layer.layer._latlng; |
| | | layer.layer._latlng = layer.latlng; |
| | | } |
| | | //Remove them, then restore their new positions |
| | | for (i = 0, l = this._needsRemoving.length; i < l; i++) { |
| | | layer = this._needsRemoving[i]; |
| | | this._removeLayer(layer.layer, true); |
| | | layer.layer._latlng = layer.newlatlng; |
| | | } |
| | | this._needsRemoving = []; |
| | | |
| | | //Remember the current zoom level and bounds |
| | | this._zoom = Math.round(this._map._zoom); |
| | | this._currentShownBounds = this._getExpandedVisibleBounds(); |
| | | |
| | | this._map.on('zoomend', this._zoomEnd, this); |
| | | this._map.on('moveend', this._moveEnd, this); |
| | | |
| | | if (this._spiderfierOnAdd) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely |
| | | this._spiderfierOnAdd(); |
| | | } |
| | | |
| | | this._bindEvents(); |
| | | |
| | | //Actually add our markers to the map: |
| | | l = this._needsClustering; |
| | | this._needsClustering = []; |
| | | this.addLayers(l, true); |
| | | }, |
| | | |
| | | //Overrides FeatureGroup.onRemove |
| | | onRemove: function (map) { |
| | | map.off('zoomend', this._zoomEnd, this); |
| | | map.off('moveend', this._moveEnd, this); |
| | | |
| | | this._unbindEvents(); |
| | | |
| | | //In case we are in a cluster animation |
| | | this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', ''); |
| | | |
| | | if (this._spiderfierOnRemove) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely |
| | | this._spiderfierOnRemove(); |
| | | } |
| | | |
| | | delete this._maxLat; |
| | | |
| | | //Clean up all the layers we added to the map |
| | | this._hideCoverage(); |
| | | this._featureGroup.remove(); |
| | | this._nonPointGroup.remove(); |
| | | |
| | | this._featureGroup.clearLayers(); |
| | | |
| | | this._map = null; |
| | | }, |
| | | |
| | | getVisibleParent: function (marker) { |
| | | var vMarker = marker; |
| | | while (vMarker && !vMarker._icon) { |
| | | vMarker = vMarker.__parent; |
| | | } |
| | | return vMarker || null; |
| | | }, |
| | | |
| | | //Remove the given object from the given array |
| | | _arraySplice: function (anArray, obj) { |
| | | for (var i = anArray.length - 1; i >= 0; i--) { |
| | | if (anArray[i] === obj) { |
| | | anArray.splice(i, 1); |
| | | return true; |
| | | } |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * Removes a marker from all _gridUnclustered zoom levels, starting at the supplied zoom. |
| | | * @param marker to be removed from _gridUnclustered. |
| | | * @param z integer bottom start zoom level (included) |
| | | * @private |
| | | */ |
| | | _removeFromGridUnclustered: function (marker, z) { |
| | | var map = this._map, |
| | | gridUnclustered = this._gridUnclustered, |
| | | minZoom = Math.floor(this._map.getMinZoom()); |
| | | |
| | | for (; z >= minZoom; z--) { |
| | | if (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) { |
| | | break; |
| | | } |
| | | } |
| | | }, |
| | | |
| | | _childMarkerDragStart: function (e) { |
| | | e.target.__dragStart = e.target._latlng; |
| | | }, |
| | | |
| | | _childMarkerMoved: function (e) { |
| | | if (!this._ignoreMove && !e.target.__dragStart) { |
| | | var isPopupOpen = e.target._popup && e.target._popup.isOpen(); |
| | | |
| | | this._moveChild(e.target, e.oldLatLng, e.latlng); |
| | | |
| | | if (isPopupOpen) { |
| | | e.target.openPopup(); |
| | | } |
| | | } |
| | | }, |
| | | |
| | | _moveChild: function (layer, from, to) { |
| | | layer._latlng = from; |
| | | this.removeLayer(layer); |
| | | |
| | | layer._latlng = to; |
| | | this.addLayer(layer); |
| | | }, |
| | | |
| | | _childMarkerDragEnd: function (e) { |
| | | var dragStart = e.target.__dragStart; |
| | | delete e.target.__dragStart; |
| | | if (dragStart) { |
| | | this._moveChild(e.target, dragStart, e.target._latlng); |
| | | } |
| | | }, |
| | | |
| | | |
| | | //Internal function for removing a marker from everything. |
| | | //dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions) |
| | | _removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) { |
| | | var gridClusters = this._gridClusters, |
| | | gridUnclustered = this._gridUnclustered, |
| | | fg = this._featureGroup, |
| | | map = this._map, |
| | | minZoom = Math.floor(this._map.getMinZoom()); |
| | | |
| | | //Remove the marker from distance clusters it might be in |
| | | if (removeFromDistanceGrid) { |
| | | this._removeFromGridUnclustered(marker, this._maxZoom); |
| | | } |
| | | |
| | | //Work our way up the clusters removing them as we go if required |
| | | var cluster = marker.__parent, |
| | | markers = cluster._markers, |
| | | otherMarker; |
| | | |
| | | //Remove the marker from the immediate parents marker list |
| | | this._arraySplice(markers, marker); |
| | | |
| | | while (cluster) { |
| | | cluster._childCount--; |
| | | cluster._boundsNeedUpdate = true; |
| | | |
| | | if (cluster._zoom < minZoom) { |
| | | //Top level, do nothing |
| | | break; |
| | | } else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required |
| | | //We need to push the other marker up to the parent |
| | | otherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0]; |
| | | |
| | | //Update distance grid |
| | | gridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom)); |
| | | gridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom)); |
| | | |
| | | //Move otherMarker up to parent |
| | | this._arraySplice(cluster.__parent._childClusters, cluster); |
| | | cluster.__parent._markers.push(otherMarker); |
| | | otherMarker.__parent = cluster.__parent; |
| | | |
| | | if (cluster._icon) { |
| | | //Cluster is currently on the map, need to put the marker on the map instead |
| | | fg.removeLayer(cluster); |
| | | if (!dontUpdateMap) { |
| | | fg.addLayer(otherMarker); |
| | | } |
| | | } |
| | | } else { |
| | | cluster._iconNeedsUpdate = true; |
| | | } |
| | | |
| | | cluster = cluster.__parent; |
| | | } |
| | | |
| | | delete marker.__parent; |
| | | }, |
| | | |
| | | _isOrIsParent: function (el, oel) { |
| | | while (oel) { |
| | | if (el === oel) { |
| | | return true; |
| | | } |
| | | oel = oel.parentNode; |
| | | } |
| | | return false; |
| | | }, |
| | | |
| | | //Override L.Evented.fire |
| | | fire: function (type, data, propagate) { |
| | | if (data && data.layer instanceof L.MarkerCluster) { |
| | | //Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget) |
| | | if (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) { |
| | | return; |
| | | } |
| | | type = 'cluster' + type; |
| | | } |
| | | |
| | | L.FeatureGroup.prototype.fire.call(this, type, data, propagate); |
| | | }, |
| | | |
| | | //Override L.Evented.listens |
| | | listens: function (type, propagate) { |
| | | return L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate); |
| | | }, |
| | | |
| | | //Default functionality |
| | | _defaultIconCreateFunction: function (cluster) { |
| | | var childCount = cluster.getChildCount(); |
| | | |
| | | var c = ' marker-cluster-'; |
| | | if (childCount < 10) { |
| | | c += 'small'; |
| | | } else if (childCount < 100) { |
| | | c += 'medium'; |
| | | } else { |
| | | c += 'large'; |
| | | } |
| | | |
| | | return new L.DivIcon({ html: '<div><span>' + childCount + '</span></div>', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) }); |
| | | }, |
| | | |
| | | _bindEvents: function () { |
| | | var map = this._map, |
| | | spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom, |
| | | showCoverageOnHover = this.options.showCoverageOnHover, |
| | | zoomToBoundsOnClick = this.options.zoomToBoundsOnClick; |
| | | |
| | | //Zoom on cluster click or spiderfy if we are at the lowest level |
| | | if (spiderfyOnMaxZoom || zoomToBoundsOnClick) { |
| | | this.on('clusterclick', this._zoomOrSpiderfy, this); |
| | | } |
| | | |
| | | //Show convex hull (boundary) polygon on mouse over |
| | | if (showCoverageOnHover) { |
| | | this.on('clustermouseover', this._showCoverage, this); |
| | | this.on('clustermouseout', this._hideCoverage, this); |
| | | map.on('zoomend', this._hideCoverage, this); |
| | | } |
| | | }, |
| | | |
| | | _zoomOrSpiderfy: function (e) { |
| | | var cluster = e.layer, |
| | | bottomCluster = cluster; |
| | | |
| | | while (bottomCluster._childClusters.length === 1) { |
| | | bottomCluster = bottomCluster._childClusters[0]; |
| | | } |
| | | |
| | | if (bottomCluster._zoom === this._maxZoom && |
| | | bottomCluster._childCount === cluster._childCount && |
| | | this.options.spiderfyOnMaxZoom) { |
| | | |
| | | // All child markers are contained in a single cluster from this._maxZoom to this cluster. |
| | | cluster.spiderfy(); |
| | | } else if (this.options.zoomToBoundsOnClick) { |
| | | cluster.zoomToBounds(); |
| | | } |
| | | |
| | | // Focus the map again for keyboard users. |
| | | if (e.originalEvent && e.originalEvent.keyCode === 13) { |
| | | this._map._container.focus(); |
| | | } |
| | | }, |
| | | |
| | | _showCoverage: function (e) { |
| | | var map = this._map; |
| | | if (this._inZoomAnimation) { |
| | | return; |
| | | } |
| | | if (this._shownPolygon) { |
| | | map.removeLayer(this._shownPolygon); |
| | | } |
| | | if (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) { |
| | | this._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions); |
| | | map.addLayer(this._shownPolygon); |
| | | } |
| | | }, |
| | | |
| | | _hideCoverage: function () { |
| | | if (this._shownPolygon) { |
| | | this._map.removeLayer(this._shownPolygon); |
| | | this._shownPolygon = null; |
| | | } |
| | | }, |
| | | |
| | | _unbindEvents: function () { |
| | | var spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom, |
| | | showCoverageOnHover = this.options.showCoverageOnHover, |
| | | zoomToBoundsOnClick = this.options.zoomToBoundsOnClick, |
| | | map = this._map; |
| | | |
| | | if (spiderfyOnMaxZoom || zoomToBoundsOnClick) { |
| | | this.off('clusterclick', this._zoomOrSpiderfy, this); |
| | | } |
| | | if (showCoverageOnHover) { |
| | | this.off('clustermouseover', this._showCoverage, this); |
| | | this.off('clustermouseout', this._hideCoverage, this); |
| | | map.off('zoomend', this._hideCoverage, this); |
| | | } |
| | | }, |
| | | |
| | | _zoomEnd: function () { |
| | | if (!this._map) { //May have been removed from the map by a zoomEnd handler |
| | | return; |
| | | } |
| | | this._mergeSplitClusters(); |
| | | |
| | | this._zoom = Math.round(this._map._zoom); |
| | | this._currentShownBounds = this._getExpandedVisibleBounds(); |
| | | }, |
| | | |
| | | _moveEnd: function () { |
| | | if (this._inZoomAnimation) { |
| | | return; |
| | | } |
| | | |
| | | var newBounds = this._getExpandedVisibleBounds(); |
| | | |
| | | this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, newBounds); |
| | | this._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds); |
| | | |
| | | this._currentShownBounds = newBounds; |
| | | return; |
| | | }, |
| | | |
| | | _generateInitialClusters: function () { |
| | | var maxZoom = Math.ceil(this._map.getMaxZoom()), |
| | | minZoom = Math.floor(this._map.getMinZoom()), |
| | | radius = this.options.maxClusterRadius, |
| | | radiusFn = radius; |
| | | |
| | | //If we just set maxClusterRadius to a single number, we need to create |
| | | //a simple function to return that number. Otherwise, we just have to |
| | | //use the function we've passed in. |
| | | if (typeof radius !== "function") { |
| | | radiusFn = function () { return radius; }; |
| | | } |
| | | |
| | | if (this.options.disableClusteringAtZoom !== null) { |
| | | maxZoom = this.options.disableClusteringAtZoom - 1; |
| | | } |
| | | this._maxZoom = maxZoom; |
| | | this._gridClusters = {}; |
| | | this._gridUnclustered = {}; |
| | | |
| | | //Set up DistanceGrids for each zoom |
| | | for (var zoom = maxZoom; zoom >= minZoom; zoom--) { |
| | | this._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom)); |
| | | this._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom)); |
| | | } |
| | | |
| | | // Instantiate the appropriate L.MarkerCluster class (animated or not). |
| | | this._topClusterLevel = new this._markerCluster(this, minZoom - 1); |
| | | }, |
| | | |
| | | //Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom) |
| | | _addLayer: function (layer, zoom) { |
| | | var gridClusters = this._gridClusters, |
| | | gridUnclustered = this._gridUnclustered, |
| | | minZoom = Math.floor(this._map.getMinZoom()), |
| | | markerPoint, z; |
| | | |
| | | if (this.options.singleMarkerMode) { |
| | | this._overrideMarkerIcon(layer); |
| | | } |
| | | |
| | | layer.on(this._childMarkerEventHandlers, this); |
| | | |
| | | //Find the lowest zoom level to slot this one in |
| | | for (; zoom >= minZoom; zoom--) { |
| | | markerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position |
| | | |
| | | //Try find a cluster close by |
| | | var closest = gridClusters[zoom].getNearObject(markerPoint); |
| | | if (closest) { |
| | | closest._addChild(layer); |
| | | layer.__parent = closest; |
| | | return; |
| | | } |
| | | |
| | | //Try find a marker close by to form a new cluster with |
| | | closest = gridUnclustered[zoom].getNearObject(markerPoint); |
| | | if (closest) { |
| | | var parent = closest.__parent; |
| | | if (parent) { |
| | | this._removeLayer(closest, false); |
| | | } |
| | | |
| | | //Create new cluster with these 2 in it |
| | | |
| | | var newCluster = new this._markerCluster(this, zoom, closest, layer); |
| | | gridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom)); |
| | | closest.__parent = newCluster; |
| | | layer.__parent = newCluster; |
| | | |
| | | //First create any new intermediate parent clusters that don't exist |
| | | var lastParent = newCluster; |
| | | for (z = zoom - 1; z > parent._zoom; z--) { |
| | | lastParent = new this._markerCluster(this, z, lastParent); |
| | | gridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z)); |
| | | } |
| | | parent._addChild(lastParent); |
| | | |
| | | //Remove closest from this zoom level and any above that it is in, replace with newCluster |
| | | this._removeFromGridUnclustered(closest, zoom); |
| | | |
| | | return; |
| | | } |
| | | |
| | | //Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards |
| | | gridUnclustered[zoom].addObject(layer, markerPoint); |
| | | } |
| | | |
| | | //Didn't get in anything, add us to the top |
| | | this._topClusterLevel._addChild(layer); |
| | | layer.__parent = this._topClusterLevel; |
| | | return; |
| | | }, |
| | | |
| | | /** |
| | | * Refreshes the icon of all "dirty" visible clusters. |
| | | * Non-visible "dirty" clusters will be updated when they are added to the map. |
| | | * @private |
| | | */ |
| | | _refreshClustersIcons: function () { |
| | | this._featureGroup.eachLayer(function (c) { |
| | | if (c instanceof L.MarkerCluster && c._iconNeedsUpdate) { |
| | | c._updateIcon(); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | //Enqueue code to fire after the marker expand/contract has happened |
| | | _enqueue: function (fn) { |
| | | this._queue.push(fn); |
| | | if (!this._queueTimeout) { |
| | | this._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300); |
| | | } |
| | | }, |
| | | _processQueue: function () { |
| | | for (var i = 0; i < this._queue.length; i++) { |
| | | this._queue[i].call(this); |
| | | } |
| | | this._queue.length = 0; |
| | | clearTimeout(this._queueTimeout); |
| | | this._queueTimeout = null; |
| | | }, |
| | | |
| | | //Merge and split any existing clusters that are too big or small |
| | | _mergeSplitClusters: function () { |
| | | var mapZoom = Math.round(this._map._zoom); |
| | | |
| | | //In case we are starting to split before the animation finished |
| | | this._processQueue(); |
| | | |
| | | if (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split |
| | | this._animationStart(); |
| | | //Remove clusters now off screen |
| | | this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, this._getExpandedVisibleBounds()); |
| | | |
| | | this._animationZoomIn(this._zoom, mapZoom); |
| | | |
| | | } else if (this._zoom > mapZoom) { //Zoom out, merge |
| | | this._animationStart(); |
| | | |
| | | this._animationZoomOut(this._zoom, mapZoom); |
| | | } else { |
| | | this._moveEnd(); |
| | | } |
| | | }, |
| | | |
| | | //Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan) |
| | | _getExpandedVisibleBounds: function () { |
| | | if (!this.options.removeOutsideVisibleBounds) { |
| | | return this._mapBoundsInfinite; |
| | | } else if (L.Browser.mobile) { |
| | | return this._checkBoundsMaxLat(this._map.getBounds()); |
| | | } |
| | | |
| | | return this._checkBoundsMaxLat(this._map.getBounds().pad(1)); // Padding expands the bounds by its own dimensions but scaled with the given factor. |
| | | }, |
| | | |
| | | /** |
| | | * Expands the latitude to Infinity (or -Infinity) if the input bounds reach the map projection maximum defined latitude |
| | | * (in the case of Web/Spherical Mercator, it is 85.0511287798 / see https://en.wikipedia.org/wiki/Web_Mercator#Formulas). |
| | | * Otherwise, the removeOutsideVisibleBounds option will remove markers beyond that limit, whereas the same markers without |
| | | * this option (or outside MCG) will have their position floored (ceiled) by the projection and rendered at that limit, |
| | | * making the user think that MCG "eats" them and never displays them again. |
| | | * @param bounds L.LatLngBounds |
| | | * @returns {L.LatLngBounds} |
| | | * @private |
| | | */ |
| | | _checkBoundsMaxLat: function (bounds) { |
| | | var maxLat = this._maxLat; |
| | | |
| | | if (maxLat !== undefined) { |
| | | if (bounds.getNorth() >= maxLat) { |
| | | bounds._northEast.lat = Infinity; |
| | | } |
| | | if (bounds.getSouth() <= -maxLat) { |
| | | bounds._southWest.lat = -Infinity; |
| | | } |
| | | } |
| | | |
| | | return bounds; |
| | | }, |
| | | |
| | | //Shared animation code |
| | | _animationAddLayerNonAnimated: function (layer, newCluster) { |
| | | if (newCluster === layer) { |
| | | this._featureGroup.addLayer(layer); |
| | | } else if (newCluster._childCount === 2) { |
| | | newCluster._addToMap(); |
| | | |
| | | var markers = newCluster.getAllChildMarkers(); |
| | | this._featureGroup.removeLayer(markers[0]); |
| | | this._featureGroup.removeLayer(markers[1]); |
| | | } else { |
| | | newCluster._updateIcon(); |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * Extracts individual (i.e. non-group) layers from a Layer Group. |
| | | * @param group to extract layers from. |
| | | * @param output {Array} in which to store the extracted layers. |
| | | * @returns {*|Array} |
| | | * @private |
| | | */ |
| | | _extractNonGroupLayers: function (group, output) { |
| | | var layers = group.getLayers(), |
| | | i = 0, |
| | | layer; |
| | | |
| | | output = output || []; |
| | | |
| | | for (; i < layers.length; i++) { |
| | | layer = layers[i]; |
| | | |
| | | if (layer instanceof L.LayerGroup) { |
| | | this._extractNonGroupLayers(layer, output); |
| | | continue; |
| | | } |
| | | |
| | | output.push(layer); |
| | | } |
| | | |
| | | return output; |
| | | }, |
| | | |
| | | /** |
| | | * Implements the singleMarkerMode option. |
| | | * @param layer Marker to re-style using the Clusters iconCreateFunction. |
| | | * @returns {L.Icon} The newly created icon. |
| | | * @private |
| | | */ |
| | | _overrideMarkerIcon: function (layer) { |
| | | var icon = layer.options.icon = this.options.iconCreateFunction({ |
| | | getChildCount: function () { |
| | | return 1; |
| | | }, |
| | | getAllChildMarkers: function () { |
| | | return [layer]; |
| | | } |
| | | }); |
| | | |
| | | return icon; |
| | | } |
| | | }); |
| | | |
| | | // Constant bounds used in case option "removeOutsideVisibleBounds" is set to false. |
| | | L.MarkerClusterGroup.include({ |
| | | _mapBoundsInfinite: new L.LatLngBounds(new L.LatLng(-Infinity, -Infinity), new L.LatLng(Infinity, Infinity)) |
| | | }); |
| | | |
| | | L.MarkerClusterGroup.include({ |
| | | _noAnimation: { |
| | | //Non Animated versions of everything |
| | | _animationStart: function () { |
| | | //Do nothing... |
| | | }, |
| | | _animationZoomIn: function (previousZoomLevel, newZoomLevel) { |
| | | this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel); |
| | | this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); |
| | | |
| | | //We didn't actually animate, but we use this event to mean "clustering animations have finished" |
| | | this.fire('animationend'); |
| | | }, |
| | | _animationZoomOut: function (previousZoomLevel, newZoomLevel) { |
| | | this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel); |
| | | this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); |
| | | |
| | | //We didn't actually animate, but we use this event to mean "clustering animations have finished" |
| | | this.fire('animationend'); |
| | | }, |
| | | _animationAddLayer: function (layer, newCluster) { |
| | | this._animationAddLayerNonAnimated(layer, newCluster); |
| | | } |
| | | }, |
| | | |
| | | _withAnimation: { |
| | | //Animated versions here |
| | | _animationStart: function () { |
| | | this._map._mapPane.className += ' leaflet-cluster-anim'; |
| | | this._inZoomAnimation++; |
| | | }, |
| | | |
| | | _animationZoomIn: function (previousZoomLevel, newZoomLevel) { |
| | | var bounds = this._getExpandedVisibleBounds(), |
| | | fg = this._featureGroup, |
| | | minZoom = Math.floor(this._map.getMinZoom()), |
| | | i; |
| | | |
| | | this._ignoreMove = true; |
| | | |
| | | //Add all children of current clusters to map and remove those clusters from map |
| | | this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) { |
| | | var startPos = c._latlng, |
| | | markers = c._markers, |
| | | m; |
| | | |
| | | if (!bounds.contains(startPos)) { |
| | | startPos = null; |
| | | } |
| | | |
| | | if (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) { //Immediately add the new child and remove us |
| | | fg.removeLayer(c); |
| | | c._recursivelyAddChildrenToMap(null, newZoomLevel, bounds); |
| | | } else { |
| | | //Fade out old cluster |
| | | c.clusterHide(); |
| | | c._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds); |
| | | } |
| | | |
| | | //Remove all markers that aren't visible any more |
| | | //TODO: Do we actually need to do this on the higher levels too? |
| | | for (i = markers.length - 1; i >= 0; i--) { |
| | | m = markers[i]; |
| | | if (!bounds.contains(m._latlng)) { |
| | | fg.removeLayer(m); |
| | | } |
| | | } |
| | | |
| | | }); |
| | | |
| | | this._forceLayout(); |
| | | |
| | | //Update opacities |
| | | this._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel); |
| | | //TODO Maybe? Update markers in _recursivelyBecomeVisible |
| | | fg.eachLayer(function (n) { |
| | | if (!(n instanceof L.MarkerCluster) && n._icon) { |
| | | n.clusterShow(); |
| | | } |
| | | }); |
| | | |
| | | //update the positions of the just added clusters/markers |
| | | this._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) { |
| | | c._recursivelyRestoreChildPositions(newZoomLevel); |
| | | }); |
| | | |
| | | this._ignoreMove = false; |
| | | |
| | | //Remove the old clusters and close the zoom animation |
| | | this._enqueue(function () { |
| | | //update the positions of the just added clusters/markers |
| | | this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) { |
| | | fg.removeLayer(c); |
| | | c.clusterShow(); |
| | | }); |
| | | |
| | | this._animationEnd(); |
| | | }); |
| | | }, |
| | | |
| | | _animationZoomOut: function (previousZoomLevel, newZoomLevel) { |
| | | this._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel); |
| | | |
| | | //Need to add markers for those that weren't on the map before but are now |
| | | this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); |
| | | //Remove markers that were on the map before but won't be now |
| | | this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel, this._getExpandedVisibleBounds()); |
| | | }, |
| | | |
| | | _animationAddLayer: function (layer, newCluster) { |
| | | var me = this, |
| | | fg = this._featureGroup; |
| | | |
| | | fg.addLayer(layer); |
| | | if (newCluster !== layer) { |
| | | if (newCluster._childCount > 2) { //Was already a cluster |
| | | |
| | | newCluster._updateIcon(); |
| | | this._forceLayout(); |
| | | this._animationStart(); |
| | | |
| | | layer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng())); |
| | | layer.clusterHide(); |
| | | |
| | | this._enqueue(function () { |
| | | fg.removeLayer(layer); |
| | | layer.clusterShow(); |
| | | |
| | | me._animationEnd(); |
| | | }); |
| | | |
| | | } else { //Just became a cluster |
| | | this._forceLayout(); |
| | | |
| | | me._animationStart(); |
| | | me._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._zoom); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | |
| | | // Private methods for animated versions. |
| | | _animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) { |
| | | var bounds = this._getExpandedVisibleBounds(), |
| | | minZoom = Math.floor(this._map.getMinZoom()); |
| | | |
| | | //Animate all of the markers in the clusters to move to their cluster center point |
| | | cluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, minZoom, previousZoomLevel + 1, newZoomLevel); |
| | | |
| | | var me = this; |
| | | |
| | | //Update the opacity (If we immediately set it they won't animate) |
| | | this._forceLayout(); |
| | | cluster._recursivelyBecomeVisible(bounds, newZoomLevel); |
| | | |
| | | //TODO: Maybe use the transition timing stuff to make this more reliable |
| | | //When the animations are done, tidy up |
| | | this._enqueue(function () { |
| | | |
| | | //This cluster stopped being a cluster before the timeout fired |
| | | if (cluster._childCount === 1) { |
| | | var m = cluster._markers[0]; |
| | | //If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it |
| | | this._ignoreMove = true; |
| | | m.setLatLng(m.getLatLng()); |
| | | this._ignoreMove = false; |
| | | if (m.clusterShow) { |
| | | m.clusterShow(); |
| | | } |
| | | } else { |
| | | cluster._recursively(bounds, newZoomLevel, minZoom, function (c) { |
| | | c._recursivelyRemoveChildrenFromMap(bounds, minZoom, previousZoomLevel + 1); |
| | | }); |
| | | } |
| | | me._animationEnd(); |
| | | }); |
| | | }, |
| | | |
| | | _animationEnd: function () { |
| | | if (this._map) { |
| | | this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', ''); |
| | | } |
| | | this._inZoomAnimation--; |
| | | this.fire('animationend'); |
| | | }, |
| | | |
| | | //Force a browser layout of stuff in the map |
| | | // Should apply the current opacity and location to all elements so we can update them again for an animation |
| | | _forceLayout: function () { |
| | | //In my testing this works, infact offsetWidth of any element seems to work. |
| | | //Could loop all this._layers and do this for each _icon if it stops working |
| | | |
| | | L.Util.falseFn(document.body.offsetWidth); |
| | | } |
| | | }); |
| | | |
| | | L.markerClusterGroup = function (options) { |
| | | return new L.MarkerClusterGroup(options); |
| | | }; |
| | | |
| | | var MarkerCluster = L.MarkerCluster = L.Marker.extend({ |
| | | options: L.Icon.prototype.options, |
| | | |
| | | initialize: function (group, zoom, a, b) { |
| | | |
| | | L.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0), |
| | | { icon: this, pane: group.options.clusterPane }); |
| | | |
| | | this._group = group; |
| | | this._zoom = zoom; |
| | | |
| | | this._markers = []; |
| | | this._childClusters = []; |
| | | this._childCount = 0; |
| | | this._iconNeedsUpdate = true; |
| | | this._boundsNeedUpdate = true; |
| | | |
| | | this._bounds = new L.LatLngBounds(); |
| | | |
| | | if (a) { |
| | | this._addChild(a); |
| | | } |
| | | if (b) { |
| | | this._addChild(b); |
| | | } |
| | | }, |
| | | |
| | | //Recursively retrieve all child markers of this cluster |
| | | getAllChildMarkers: function (storageArray, ignoreDraggedMarker) { |
| | | storageArray = storageArray || []; |
| | | |
| | | for (var i = this._childClusters.length - 1; i >= 0; i--) { |
| | | this._childClusters[i].getAllChildMarkers(storageArray); |
| | | } |
| | | |
| | | for (var j = this._markers.length - 1; j >= 0; j--) { |
| | | if (ignoreDraggedMarker && this._markers[j].__dragStart) { |
| | | continue; |
| | | } |
| | | storageArray.push(this._markers[j]); |
| | | } |
| | | |
| | | return storageArray; |
| | | }, |
| | | |
| | | //Returns the count of how many child markers we have |
| | | getChildCount: function () { |
| | | return this._childCount; |
| | | }, |
| | | |
| | | //Zoom to the minimum of showing all of the child markers, or the extents of this cluster |
| | | zoomToBounds: function (fitBoundsOptions) { |
| | | var childClusters = this._childClusters.slice(), |
| | | map = this._group._map, |
| | | boundsZoom = map.getBoundsZoom(this._bounds), |
| | | zoom = this._zoom + 1, |
| | | mapZoom = map.getZoom(), |
| | | i; |
| | | |
| | | //calculate how far we need to zoom down to see all of the markers |
| | | while (childClusters.length > 0 && boundsZoom > zoom) { |
| | | zoom++; |
| | | var newClusters = []; |
| | | for (i = 0; i < childClusters.length; i++) { |
| | | newClusters = newClusters.concat(childClusters[i]._childClusters); |
| | | } |
| | | childClusters = newClusters; |
| | | } |
| | | |
| | | if (boundsZoom > zoom) { |
| | | this._group._map.setView(this._latlng, zoom); |
| | | } else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead |
| | | this._group._map.setView(this._latlng, mapZoom + 1); |
| | | } else { |
| | | this._group._map.fitBounds(this._bounds, fitBoundsOptions); |
| | | } |
| | | }, |
| | | |
| | | getBounds: function () { |
| | | var bounds = new L.LatLngBounds(); |
| | | bounds.extend(this._bounds); |
| | | return bounds; |
| | | }, |
| | | |
| | | _updateIcon: function () { |
| | | this._iconNeedsUpdate = true; |
| | | if (this._icon) { |
| | | this.setIcon(this); |
| | | } |
| | | }, |
| | | |
| | | //Cludge for Icon, we pretend to be an icon for performance |
| | | createIcon: function () { |
| | | if (this._iconNeedsUpdate) { |
| | | this._iconObj = this._group.options.iconCreateFunction(this); |
| | | this._iconNeedsUpdate = false; |
| | | } |
| | | return this._iconObj.createIcon(); |
| | | }, |
| | | createShadow: function () { |
| | | return this._iconObj.createShadow(); |
| | | }, |
| | | |
| | | |
| | | _addChild: function (new1, isNotificationFromChild) { |
| | | |
| | | this._iconNeedsUpdate = true; |
| | | |
| | | this._boundsNeedUpdate = true; |
| | | this._setClusterCenter(new1); |
| | | |
| | | if (new1 instanceof L.MarkerCluster) { |
| | | if (!isNotificationFromChild) { |
| | | this._childClusters.push(new1); |
| | | new1.__parent = this; |
| | | } |
| | | this._childCount += new1._childCount; |
| | | } else { |
| | | if (!isNotificationFromChild) { |
| | | this._markers.push(new1); |
| | | } |
| | | this._childCount++; |
| | | } |
| | | |
| | | if (this.__parent) { |
| | | this.__parent._addChild(new1, true); |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * Makes sure the cluster center is set. If not, uses the child center if it is a cluster, or the marker position. |
| | | * @param child L.MarkerCluster|L.Marker that will be used as cluster center if not defined yet. |
| | | * @private |
| | | */ |
| | | _setClusterCenter: function (child) { |
| | | if (!this._cLatLng) { |
| | | // when clustering, take position of the first point as the cluster center |
| | | this._cLatLng = child._cLatLng || child._latlng; |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * Assigns impossible bounding values so that the next extend entirely determines the new bounds. |
| | | * This method avoids having to trash the previous L.LatLngBounds object and to create a new one, which is much slower for this class. |
| | | * As long as the bounds are not extended, most other methods would probably fail, as they would with bounds initialized but not extended. |
| | | * @private |
| | | */ |
| | | _resetBounds: function () { |
| | | var bounds = this._bounds; |
| | | |
| | | if (bounds._southWest) { |
| | | bounds._southWest.lat = Infinity; |
| | | bounds._southWest.lng = Infinity; |
| | | } |
| | | if (bounds._northEast) { |
| | | bounds._northEast.lat = -Infinity; |
| | | bounds._northEast.lng = -Infinity; |
| | | } |
| | | }, |
| | | |
| | | _recalculateBounds: function () { |
| | | var markers = this._markers, |
| | | childClusters = this._childClusters, |
| | | latSum = 0, |
| | | lngSum = 0, |
| | | totalCount = this._childCount, |
| | | i, child, childLatLng, childCount; |
| | | |
| | | // Case where all markers are removed from the map and we are left with just an empty _topClusterLevel. |
| | | if (totalCount === 0) { |
| | | return; |
| | | } |
| | | |
| | | // Reset rather than creating a new object, for performance. |
| | | this._resetBounds(); |
| | | |
| | | // Child markers. |
| | | for (i = 0; i < markers.length; i++) { |
| | | childLatLng = markers[i]._latlng; |
| | | |
| | | this._bounds.extend(childLatLng); |
| | | |
| | | latSum += childLatLng.lat; |
| | | lngSum += childLatLng.lng; |
| | | } |
| | | |
| | | // Child clusters. |
| | | for (i = 0; i < childClusters.length; i++) { |
| | | child = childClusters[i]; |
| | | |
| | | // Re-compute child bounds and weighted position first if necessary. |
| | | if (child._boundsNeedUpdate) { |
| | | child._recalculateBounds(); |
| | | } |
| | | |
| | | this._bounds.extend(child._bounds); |
| | | |
| | | childLatLng = child._wLatLng; |
| | | childCount = child._childCount; |
| | | |
| | | latSum += childLatLng.lat * childCount; |
| | | lngSum += childLatLng.lng * childCount; |
| | | } |
| | | |
| | | this._latlng = this._wLatLng = new L.LatLng(latSum / totalCount, lngSum / totalCount); |
| | | |
| | | // Reset dirty flag. |
| | | this._boundsNeedUpdate = false; |
| | | }, |
| | | |
| | | //Set our markers position as given and add it to the map |
| | | _addToMap: function (startPos) { |
| | | if (startPos) { |
| | | this._backupLatlng = this._latlng; |
| | | this.setLatLng(startPos); |
| | | } |
| | | this._group._featureGroup.addLayer(this); |
| | | }, |
| | | |
| | | _recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) { |
| | | this._recursively(bounds, this._group._map.getMinZoom(), maxZoom - 1, |
| | | function (c) { |
| | | var markers = c._markers, |
| | | i, m; |
| | | for (i = markers.length - 1; i >= 0; i--) { |
| | | m = markers[i]; |
| | | |
| | | //Only do it if the icon is still on the map |
| | | if (m._icon) { |
| | | m._setPos(center); |
| | | m.clusterHide(); |
| | | } |
| | | } |
| | | }, |
| | | function (c) { |
| | | var childClusters = c._childClusters, |
| | | j, cm; |
| | | for (j = childClusters.length - 1; j >= 0; j--) { |
| | | cm = childClusters[j]; |
| | | if (cm._icon) { |
| | | cm._setPos(center); |
| | | cm.clusterHide(); |
| | | } |
| | | } |
| | | } |
| | | ); |
| | | }, |
| | | |
| | | _recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, mapMinZoom, previousZoomLevel, newZoomLevel) { |
| | | this._recursively(bounds, newZoomLevel, mapMinZoom, |
| | | function (c) { |
| | | c._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel); |
| | | |
| | | //TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be. |
| | | //As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate |
| | | if (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) { |
| | | c.clusterShow(); |
| | | c._recursivelyRemoveChildrenFromMap(bounds, mapMinZoom, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds |
| | | } else { |
| | | c.clusterHide(); |
| | | } |
| | | |
| | | c._addToMap(); |
| | | } |
| | | ); |
| | | }, |
| | | |
| | | _recursivelyBecomeVisible: function (bounds, zoomLevel) { |
| | | this._recursively(bounds, this._group._map.getMinZoom(), zoomLevel, null, function (c) { |
| | | c.clusterShow(); |
| | | }); |
| | | }, |
| | | |
| | | _recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) { |
| | | this._recursively(bounds, this._group._map.getMinZoom() - 1, zoomLevel, |
| | | function (c) { |
| | | if (zoomLevel === c._zoom) { |
| | | return; |
| | | } |
| | | |
| | | //Add our child markers at startPos (so they can be animated out) |
| | | for (var i = c._markers.length - 1; i >= 0; i--) { |
| | | var nm = c._markers[i]; |
| | | |
| | | if (!bounds.contains(nm._latlng)) { |
| | | continue; |
| | | } |
| | | |
| | | if (startPos) { |
| | | nm._backupLatlng = nm.getLatLng(); |
| | | |
| | | nm.setLatLng(startPos); |
| | | if (nm.clusterHide) { |
| | | nm.clusterHide(); |
| | | } |
| | | } |
| | | |
| | | c._group._featureGroup.addLayer(nm); |
| | | } |
| | | }, |
| | | function (c) { |
| | | c._addToMap(startPos); |
| | | } |
| | | ); |
| | | }, |
| | | |
| | | _recursivelyRestoreChildPositions: function (zoomLevel) { |
| | | //Fix positions of child markers |
| | | for (var i = this._markers.length - 1; i >= 0; i--) { |
| | | var nm = this._markers[i]; |
| | | if (nm._backupLatlng) { |
| | | nm.setLatLng(nm._backupLatlng); |
| | | delete nm._backupLatlng; |
| | | } |
| | | } |
| | | |
| | | if (zoomLevel - 1 === this._zoom) { |
| | | //Reposition child clusters |
| | | for (var j = this._childClusters.length - 1; j >= 0; j--) { |
| | | this._childClusters[j]._restorePosition(); |
| | | } |
| | | } else { |
| | | for (var k = this._childClusters.length - 1; k >= 0; k--) { |
| | | this._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel); |
| | | } |
| | | } |
| | | }, |
| | | |
| | | _restorePosition: function () { |
| | | if (this._backupLatlng) { |
| | | this.setLatLng(this._backupLatlng); |
| | | delete this._backupLatlng; |
| | | } |
| | | }, |
| | | |
| | | //exceptBounds: If set, don't remove any markers/clusters in it |
| | | _recursivelyRemoveChildrenFromMap: function (previousBounds, mapMinZoom, zoomLevel, exceptBounds) { |
| | | var m, i; |
| | | this._recursively(previousBounds, mapMinZoom - 1, zoomLevel - 1, |
| | | function (c) { |
| | | //Remove markers at every level |
| | | for (i = c._markers.length - 1; i >= 0; i--) { |
| | | m = c._markers[i]; |
| | | if (!exceptBounds || !exceptBounds.contains(m._latlng)) { |
| | | c._group._featureGroup.removeLayer(m); |
| | | if (m.clusterShow) { |
| | | m.clusterShow(); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | function (c) { |
| | | //Remove child clusters at just the bottom level |
| | | for (i = c._childClusters.length - 1; i >= 0; i--) { |
| | | m = c._childClusters[i]; |
| | | if (!exceptBounds || !exceptBounds.contains(m._latlng)) { |
| | | c._group._featureGroup.removeLayer(m); |
| | | if (m.clusterShow) { |
| | | m.clusterShow(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | ); |
| | | }, |
| | | |
| | | //Run the given functions recursively to this and child clusters |
| | | // boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to |
| | | // zoomLevelToStart: zoom level to start running functions (inclusive) |
| | | // zoomLevelToStop: zoom level to stop running functions (inclusive) |
| | | // runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level |
| | | // runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level |
| | | _recursively: function (boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) { |
| | | var childClusters = this._childClusters, |
| | | zoom = this._zoom, |
| | | i, c; |
| | | |
| | | if (zoomLevelToStart <= zoom) { |
| | | if (runAtEveryLevel) { |
| | | runAtEveryLevel(this); |
| | | } |
| | | if (runAtBottomLevel && zoom === zoomLevelToStop) { |
| | | runAtBottomLevel(this); |
| | | } |
| | | } |
| | | |
| | | if (zoom < zoomLevelToStart || zoom < zoomLevelToStop) { |
| | | for (i = childClusters.length - 1; i >= 0; i--) { |
| | | c = childClusters[i]; |
| | | if (c._boundsNeedUpdate) { |
| | | c._recalculateBounds(); |
| | | } |
| | | if (boundsToApplyTo.intersects(c._bounds)) { |
| | | c._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | |
| | | //Returns true if we are the parent of only one cluster and that cluster is the same as us |
| | | _isSingleParent: function () { |
| | | //Don't need to check this._markers as the rest won't work if there are any |
| | | return this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount; |
| | | } |
| | | }); |
| | | |
| | | /* |
| | | * Extends L.Marker to include two extra methods: clusterHide and clusterShow. |
| | | * |
| | | * They work as setOpacity(0) and setOpacity(1) respectively, but |
| | | * don't overwrite the options.opacity |
| | | * |
| | | */ |
| | | |
| | | L.Marker.include({ |
| | | clusterHide: function () { |
| | | var backup = this.options.opacity; |
| | | this.setOpacity(0); |
| | | this.options.opacity = backup; |
| | | return this; |
| | | }, |
| | | |
| | | clusterShow: function () { |
| | | return this.setOpacity(this.options.opacity); |
| | | } |
| | | }); |
| | | |
| | | L.DistanceGrid = function (cellSize) { |
| | | this._cellSize = cellSize; |
| | | this._sqCellSize = cellSize * cellSize; |
| | | this._grid = {}; |
| | | this._objectPoint = { }; |
| | | }; |
| | | |
| | | L.DistanceGrid.prototype = { |
| | | |
| | | addObject: function (obj, point) { |
| | | var x = this._getCoord(point.x), |
| | | y = this._getCoord(point.y), |
| | | grid = this._grid, |
| | | row = grid[y] = grid[y] || {}, |
| | | cell = row[x] = row[x] || [], |
| | | stamp = L.Util.stamp(obj); |
| | | |
| | | this._objectPoint[stamp] = point; |
| | | |
| | | cell.push(obj); |
| | | }, |
| | | |
| | | updateObject: function (obj, point) { |
| | | this.removeObject(obj); |
| | | this.addObject(obj, point); |
| | | }, |
| | | |
| | | //Returns true if the object was found |
| | | removeObject: function (obj, point) { |
| | | var x = this._getCoord(point.x), |
| | | y = this._getCoord(point.y), |
| | | grid = this._grid, |
| | | row = grid[y] = grid[y] || {}, |
| | | cell = row[x] = row[x] || [], |
| | | i, len; |
| | | |
| | | delete this._objectPoint[L.Util.stamp(obj)]; |
| | | |
| | | for (i = 0, len = cell.length; i < len; i++) { |
| | | if (cell[i] === obj) { |
| | | |
| | | cell.splice(i, 1); |
| | | |
| | | if (len === 1) { |
| | | delete row[x]; |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | }, |
| | | |
| | | eachObject: function (fn, context) { |
| | | var i, j, k, len, row, cell, removed, |
| | | grid = this._grid; |
| | | |
| | | for (i in grid) { |
| | | row = grid[i]; |
| | | |
| | | for (j in row) { |
| | | cell = row[j]; |
| | | |
| | | for (k = 0, len = cell.length; k < len; k++) { |
| | | removed = fn.call(context, cell[k]); |
| | | if (removed) { |
| | | k--; |
| | | len--; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | |
| | | getNearObject: function (point) { |
| | | var x = this._getCoord(point.x), |
| | | y = this._getCoord(point.y), |
| | | i, j, k, row, cell, len, obj, dist, |
| | | objectPoint = this._objectPoint, |
| | | closestDistSq = this._sqCellSize, |
| | | closest = null; |
| | | |
| | | for (i = y - 1; i <= y + 1; i++) { |
| | | row = this._grid[i]; |
| | | if (row) { |
| | | |
| | | for (j = x - 1; j <= x + 1; j++) { |
| | | cell = row[j]; |
| | | if (cell) { |
| | | |
| | | for (k = 0, len = cell.length; k < len; k++) { |
| | | obj = cell[k]; |
| | | dist = this._sqDist(objectPoint[L.Util.stamp(obj)], point); |
| | | if (dist < closestDistSq || |
| | | dist <= closestDistSq && closest === null) { |
| | | closestDistSq = dist; |
| | | closest = obj; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return closest; |
| | | }, |
| | | |
| | | _getCoord: function (x) { |
| | | var coord = Math.floor(x / this._cellSize); |
| | | return isFinite(coord) ? coord : x; |
| | | }, |
| | | |
| | | _sqDist: function (p, p2) { |
| | | var dx = p2.x - p.x, |
| | | dy = p2.y - p.y; |
| | | return dx * dx + dy * dy; |
| | | } |
| | | }; |
| | | |
| | | /* Copyright (c) 2012 the authors listed at the following URL, and/or |
| | | the authors of referenced articles or incorporated external code: |
| | | http://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256 |
| | | |
| | | Permission is hereby granted, free of charge, to any person obtaining |
| | | a copy of this software and associated documentation files (the |
| | | "Software"), to deal in the Software without restriction, including |
| | | without limitation the rights to use, copy, modify, merge, publish, |
| | | distribute, sublicense, and/or sell copies of the Software, and to |
| | | permit persons to whom the Software is furnished to do so, subject to |
| | | the following conditions: |
| | | |
| | | The above copyright notice and this permission notice shall be |
| | | included in all copies or substantial portions of the Software. |
| | | |
| | | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| | | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| | | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
| | | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY |
| | | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
| | | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
| | | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| | | |
| | | Retrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434 |
| | | */ |
| | | |
| | | (function () { |
| | | L.QuickHull = { |
| | | |
| | | /* |
| | | * @param {Object} cpt a point to be measured from the baseline |
| | | * @param {Array} bl the baseline, as represented by a two-element |
| | | * array of latlng objects. |
| | | * @returns {Number} an approximate distance measure |
| | | */ |
| | | getDistant: function (cpt, bl) { |
| | | var vY = bl[1].lat - bl[0].lat, |
| | | vX = bl[0].lng - bl[1].lng; |
| | | return (vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng)); |
| | | }, |
| | | |
| | | /* |
| | | * @param {Array} baseLine a two-element array of latlng objects |
| | | * representing the baseline to project from |
| | | * @param {Array} latLngs an array of latlng objects |
| | | * @returns {Object} the maximum point and all new points to stay |
| | | * in consideration for the hull. |
| | | */ |
| | | findMostDistantPointFromBaseLine: function (baseLine, latLngs) { |
| | | var maxD = 0, |
| | | maxPt = null, |
| | | newPoints = [], |
| | | i, pt, d; |
| | | |
| | | for (i = latLngs.length - 1; i >= 0; i--) { |
| | | pt = latLngs[i]; |
| | | d = this.getDistant(pt, baseLine); |
| | | |
| | | if (d > 0) { |
| | | newPoints.push(pt); |
| | | } else { |
| | | continue; |
| | | } |
| | | |
| | | if (d > maxD) { |
| | | maxD = d; |
| | | maxPt = pt; |
| | | } |
| | | } |
| | | |
| | | return { maxPoint: maxPt, newPoints: newPoints }; |
| | | }, |
| | | |
| | | |
| | | /* |
| | | * Given a baseline, compute the convex hull of latLngs as an array |
| | | * of latLngs. |
| | | * |
| | | * @param {Array} latLngs |
| | | * @returns {Array} |
| | | */ |
| | | buildConvexHull: function (baseLine, latLngs) { |
| | | var convexHullBaseLines = [], |
| | | t = this.findMostDistantPointFromBaseLine(baseLine, latLngs); |
| | | |
| | | if (t.maxPoint) { // if there is still a point "outside" the base line |
| | | convexHullBaseLines = |
| | | convexHullBaseLines.concat( |
| | | this.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints) |
| | | ); |
| | | convexHullBaseLines = |
| | | convexHullBaseLines.concat( |
| | | this.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints) |
| | | ); |
| | | return convexHullBaseLines; |
| | | } else { // if there is no more point "outside" the base line, the current base line is part of the convex hull |
| | | return [baseLine[0]]; |
| | | } |
| | | }, |
| | | |
| | | /* |
| | | * Given an array of latlngs, compute a convex hull as an array |
| | | * of latlngs |
| | | * |
| | | * @param {Array} latLngs |
| | | * @returns {Array} |
| | | */ |
| | | getConvexHull: function (latLngs) { |
| | | // find first baseline |
| | | var maxLat = false, minLat = false, |
| | | maxLng = false, minLng = false, |
| | | maxLatPt = null, minLatPt = null, |
| | | maxLngPt = null, minLngPt = null, |
| | | maxPt = null, minPt = null, |
| | | i; |
| | | |
| | | for (i = latLngs.length - 1; i >= 0; i--) { |
| | | var pt = latLngs[i]; |
| | | if (maxLat === false || pt.lat > maxLat) { |
| | | maxLatPt = pt; |
| | | maxLat = pt.lat; |
| | | } |
| | | if (minLat === false || pt.lat < minLat) { |
| | | minLatPt = pt; |
| | | minLat = pt.lat; |
| | | } |
| | | if (maxLng === false || pt.lng > maxLng) { |
| | | maxLngPt = pt; |
| | | maxLng = pt.lng; |
| | | } |
| | | if (minLng === false || pt.lng < minLng) { |
| | | minLngPt = pt; |
| | | minLng = pt.lng; |
| | | } |
| | | } |
| | | |
| | | if (minLat !== maxLat) { |
| | | minPt = minLatPt; |
| | | maxPt = maxLatPt; |
| | | } else { |
| | | minPt = minLngPt; |
| | | maxPt = maxLngPt; |
| | | } |
| | | |
| | | var ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs), |
| | | this.buildConvexHull([maxPt, minPt], latLngs)); |
| | | return ch; |
| | | } |
| | | }; |
| | | }()); |
| | | |
| | | L.MarkerCluster.include({ |
| | | getConvexHull: function () { |
| | | var childMarkers = this.getAllChildMarkers(), |
| | | points = [], |
| | | p, i; |
| | | |
| | | for (i = childMarkers.length - 1; i >= 0; i--) { |
| | | p = childMarkers[i].getLatLng(); |
| | | points.push(p); |
| | | } |
| | | |
| | | return L.QuickHull.getConvexHull(points); |
| | | } |
| | | }); |
| | | |
| | | //This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet |
| | | //Huge thanks to jawj for implementing it first to make my job easy :-) |
| | | |
| | | L.MarkerCluster.include({ |
| | | |
| | | _2PI: Math.PI * 2, |
| | | _circleFootSeparation: 25, //related to circumference of circle |
| | | _circleStartAngle: 0, |
| | | |
| | | _spiralFootSeparation: 28, //related to size of spiral (experiment!) |
| | | _spiralLengthStart: 11, |
| | | _spiralLengthFactor: 5, |
| | | |
| | | _circleSpiralSwitchover: 9, //show spiral instead of circle from this marker count upwards. |
| | | // 0 -> always spiral; Infinity -> always circle |
| | | |
| | | spiderfy: function () { |
| | | if (this._group._spiderfied === this || this._group._inZoomAnimation) { |
| | | return; |
| | | } |
| | | |
| | | var childMarkers = this.getAllChildMarkers(null, true), |
| | | group = this._group, |
| | | map = group._map, |
| | | center = map.latLngToLayerPoint(this._latlng), |
| | | positions; |
| | | |
| | | this._group._unspiderfy(); |
| | | this._group._spiderfied = this; |
| | | |
| | | //TODO Maybe: childMarkers order by distance to center |
| | | |
| | | if (this._group.options.spiderfyShapePositions) { |
| | | positions = this._group.options.spiderfyShapePositions(childMarkers.length, center); |
| | | } else if (childMarkers.length >= this._circleSpiralSwitchover) { |
| | | positions = this._generatePointsSpiral(childMarkers.length, center); |
| | | } else { |
| | | center.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons. |
| | | positions = this._generatePointsCircle(childMarkers.length, center); |
| | | } |
| | | |
| | | this._animationSpiderfy(childMarkers, positions); |
| | | }, |
| | | |
| | | unspiderfy: function (zoomDetails) { |
| | | /// <param Name="zoomDetails">Argument from zoomanim if being called in a zoom animation or null otherwise</param> |
| | | if (this._group._inZoomAnimation) { |
| | | return; |
| | | } |
| | | this._animationUnspiderfy(zoomDetails); |
| | | |
| | | this._group._spiderfied = null; |
| | | }, |
| | | |
| | | _generatePointsCircle: function (count, centerPt) { |
| | | var circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count), |
| | | legLength = circumference / this._2PI, //radius from circumference |
| | | angleStep = this._2PI / count, |
| | | res = [], |
| | | i, angle; |
| | | |
| | | legLength = Math.max(legLength, 35); // Minimum distance to get outside the cluster icon. |
| | | |
| | | res.length = count; |
| | | |
| | | for (i = 0; i < count; i++) { // Clockwise, like spiral. |
| | | angle = this._circleStartAngle + i * angleStep; |
| | | res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round(); |
| | | } |
| | | |
| | | return res; |
| | | }, |
| | | |
| | | _generatePointsSpiral: function (count, centerPt) { |
| | | var spiderfyDistanceMultiplier = this._group.options.spiderfyDistanceMultiplier, |
| | | legLength = spiderfyDistanceMultiplier * this._spiralLengthStart, |
| | | separation = spiderfyDistanceMultiplier * this._spiralFootSeparation, |
| | | lengthFactor = spiderfyDistanceMultiplier * this._spiralLengthFactor * this._2PI, |
| | | angle = 0, |
| | | res = [], |
| | | i; |
| | | |
| | | res.length = count; |
| | | |
| | | // Higher index, closer position to cluster center. |
| | | for (i = count; i >= 0; i--) { |
| | | // Skip the first position, so that we are already farther from center and we avoid |
| | | // being under the default cluster icon (especially important for Circle Markers). |
| | | if (i < count) { |
| | | res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round(); |
| | | } |
| | | angle += separation / legLength + i * 0.0005; |
| | | legLength += lengthFactor / angle; |
| | | } |
| | | return res; |
| | | }, |
| | | |
| | | _noanimationUnspiderfy: function () { |
| | | var group = this._group, |
| | | map = group._map, |
| | | fg = group._featureGroup, |
| | | childMarkers = this.getAllChildMarkers(null, true), |
| | | m, i; |
| | | |
| | | group._ignoreMove = true; |
| | | |
| | | this.setOpacity(1); |
| | | for (i = childMarkers.length - 1; i >= 0; i--) { |
| | | m = childMarkers[i]; |
| | | |
| | | fg.removeLayer(m); |
| | | |
| | | if (m._preSpiderfyLatlng) { |
| | | m.setLatLng(m._preSpiderfyLatlng); |
| | | delete m._preSpiderfyLatlng; |
| | | } |
| | | if (m.setZIndexOffset) { |
| | | m.setZIndexOffset(0); |
| | | } |
| | | |
| | | if (m._spiderLeg) { |
| | | map.removeLayer(m._spiderLeg); |
| | | delete m._spiderLeg; |
| | | } |
| | | } |
| | | |
| | | group.fire('unspiderfied', { |
| | | cluster: this, |
| | | markers: childMarkers |
| | | }); |
| | | group._ignoreMove = false; |
| | | group._spiderfied = null; |
| | | } |
| | | }); |
| | | |
| | | //Non Animated versions of everything |
| | | L.MarkerClusterNonAnimated = L.MarkerCluster.extend({ |
| | | _animationSpiderfy: function (childMarkers, positions) { |
| | | var group = this._group, |
| | | map = group._map, |
| | | fg = group._featureGroup, |
| | | legOptions = this._group.options.spiderLegPolylineOptions, |
| | | i, m, leg, newPos; |
| | | |
| | | group._ignoreMove = true; |
| | | |
| | | // Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition. |
| | | // The reverse order trick no longer improves performance on modern browsers. |
| | | for (i = 0; i < childMarkers.length; i++) { |
| | | newPos = map.layerPointToLatLng(positions[i]); |
| | | m = childMarkers[i]; |
| | | |
| | | // Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it. |
| | | leg = new L.Polyline([this._latlng, newPos], legOptions); |
| | | map.addLayer(leg); |
| | | m._spiderLeg = leg; |
| | | |
| | | // Now add the marker. |
| | | m._preSpiderfyLatlng = m._latlng; |
| | | m.setLatLng(newPos); |
| | | if (m.setZIndexOffset) { |
| | | m.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING |
| | | } |
| | | |
| | | fg.addLayer(m); |
| | | } |
| | | this.setOpacity(0.3); |
| | | |
| | | group._ignoreMove = false; |
| | | group.fire('spiderfied', { |
| | | cluster: this, |
| | | markers: childMarkers |
| | | }); |
| | | }, |
| | | |
| | | _animationUnspiderfy: function () { |
| | | this._noanimationUnspiderfy(); |
| | | } |
| | | }); |
| | | |
| | | //Animated versions here |
| | | L.MarkerCluster.include({ |
| | | |
| | | _animationSpiderfy: function (childMarkers, positions) { |
| | | var me = this, |
| | | group = this._group, |
| | | map = group._map, |
| | | fg = group._featureGroup, |
| | | thisLayerLatLng = this._latlng, |
| | | thisLayerPos = map.latLngToLayerPoint(thisLayerLatLng), |
| | | svg = L.Path.SVG, |
| | | legOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation. |
| | | finalLegOpacity = legOptions.opacity, |
| | | i, m, leg, legPath, legLength, newPos; |
| | | |
| | | if (finalLegOpacity === undefined) { |
| | | finalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity; |
| | | } |
| | | |
| | | if (svg) { |
| | | // If the initial opacity of the spider leg is not 0 then it appears before the animation starts. |
| | | legOptions.opacity = 0; |
| | | |
| | | // Add the class for CSS transitions. |
| | | legOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg'; |
| | | } else { |
| | | // Make sure we have a defined opacity. |
| | | legOptions.opacity = finalLegOpacity; |
| | | } |
| | | |
| | | group._ignoreMove = true; |
| | | |
| | | // Add markers and spider legs to map, hidden at our center point. |
| | | // Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition. |
| | | // The reverse order trick no longer improves performance on modern browsers. |
| | | for (i = 0; i < childMarkers.length; i++) { |
| | | m = childMarkers[i]; |
| | | |
| | | newPos = map.layerPointToLatLng(positions[i]); |
| | | |
| | | // Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it. |
| | | leg = new L.Polyline([thisLayerLatLng, newPos], legOptions); |
| | | map.addLayer(leg); |
| | | m._spiderLeg = leg; |
| | | |
| | | // Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/ |
| | | // In our case the transition property is declared in the CSS file. |
| | | if (svg) { |
| | | legPath = leg._path; |
| | | legLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox. |
| | | legPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated. |
| | | legPath.style.strokeDashoffset = legLength; |
| | | } |
| | | |
| | | // If it is a marker, add it now and we'll animate it out |
| | | if (m.setZIndexOffset) { |
| | | m.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING |
| | | } |
| | | if (m.clusterHide) { |
| | | m.clusterHide(); |
| | | } |
| | | |
| | | // Vectors just get immediately added |
| | | fg.addLayer(m); |
| | | |
| | | if (m._setPos) { |
| | | m._setPos(thisLayerPos); |
| | | } |
| | | } |
| | | |
| | | group._forceLayout(); |
| | | group._animationStart(); |
| | | |
| | | // Reveal markers and spider legs. |
| | | for (i = childMarkers.length - 1; i >= 0; i--) { |
| | | newPos = map.layerPointToLatLng(positions[i]); |
| | | m = childMarkers[i]; |
| | | |
| | | //Move marker to new position |
| | | m._preSpiderfyLatlng = m._latlng; |
| | | m.setLatLng(newPos); |
| | | |
| | | if (m.clusterShow) { |
| | | m.clusterShow(); |
| | | } |
| | | |
| | | // Animate leg (animation is actually delegated to CSS transition). |
| | | if (svg) { |
| | | leg = m._spiderLeg; |
| | | legPath = leg._path; |
| | | legPath.style.strokeDashoffset = 0; |
| | | //legPath.style.strokeOpacity = finalLegOpacity; |
| | | leg.setStyle({opacity: finalLegOpacity}); |
| | | } |
| | | } |
| | | this.setOpacity(0.3); |
| | | |
| | | group._ignoreMove = false; |
| | | |
| | | setTimeout(function () { |
| | | group._animationEnd(); |
| | | group.fire('spiderfied', { |
| | | cluster: me, |
| | | markers: childMarkers |
| | | }); |
| | | }, 200); |
| | | }, |
| | | |
| | | _animationUnspiderfy: function (zoomDetails) { |
| | | var me = this, |
| | | group = this._group, |
| | | map = group._map, |
| | | fg = group._featureGroup, |
| | | thisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng), |
| | | childMarkers = this.getAllChildMarkers(null, true), |
| | | svg = L.Path.SVG, |
| | | m, i, leg, legPath, legLength, nonAnimatable; |
| | | |
| | | group._ignoreMove = true; |
| | | group._animationStart(); |
| | | |
| | | //Make us visible and bring the child markers back in |
| | | this.setOpacity(1); |
| | | for (i = childMarkers.length - 1; i >= 0; i--) { |
| | | m = childMarkers[i]; |
| | | |
| | | //Marker was added to us after we were spiderfied |
| | | if (!m._preSpiderfyLatlng) { |
| | | continue; |
| | | } |
| | | |
| | | //Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll |
| | | m.closePopup(); |
| | | |
| | | //Fix up the location to the real one |
| | | m.setLatLng(m._preSpiderfyLatlng); |
| | | delete m._preSpiderfyLatlng; |
| | | |
| | | //Hack override the location to be our center |
| | | nonAnimatable = true; |
| | | if (m._setPos) { |
| | | m._setPos(thisLayerPos); |
| | | nonAnimatable = false; |
| | | } |
| | | if (m.clusterHide) { |
| | | m.clusterHide(); |
| | | nonAnimatable = false; |
| | | } |
| | | if (nonAnimatable) { |
| | | fg.removeLayer(m); |
| | | } |
| | | |
| | | // Animate the spider leg back in (animation is actually delegated to CSS transition). |
| | | if (svg) { |
| | | leg = m._spiderLeg; |
| | | legPath = leg._path; |
| | | legLength = legPath.getTotalLength() + 0.1; |
| | | legPath.style.strokeDashoffset = legLength; |
| | | leg.setStyle({opacity: 0}); |
| | | } |
| | | } |
| | | |
| | | group._ignoreMove = false; |
| | | |
| | | setTimeout(function () { |
| | | //If we have only <= one child left then that marker will be shown on the map so don't remove it! |
| | | var stillThereChildCount = 0; |
| | | for (i = childMarkers.length - 1; i >= 0; i--) { |
| | | m = childMarkers[i]; |
| | | if (m._spiderLeg) { |
| | | stillThereChildCount++; |
| | | } |
| | | } |
| | | |
| | | |
| | | for (i = childMarkers.length - 1; i >= 0; i--) { |
| | | m = childMarkers[i]; |
| | | |
| | | if (!m._spiderLeg) { //Has already been unspiderfied |
| | | continue; |
| | | } |
| | | |
| | | if (m.clusterShow) { |
| | | m.clusterShow(); |
| | | } |
| | | if (m.setZIndexOffset) { |
| | | m.setZIndexOffset(0); |
| | | } |
| | | |
| | | if (stillThereChildCount > 1) { |
| | | fg.removeLayer(m); |
| | | } |
| | | |
| | | map.removeLayer(m._spiderLeg); |
| | | delete m._spiderLeg; |
| | | } |
| | | group._animationEnd(); |
| | | group.fire('unspiderfied', { |
| | | cluster: me, |
| | | markers: childMarkers |
| | | }); |
| | | }, 200); |
| | | } |
| | | }); |
| | | |
| | | |
| | | L.MarkerClusterGroup.include({ |
| | | //The MarkerCluster currently spiderfied (if any) |
| | | _spiderfied: null, |
| | | |
| | | unspiderfy: function () { |
| | | this._unspiderfy.apply(this, arguments); |
| | | }, |
| | | |
| | | _spiderfierOnAdd: function () { |
| | | this._map.on('click', this._unspiderfyWrapper, this); |
| | | |
| | | if (this._map.options.zoomAnimation) { |
| | | this._map.on('zoomstart', this._unspiderfyZoomStart, this); |
| | | } |
| | | //Browsers without zoomAnimation or a big zoom don't fire zoomstart |
| | | this._map.on('zoomend', this._noanimationUnspiderfy, this); |
| | | |
| | | if (!L.Browser.touch) { |
| | | this._map.getRenderer(this); |
| | | //Needs to happen in the pageload, not after, or animations don't work in webkit |
| | | // http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements |
| | | //Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable |
| | | } |
| | | }, |
| | | |
| | | _spiderfierOnRemove: function () { |
| | | this._map.off('click', this._unspiderfyWrapper, this); |
| | | this._map.off('zoomstart', this._unspiderfyZoomStart, this); |
| | | this._map.off('zoomanim', this._unspiderfyZoomAnim, this); |
| | | this._map.off('zoomend', this._noanimationUnspiderfy, this); |
| | | |
| | | //Ensure that markers are back where they should be |
| | | // Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane |
| | | this._noanimationUnspiderfy(); |
| | | }, |
| | | |
| | | //On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated) |
| | | //This means we can define the animation they do rather than Markers doing an animation to their actual location |
| | | _unspiderfyZoomStart: function () { |
| | | if (!this._map) { //May have been removed from the map by a zoomEnd handler |
| | | return; |
| | | } |
| | | |
| | | this._map.on('zoomanim', this._unspiderfyZoomAnim, this); |
| | | }, |
| | | |
| | | _unspiderfyZoomAnim: function (zoomDetails) { |
| | | //Wait until the first zoomanim after the user has finished touch-zooming before running the animation |
| | | if (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) { |
| | | return; |
| | | } |
| | | |
| | | this._map.off('zoomanim', this._unspiderfyZoomAnim, this); |
| | | this._unspiderfy(zoomDetails); |
| | | }, |
| | | |
| | | _unspiderfyWrapper: function () { |
| | | /// <summary>_unspiderfy but passes no arguments</summary> |
| | | this._unspiderfy(); |
| | | }, |
| | | |
| | | _unspiderfy: function (zoomDetails) { |
| | | if (this._spiderfied) { |
| | | this._spiderfied.unspiderfy(zoomDetails); |
| | | } |
| | | }, |
| | | |
| | | _noanimationUnspiderfy: function () { |
| | | if (this._spiderfied) { |
| | | this._spiderfied._noanimationUnspiderfy(); |
| | | } |
| | | }, |
| | | |
| | | //If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc |
| | | _unspiderfyLayer: function (layer) { |
| | | if (layer._spiderLeg) { |
| | | this._featureGroup.removeLayer(layer); |
| | | |
| | | if (layer.clusterShow) { |
| | | layer.clusterShow(); |
| | | } |
| | | //Position will be fixed up immediately in _animationUnspiderfy |
| | | if (layer.setZIndexOffset) { |
| | | layer.setZIndexOffset(0); |
| | | } |
| | | |
| | | this._map.removeLayer(layer._spiderLeg); |
| | | delete layer._spiderLeg; |
| | | } |
| | | } |
| | | }); |
| | | |
| | | /** |
| | | * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing |
| | | * markers' icon options and refreshing their icon and their parent clusters |
| | | * accordingly (case where their iconCreateFunction uses data of childMarkers |
| | | * to make up the cluster icon). |
| | | */ |
| | | |
| | | |
| | | L.MarkerClusterGroup.include({ |
| | | /** |
| | | * Updates the icon of all clusters which are parents of the given marker(s). |
| | | * In singleMarkerMode, also updates the given marker(s) icon. |
| | | * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)| |
| | | * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent |
| | | * clusters need to be updated. If not provided, retrieves all child markers of this. |
| | | * @returns {L.MarkerClusterGroup} |
| | | */ |
| | | refreshClusters: function (layers) { |
| | | if (!layers) { |
| | | layers = this._topClusterLevel.getAllChildMarkers(); |
| | | } else if (layers instanceof L.MarkerClusterGroup) { |
| | | layers = layers._topClusterLevel.getAllChildMarkers(); |
| | | } else if (layers instanceof L.LayerGroup) { |
| | | layers = layers._layers; |
| | | } else if (layers instanceof L.MarkerCluster) { |
| | | layers = layers.getAllChildMarkers(); |
| | | } else if (layers instanceof L.Marker) { |
| | | layers = [layers]; |
| | | } // else: must be an Array(L.Marker)|Map(L.Marker) |
| | | this._flagParentsIconsNeedUpdate(layers); |
| | | this._refreshClustersIcons(); |
| | | |
| | | // In case of singleMarkerMode, also re-draw the markers. |
| | | if (this.options.singleMarkerMode) { |
| | | this._refreshSingleMarkerModeMarkers(layers); |
| | | } |
| | | |
| | | return this; |
| | | }, |
| | | |
| | | /** |
| | | * Simply flags all parent clusters of the given markers as having a "dirty" icon. |
| | | * @param layers Array(L.Marker)|Map(L.Marker) list of markers. |
| | | * @private |
| | | */ |
| | | _flagParentsIconsNeedUpdate: function (layers) { |
| | | var id, parent; |
| | | |
| | | // Assumes layers is an Array or an Object whose prototype is non-enumerable. |
| | | for (id in layers) { |
| | | // Flag parent clusters' icon as "dirty", all the way up. |
| | | // Dumb process that flags multiple times upper parents, but still |
| | | // much more efficient than trying to be smart and make short lists, |
| | | // at least in the case of a hierarchy following a power law: |
| | | // http://jsperf.com/flag-nodes-in-power-hierarchy/2 |
| | | parent = layers[id].__parent; |
| | | while (parent) { |
| | | parent._iconNeedsUpdate = true; |
| | | parent = parent.__parent; |
| | | } |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * Re-draws the icon of the supplied markers. |
| | | * To be used in singleMarkerMode only. |
| | | * @param layers Array(L.Marker)|Map(L.Marker) list of markers. |
| | | * @private |
| | | */ |
| | | _refreshSingleMarkerModeMarkers: function (layers) { |
| | | var id, layer; |
| | | |
| | | for (id in layers) { |
| | | layer = layers[id]; |
| | | |
| | | // Make sure we do not override markers that do not belong to THIS group. |
| | | if (this.hasLayer(layer)) { |
| | | // Need to re-create the icon first, then re-draw the marker. |
| | | layer.setIcon(this._overrideMarkerIcon(layer)); |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | |
| | | L.Marker.include({ |
| | | /** |
| | | * Updates the given options in the marker's icon and refreshes the marker. |
| | | * @param options map object of icon options. |
| | | * @param directlyRefreshClusters boolean (optional) true to trigger |
| | | * MCG.refreshClustersOf() right away with this single marker. |
| | | * @returns {L.Marker} |
| | | */ |
| | | refreshIconOptions: function (options, directlyRefreshClusters) { |
| | | var icon = this.options.icon; |
| | | |
| | | L.setOptions(icon, options); |
| | | |
| | | this.setIcon(icon); |
| | | |
| | | // Shortcut to refresh the associated MCG clusters right away. |
| | | // To be used when refreshing a single marker. |
| | | // Otherwise, better use MCG.refreshClusters() once at the end with |
| | | // the list of modified markers. |
| | | if (directlyRefreshClusters && this.__parent) { |
| | | this.__parent._group.refreshClusters(this); |
| | | } |
| | | |
| | | return this; |
| | | } |
| | | }); |
| | | |
| | | exports.MarkerClusterGroup = MarkerClusterGroup; |
| | | exports.MarkerCluster = MarkerCluster; |
| | | |
| | | Object.defineProperty(exports, '__esModule', { value: true }); |
| | | |
| | | })); |
| | | //# sourceMappingURL=leaflet.markercluster-src.js.map |
| New file |
| | |
| | | (function (factory) { |
| | | var L, proj4; |
| | | if (typeof define === 'function' && define.amd) { |
| | | // AMD |
| | | define(['leaflet', 'proj4'], factory); |
| | | } else if (typeof module === 'object' && typeof module.exports === "object") { |
| | | // Node/CommonJS |
| | | L = require('leaflet'); |
| | | proj4 = require('proj4'); |
| | | module.exports = factory(L, proj4); |
| | | } else { |
| | | // Browser globals |
| | | if (typeof window.L === 'undefined' || typeof window.proj4 === 'undefined') |
| | | throw 'Leaflet and proj4 must be loaded first'; |
| | | factory(window.L, window.proj4); |
| | | } |
| | | }(function (L, proj4) { |
| | | |
| | | L.Proj = {}; |
| | | |
| | | L.Proj._isProj4Obj = function(a) { |
| | | return (typeof a.inverse !== 'undefined' && |
| | | typeof a.forward !== 'undefined'); |
| | | }; |
| | | |
| | | L.Proj.Projection = L.Class.extend({ |
| | | initialize: function(code, def, bounds) { |
| | | var isP4 = L.Proj._isProj4Obj(code); |
| | | this._proj = isP4 ? code : this._projFromCodeDef(code, def); |
| | | this.bounds = isP4 ? def : bounds; |
| | | }, |
| | | |
| | | project: function (latlng) { |
| | | var point = this._proj.forward([latlng.lng, latlng.lat]); |
| | | return new L.Point(point[0], point[1]); |
| | | }, |
| | | |
| | | unproject: function (point, unbounded) { |
| | | var point2 = this._proj.inverse([point.x, point.y]); |
| | | return new L.LatLng(point2[1], point2[0], unbounded); |
| | | }, |
| | | |
| | | _projFromCodeDef: function(code, def) { |
| | | if (def) { |
| | | proj4.defs(code, def); |
| | | } else if (proj4.defs[code] === undefined) { |
| | | var urn = code.split(':'); |
| | | if (urn.length > 3) { |
| | | code = urn[urn.length - 3] + ':' + urn[urn.length - 1]; |
| | | } |
| | | if (proj4.defs[code] === undefined) { |
| | | throw 'No projection definition for code ' + code; |
| | | } |
| | | } |
| | | |
| | | return proj4(code); |
| | | } |
| | | }); |
| | | |
| | | L.Proj.CRS = L.Class.extend({ |
| | | includes: L.CRS, |
| | | |
| | | options: { |
| | | transformation: new L.Transformation(1, 0, -1, 0) |
| | | }, |
| | | |
| | | initialize: function(a, b, c) { |
| | | var code, |
| | | proj, |
| | | def, |
| | | options; |
| | | |
| | | if (L.Proj._isProj4Obj(a)) { |
| | | proj = a; |
| | | code = proj.srsCode; |
| | | options = b || {}; |
| | | |
| | | this.projection = new L.Proj.Projection(proj, options.bounds); |
| | | } else { |
| | | code = a; |
| | | def = b; |
| | | options = c || {}; |
| | | this.projection = new L.Proj.Projection(code, def, options.bounds); |
| | | } |
| | | |
| | | L.Util.setOptions(this, options); |
| | | this.code = code; |
| | | this.transformation = this.options.transformation; |
| | | |
| | | if (this.options.origin) { |
| | | this.transformation = |
| | | new L.Transformation(1, -this.options.origin[0], |
| | | -1, this.options.origin[1]); |
| | | } |
| | | |
| | | if (this.options.scales) { |
| | | this._scales = this.options.scales; |
| | | } else if (this.options.resolutions) { |
| | | this._scales = []; |
| | | for (var i = this.options.resolutions.length - 1; i >= 0; i--) { |
| | | if (this.options.resolutions[i]) { |
| | | this._scales[i] = 1 / this.options.resolutions[i]; |
| | | } |
| | | } |
| | | } |
| | | |
| | | this.infinite = !this.options.bounds; |
| | | |
| | | }, |
| | | |
| | | scale: function(zoom) { |
| | | var iZoom = Math.floor(zoom), |
| | | baseScale, |
| | | nextScale, |
| | | scaleDiff, |
| | | zDiff; |
| | | if (zoom === iZoom) { |
| | | return this._scales[zoom]; |
| | | } else { |
| | | // Non-integer zoom, interpolate |
| | | baseScale = this._scales[iZoom]; |
| | | nextScale = this._scales[iZoom + 1]; |
| | | scaleDiff = nextScale - baseScale; |
| | | zDiff = (zoom - iZoom); |
| | | return baseScale + scaleDiff * zDiff; |
| | | } |
| | | }, |
| | | |
| | | zoom: function(scale) { |
| | | // Find closest number in this._scales, down |
| | | var downScale = this._closestElement(this._scales, scale), |
| | | downZoom = this._scales.indexOf(downScale), |
| | | nextScale, |
| | | nextZoom, |
| | | scaleDiff; |
| | | // Check if scale is downScale => return array index |
| | | if (scale === downScale) { |
| | | return downZoom; |
| | | } |
| | | // Interpolate |
| | | nextZoom = downZoom + 1; |
| | | nextScale = this._scales[nextZoom]; |
| | | if (nextScale === undefined) { |
| | | return Infinity; |
| | | } |
| | | scaleDiff = nextScale - downScale; |
| | | return (scale - downScale) / scaleDiff + downZoom; |
| | | }, |
| | | |
| | | distance: L.CRS.Earth.distance, |
| | | |
| | | R: L.CRS.Earth.R, |
| | | |
| | | /* Get the closest lowest element in an array */ |
| | | _closestElement: function(array, element) { |
| | | var low; |
| | | for (var i = array.length; i--;) { |
| | | if (array[i] <= element && (low === undefined || low < array[i])) { |
| | | low = array[i]; |
| | | } |
| | | } |
| | | return low; |
| | | } |
| | | }); |
| | | |
| | | L.Proj.GeoJSON = L.GeoJSON.extend({ |
| | | initialize: function(geojson, options) { |
| | | this._callLevel = 0; |
| | | L.GeoJSON.prototype.initialize.call(this, geojson, options); |
| | | }, |
| | | |
| | | addData: function(geojson) { |
| | | var crs; |
| | | |
| | | if (geojson) { |
| | | if (geojson.crs && geojson.crs.type === 'name') { |
| | | crs = new L.Proj.CRS(geojson.crs.properties.name); |
| | | } else if (geojson.crs && geojson.crs.type) { |
| | | crs = new L.Proj.CRS(geojson.crs.type + ':' + geojson.crs.properties.code); |
| | | } |
| | | |
| | | if (crs !== undefined) { |
| | | this.options.coordsToLatLng = function(coords) { |
| | | var point = L.point(coords[0], coords[1]); |
| | | return crs.projection.unproject(point); |
| | | }; |
| | | } |
| | | } |
| | | |
| | | // Base class' addData might call us recursively, but |
| | | // CRS shouldn't be cleared in that case, since CRS applies |
| | | // to the whole GeoJSON, inluding sub-features. |
| | | this._callLevel++; |
| | | try { |
| | | L.GeoJSON.prototype.addData.call(this, geojson); |
| | | } finally { |
| | | this._callLevel--; |
| | | if (this._callLevel === 0) { |
| | | delete this.options.coordsToLatLng; |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | |
| | | L.Proj.geoJson = function(geojson, options) { |
| | | return new L.Proj.GeoJSON(geojson, options); |
| | | }; |
| | | |
| | | L.Proj.ImageOverlay = L.ImageOverlay.extend({ |
| | | initialize: function (url, bounds, options) { |
| | | L.ImageOverlay.prototype.initialize.call(this, url, null, options); |
| | | this._projectedBounds = bounds; |
| | | }, |
| | | |
| | | // Danger ahead: Overriding internal methods in Leaflet. |
| | | // Decided to do this rather than making a copy of L.ImageOverlay |
| | | // and doing very tiny modifications to it. |
| | | // Future will tell if this was wise or not. |
| | | _animateZoom: function (event) { |
| | | var scale = this._map.getZoomScale(event.zoom); |
| | | var northWest = L.point(this._projectedBounds.min.x, this._projectedBounds.max.y); |
| | | var offset = this._projectedToNewLayerPoint(northWest, event.zoom, event.center); |
| | | |
| | | L.DomUtil.setTransform(this._image, offset, scale); |
| | | }, |
| | | |
| | | _reset: function () { |
| | | var zoom = this._map.getZoom(); |
| | | var pixelOrigin = this._map.getPixelOrigin(); |
| | | var bounds = L.bounds( |
| | | this._transform(this._projectedBounds.min, zoom)._subtract(pixelOrigin), |
| | | this._transform(this._projectedBounds.max, zoom)._subtract(pixelOrigin) |
| | | ); |
| | | var size = bounds.getSize(); |
| | | |
| | | L.DomUtil.setPosition(this._image, bounds.min); |
| | | this._image.style.width = size.x + 'px'; |
| | | this._image.style.height = size.y + 'px'; |
| | | }, |
| | | |
| | | _projectedToNewLayerPoint: function (point, zoom, center) { |
| | | var viewHalf = this._map.getSize()._divideBy(2); |
| | | var newTopLeft = this._map.project(center, zoom)._subtract(viewHalf)._round(); |
| | | var topLeft = newTopLeft.add(this._map._getMapPanePos()); |
| | | |
| | | return this._transform(point, zoom)._subtract(topLeft); |
| | | }, |
| | | |
| | | _transform: function (point, zoom) { |
| | | var crs = this._map.options.crs; |
| | | var transformation = crs.transformation; |
| | | var scale = crs.scale(zoom); |
| | | |
| | | return transformation.transform(point, scale); |
| | | } |
| | | }); |
| | | |
| | | L.Proj.imageOverlay = function (url, bounds, options) { |
| | | return new L.Proj.ImageOverlay(url, bounds, options); |
| | | }; |
| | | |
| | | return L.Proj; |
| | | })); |
| New file |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | |
| | | <head> |
| | | <meta charset="utf-8" /> |
| | | <title>popup</title> |
| | | <!-- Vue --> |
| | | <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script> |
| | | </head> |
| | | |
| | | <body> |
| | | <div id="popup"> |
| | | <!-- 从layui传值给iframe 的占位input --> |
| | | <input type="text" id="user" ref="user" style="display:none"> |
| | | 46476978-- |
| | | -{{ourData.title}} |
| | | </div> |
| | | <script> |
| | | var me = new Vue({ |
| | | el: '#popup', |
| | | data: { |
| | | ourData: '', |
| | | oldtime: '', |
| | | }, |
| | | mounted() { |
| | | this.oldtime = setTimeout(() => {//需要同步数据处理,input中value在mounted中没有直接传值 |
| | | clearTimeout(this.oldtime); |
| | | this.ourData = JSON.parse(this.$refs.user.value);//json对象转js对象 |
| | | console.log(this.ourData,2) |
| | | }, 100); |
| | | } |
| | | }) |
| | | |
| | | </script> |
| | | </body> |
| | | |
| | | </html> |
| New file |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | |
| | | <head> |
| | | <meta charset="utf-8" /> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> |
| | | <title>地图</title> |
| | | <!-- vue --> |
| | | <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script> |
| | | |
| | | <!-- leaflet支持 --> |
| | | <script src="./lid/leaflet.js"></script> |
| | | <link rel="stylesheet" href="./lid/leaflet.css" /> |
| | | |
| | | <!-- leaflet聚合支持 --> |
| | | <link rel="stylesheet" href="./lid/MarkerCluster.css" /> |
| | | <link rel="stylesheet" href="./lid/MarkerCluster.Default.css" /> |
| | | <script src="./lid/leaflet.markercluster-src.js"></script> |
| | | |
| | | <!-- layui支持 --> |
| | | <!-- <link rel="stylesheet" href="../map/lib/layui/css/layui.css" media="all"> --> |
| | | <!-- <script src="../map/lib/layui/layui.js" charset="utf-8"></script> --> |
| | | |
| | | <!-- axios支持 --> |
| | | <script src="../map/lib/axios.js"></script> |
| | | |
| | | <!-- elementui --> |
| | | <script src="../map/lib/elementUi.js"></script> |
| | | <!-- <link rel="stylesheet" href="../map/lib/elementUi.css"> --> |
| | | <link rel="stylesheet" href="./css/elementUI.css"> |
| | | <!-- <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> --> |
| | | |
| | | <!-- jqurey --> |
| | | <script src="../map/lib/jquery.js" charset="utf-8"></script> |
| | | |
| | | <!-- 微信支持 --> |
| | | <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script> |
| | | <!-- <script src="./js/wx.js"></script> --> |
| | | |
| | | <!-- omyself支持 --> |
| | | <link rel="stylesheet" href="./css/body.css" /> |
| | | |
| | | <!-- myDomMove --> |
| | | <script src="./js/move.js"></script> |
| | | <!-- sha1加密 --> |
| | | <!-- <script src="./js/sha1.js"></script> --> |
| | | <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> |
| | | </head> |
| | | |
| | | <body> |
| | | <div id="mapVue"> |
| | | <div class="dingwei" @click="locationMap"> |
| | | <img style="width: 80%;height: 80%;" src="./img/dingwei.png" alt=""> |
| | | </div> |
| | | <div id="map"></div> |
| | | <div id="seedata"> |
| | | <div class="title" @click="titleClick"> |
| | | {{seedata.deviceName}} |
| | | <div class="title-span"> </div> |
| | | {{seedata.deviceNumber}} |
| | | <div class="title-span"> </div> |
| | | <div class="title-span"> </div> |
| | | </div> |
| | | <div class="main"> |
| | | <div class="f-m-once"> |
| | | <div class="f-m-o-title"> |
| | | <img class="f-m-o-t-img" src="./img/ren.png" alt=""> |
| | | 使用方: |
| | | </div> |
| | | <div class="f-m-o-center">{{seedata.deptName}}</div> |
| | | </div> |
| | | <div class="f-m-once"> |
| | | <div class="f-m-o-title"> |
| | | <img class="f-m-o-t-img" src="./img/ren.png" alt=""> |
| | | 接警人: |
| | | </div> |
| | | <div class="f-m-o-center">{{seedata.alarmPeople}}</div> |
| | | </div> |
| | | <div class="f-m-once"> |
| | | <div class="f-m-o-title"> |
| | | <img class="f-m-o-t-img" src="./img/dianhua.png" alt=""> |
| | | 联系电话: |
| | | </div> |
| | | <div class="f-m-o-center">{{seedata.phoneNumber}}</div> |
| | | </div> |
| | | <el-divider></el-divider> |
| | | <div class="f-m-once"> |
| | | <div class="f-m-o-title"> |
| | | <img class="f-m-o-t-img" src="./img/shijian.png" alt=""> |
| | | 报警时间: |
| | | </div> |
| | | <div class="f-m-o-center">{{seedata.alarmTime}}</div> |
| | | </div> |
| | | <div class="f-m-once"> |
| | | <div class="f-m-o-title"> |
| | | <img class="f-m-o-t-img" src="./img/leixing.png" alt=""> |
| | | 报警类型&&编号: |
| | | </div> |
| | | <div class="f-m-o-center">{{seedata.alarmType}}&&{{seedata.id}}</div> |
| | | </div> |
| | | <el-divider></el-divider> |
| | | <div class="f-m-once"> |
| | | <div class="f-m-o-title"> |
| | | <img class="f-m-o-t-img" src="./img/beizhu.png" alt=""> |
| | | 备注: |
| | | </div> |
| | | <div class="f-m-o-center">{{seedata.bz}}</div> |
| | | </div> |
| | | <div class="but"> |
| | | <div class="buta" @click="shipingClick(true)"> |
| | | <img class="b-b-img" src="./img/shiping.png" alt=""> |
| | | </div> |
| | | <!-- 加上display: none不会闪烁 --> |
| | | <div class="shipingPopup" v-show="shipingPopupShow" style="display: none;"> |
| | | <div class="s-p-main"> |
| | | <div @click="shipingClick(false)"> |
| | | <img src="./img/gaunbi.png" alt="" class="s-p-gaunbi"> |
| | | </div> |
| | | <!-- <video style="height: 550px; width: 100%" controls="controls" |
| | | id="real_video_shipingPopup" src=""></video> --> |
| | | <video style="height: 550px; width: 100%" controls="controls" :src="shipingM3u8Url"></video> |
| | | </div> |
| | | </div> |
| | | <div class="butb" @click="resultFeedbackClick">结果反馈</div> |
| | | |
| | | <div class="butc"> |
| | | <img class="b-b-img" src="./img/huifang.png" alt=""> |
| | | <!-- <div class="huifangPopup"> |
| | | 回放 |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- vue渲染 --> |
| | | <script src="./js/vueMain.js"></script> |
| | | </body> |
| | | |
| | | </html> |