From cc128219a8154da9f4608561bc0eeca09a4d931c Mon Sep 17 00:00:00 2001 From: chen <2659004835@qq.com> Date: Wed, 25 May 2022 17:55:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A0=E4=BB=BB=E4=BD=95=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5=EF=BC=8C=E6=9C=AC=E5=9C=B0=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=EF=BC=88=E5=8D=B3=E9=9D=99=E6=80=81=E6=B8=B2?= =?UTF-8?q?=E6=9F=93=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 48 ++ commons/animate.min.css | 12 + commons/base.css | 418 ++++++++++++ commons/icon-font.css | 155 +++++ commons/style.css | 78 +++ components/containers/readme.md | 37 ++ components/containers/status-container.vue | 78 +++ components/customer/customer-one.vue | 65 ++ components/customer/public-customer.vue | 67 ++ components/foot-tabs/foot-tab.vue | 204 ++++++ components/foot-tabs/readme.md | 37 ++ .../function-list/column/column-function.vue | 82 +++ components/function-list/column/readme.md | 43 ++ .../gong-ge/gong-ge-function.vue | 106 +++ components/function-list/gong-ge/readme.md | 47 ++ components/list/list-one.vue | 70 ++ components/nothing/nothing-page.vue | 41 ++ components/nothing/pitera.vue | 54 ++ components/nothing/readme.md | 19 + components/scroll-views/readme.md | 30 + components/scroll-views/scroll-text-slide.vue | 257 ++++++++ components/shopping-carts/cart-slide.vue | 411 ++++++++++++ components/status-navs/readme.md | 43 ++ components/status-navs/status-nav.vue | 151 +++++ components/swiper-tab/swiper-adaptive.vue | 124 ++++ components/swiper-tab/swiper-tab-jl.vue | 176 +++++ components/swiper-tab/swiper-tab-slide.vue | 170 +++++ components/swiper-tab/swiper-tab.vue | 171 +++++ components/swipers/readme.md | 34 + components/swipers/swiper-pu.vue | 139 ++++ jsFile/public-api.js | 4 + jsFile/requst.js | 180 ++++++ jsFile/tools.js | 609 ++++++++++++++++++ main.js | 26 + manifest.json | 87 +++ package-lock.json | 15 + package.json | 11 + pages.json | 181 ++++++ pages/tabbar/cart/cart.vue | 41 ++ pages/tabbar/cate/cate.vue | 138 ++++ pages/tabbar/my/my.vue | 122 ++++ pages/tabbar/pagehome/pagehome.vue | 111 ++++ pagesA/order-list/order-list.vue | 99 +++ .../shopping-cart-slide.vue | 75 +++ pagesB/business-profile/business-profile.vue | 57 ++ pagesB/buy-read/buy-read.vue | 26 + pagesB/disclaimers/disclaimers.vue | 38 ++ pagesB/finish/finish.vue | 58 ++ pagesB/login/login.vue | 219 +++++++ pagesB/login/xiey.vue | 53 ++ pagesB/order-detail/order-detail.vue | 82 +++ pagesB/search/search.vue | 50 ++ pagesB/settlement/settlement.vue | 97 +++ pagesB/shop-detail/shop-detail.vue | 75 +++ project.config.json | 77 +++ readme.md | 19 + static/deleteImg/icon-ge-01.png | Bin 0 -> 501 bytes static/deleteImg/icon-ge-02.png | Bin 0 -> 834 bytes static/deleteImg/icon-ge-03.png | Bin 0 -> 412 bytes static/deleteImg/icon-ge-04.png | Bin 0 -> 643 bytes static/deleteImg/icon-ge-05.png | Bin 0 -> 1105 bytes static/deleteImg/icon-ge-06.png | Bin 0 -> 821 bytes static/deleteImg/icon-ge-07.png | Bin 0 -> 525 bytes static/deleteImg/icon-ge-08.png | Bin 0 -> 584 bytes static/deleteImg/icon-ge-09.png | Bin 0 -> 679 bytes static/deleteImg/icon-ge-10.png | Bin 0 -> 731 bytes static/public/icon-aboutus.png | Bin 0 -> 678 bytes static/public/icon-buy.png | Bin 0 -> 576 bytes static/public/icon-customer.png | Bin 0 -> 4501 bytes static/public/icon-duty.png | Bin 0 -> 712 bytes static/public/icon-finish.png | Bin 0 -> 532 bytes static/public/icon-payment.png | Bin 0 -> 607 bytes static/public/icon-scan.png | Bin 0 -> 362 bytes static/public/icon-search.png | Bin 0 -> 704 bytes static/public/icon-searcht.png | Bin 0 -> 629 bytes static/public/icon-send-goods.png | Bin 0 -> 542 bytes static/public/icon-take.png | Bin 0 -> 726 bytes static/tabbar/icon-cart.png | Bin 0 -> 674 bytes static/tabbar/icon-cate.png | Bin 0 -> 700 bytes static/tabbar/icon-home.png | Bin 0 -> 565 bytes static/tabbar/icon-my.png | Bin 0 -> 664 bytes store/actions.js | 1 + store/index.js | 16 + store/modules/moduleA.js | 93 +++ store/modules/moduleB.js | 87 +++ store/mutations.js | 1 + store/readme.md | 119 ++++ uni.scss | 76 +++ 88 files changed, 6310 insertions(+) create mode 100644 App.vue create mode 100644 commons/animate.min.css create mode 100644 commons/base.css create mode 100644 commons/icon-font.css create mode 100644 commons/style.css create mode 100644 components/containers/readme.md create mode 100644 components/containers/status-container.vue create mode 100644 components/customer/customer-one.vue create mode 100644 components/customer/public-customer.vue create mode 100644 components/foot-tabs/foot-tab.vue create mode 100644 components/foot-tabs/readme.md create mode 100644 components/function-list/column/column-function.vue create mode 100644 components/function-list/column/readme.md create mode 100644 components/function-list/gong-ge/gong-ge-function.vue create mode 100644 components/function-list/gong-ge/readme.md create mode 100644 components/list/list-one.vue create mode 100644 components/nothing/nothing-page.vue create mode 100644 components/nothing/pitera.vue create mode 100644 components/nothing/readme.md create mode 100644 components/scroll-views/readme.md create mode 100644 components/scroll-views/scroll-text-slide.vue create mode 100644 components/shopping-carts/cart-slide.vue create mode 100644 components/status-navs/readme.md create mode 100644 components/status-navs/status-nav.vue create mode 100644 components/swiper-tab/swiper-adaptive.vue create mode 100644 components/swiper-tab/swiper-tab-jl.vue create mode 100644 components/swiper-tab/swiper-tab-slide.vue create mode 100644 components/swiper-tab/swiper-tab.vue create mode 100644 components/swipers/readme.md create mode 100644 components/swipers/swiper-pu.vue create mode 100644 jsFile/public-api.js create mode 100644 jsFile/requst.js create mode 100644 jsFile/tools.js create mode 100644 main.js create mode 100644 manifest.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pages.json create mode 100644 pages/tabbar/cart/cart.vue create mode 100644 pages/tabbar/cate/cate.vue create mode 100644 pages/tabbar/my/my.vue create mode 100644 pages/tabbar/pagehome/pagehome.vue create mode 100644 pagesA/order-list/order-list.vue create mode 100644 pagesA/shopping-cart-slide/shopping-cart-slide.vue create mode 100644 pagesB/business-profile/business-profile.vue create mode 100644 pagesB/buy-read/buy-read.vue create mode 100644 pagesB/disclaimers/disclaimers.vue create mode 100644 pagesB/finish/finish.vue create mode 100644 pagesB/login/login.vue create mode 100644 pagesB/login/xiey.vue create mode 100644 pagesB/order-detail/order-detail.vue create mode 100644 pagesB/search/search.vue create mode 100644 pagesB/settlement/settlement.vue create mode 100644 pagesB/shop-detail/shop-detail.vue create mode 100644 project.config.json create mode 100644 readme.md create mode 100644 static/deleteImg/icon-ge-01.png create mode 100644 static/deleteImg/icon-ge-02.png create mode 100644 static/deleteImg/icon-ge-03.png create mode 100644 static/deleteImg/icon-ge-04.png create mode 100644 static/deleteImg/icon-ge-05.png create mode 100644 static/deleteImg/icon-ge-06.png create mode 100644 static/deleteImg/icon-ge-07.png create mode 100644 static/deleteImg/icon-ge-08.png create mode 100644 static/deleteImg/icon-ge-09.png create mode 100644 static/deleteImg/icon-ge-10.png create mode 100644 static/public/icon-aboutus.png create mode 100644 static/public/icon-buy.png create mode 100644 static/public/icon-customer.png create mode 100644 static/public/icon-duty.png create mode 100644 static/public/icon-finish.png create mode 100644 static/public/icon-payment.png create mode 100644 static/public/icon-scan.png create mode 100644 static/public/icon-search.png create mode 100644 static/public/icon-searcht.png create mode 100644 static/public/icon-send-goods.png create mode 100644 static/public/icon-take.png create mode 100644 static/tabbar/icon-cart.png create mode 100644 static/tabbar/icon-cate.png create mode 100644 static/tabbar/icon-home.png create mode 100644 static/tabbar/icon-my.png create mode 100644 store/actions.js create mode 100644 store/index.js create mode 100644 store/modules/moduleA.js create mode 100644 store/modules/moduleB.js create mode 100644 store/mutations.js create mode 100644 store/readme.md create mode 100644 uni.scss diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..cbb0b5b --- /dev/null +++ b/App.vue @@ -0,0 +1,48 @@ + + + diff --git a/commons/animate.min.css b/commons/animate.min.css new file mode 100644 index 0000000..8ae4afd --- /dev/null +++ b/commons/animate.min.css @@ -0,0 +1,12 @@ +@charset "UTF-8";/*! +Animate.css - http://daneden.me/animate +Licensed under the MIT license + +Copyright (c) 2013 Daniel Eden + +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. +*/.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);transform:translateY(-15px)}}@keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);-ms-transform:translateY(-15px);transform:translateY(-15px)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.1);transform:scale(1.1)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes pulse{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}100%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale(1);transform:scale(1)}30%{-webkit-transform:scaleX(1.25) scaleY(0.75);transform:scaleX(1.25) scaleY(0.75)}40%{-webkit-transform:scaleX(0.75) scaleY(1.25);transform:scaleX(0.75) scaleY(1.25)}60%{-webkit-transform:scaleX(1.15) scaleY(0.85);transform:scaleX(1.15) scaleY(0.85)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes rubberBand{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}30%{-webkit-transform:scaleX(1.25) scaleY(0.75);-ms-transform:scaleX(1.25) scaleY(0.75);transform:scaleX(1.25) scaleY(0.75)}40%{-webkit-transform:scaleX(0.75) scaleY(1.25);-ms-transform:scaleX(0.75) scaleY(1.25);transform:scaleX(0.75) scaleY(1.25)}60%{-webkit-transform:scaleX(1.15) scaleY(0.85);-ms-transform:scaleX(1.15) scaleY(0.85);transform:scaleX(1.15) scaleY(0.85)}100%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}100%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);-ms-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);-ms-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);-ms-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);-ms-transform:rotate(-5deg);transform:rotate(-5deg)}100%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(0.9) rotate(-3deg);transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}@keyframes tada{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(0.9) rotate(-3deg);-ms-transform:scale(0.9) rotate(-3deg);transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);-ms-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);-ms-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);-ms-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateX(0%);transform:translateX(0%)}15%{-webkit-transform:translateX(-25%) rotate(-5deg);transform:translateX(-25%) rotate(-5deg)}30%{-webkit-transform:translateX(20%) rotate(3deg);transform:translateX(20%) rotate(3deg)}45%{-webkit-transform:translateX(-15%) rotate(-3deg);transform:translateX(-15%) rotate(-3deg)}60%{-webkit-transform:translateX(10%) rotate(2deg);transform:translateX(10%) rotate(2deg)}75%{-webkit-transform:translateX(-5%) rotate(-1deg);transform:translateX(-5%) rotate(-1deg)}100%{-webkit-transform:translateX(0%);transform:translateX(0%)}}@keyframes wobble{0%{-webkit-transform:translateX(0%);-ms-transform:translateX(0%);transform:translateX(0%)}15%{-webkit-transform:translateX(-25%) rotate(-5deg);-ms-transform:translateX(-25%) rotate(-5deg);transform:translateX(-25%) rotate(-5deg)}30%{-webkit-transform:translateX(20%) rotate(3deg);-ms-transform:translateX(20%) rotate(3deg);transform:translateX(20%) rotate(3deg)}45%{-webkit-transform:translateX(-15%) rotate(-3deg);-ms-transform:translateX(-15%) rotate(-3deg);transform:translateX(-15%) rotate(-3deg)}60%{-webkit-transform:translateX(10%) rotate(2deg);-ms-transform:translateX(10%) rotate(2deg);transform:translateX(10%) rotate(2deg)}75%{-webkit-transform:translateX(-5%) rotate(-1deg);-ms-transform:translateX(-5%) rotate(-1deg);transform:translateX(-5%) rotate(-1deg)}100%{-webkit-transform:translateX(0%);-ms-transform:translateX(0%);transform:translateX(0%)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(.3);transform:scale(.3)}50%{opacity:1;-webkit-transform:scale(1.05);transform:scale(1.05)}70%{-webkit-transform:scale(.9);transform:scale(.9)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(.3);-ms-transform:scale(.3);transform:scale(.3)}50%{opacity:1;-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}70%{-webkit-transform:scale(.9);-ms-transform:scale(.9);transform:scale(.9)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}60%{opacity:1;-webkit-transform:translateY(30px);transform:translateY(30px)}80%{-webkit-transform:translateY(-10px);transform:translateY(-10px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes bounceInDown{0%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}60%{opacity:1;-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px)}80%{-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}60%{opacity:1;-webkit-transform:translateX(30px);transform:translateX(30px)}80%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes bounceInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}60%{opacity:1;-webkit-transform:translateX(30px);-ms-transform:translateX(30px);transform:translateX(30px)}80%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}60%{opacity:1;-webkit-transform:translateX(-30px);transform:translateX(-30px)}80%{-webkit-transform:translateX(10px);transform:translateX(10px)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes bounceInRight{0%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}60%{opacity:1;-webkit-transform:translateX(-30px);-ms-transform:translateX(-30px);transform:translateX(-30px)}80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}60%{opacity:1;-webkit-transform:translateY(-30px);transform:translateY(-30px)}80%{-webkit-transform:translateY(10px);transform:translateY(10px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes bounceInUp{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}60%{opacity:1;-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}80%{-webkit-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{0%{-webkit-transform:scale(1);transform:scale(1)}25%{-webkit-transform:scale(.95);transform:scale(.95)}50%{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1)}100%{opacity:0;-webkit-transform:scale(.3);transform:scale(.3)}}@keyframes bounceOut{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}25%{-webkit-transform:scale(.95);-ms-transform:scale(.95);transform:scale(.95)}50%{opacity:1;-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}100%{opacity:0;-webkit-transform:scale(.3);-ms-transform:scale(.3);transform:scale(.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{0%{-webkit-transform:translateY(0);transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}}@keyframes bounceOutDown{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{0%{-webkit-transform:translateX(0);transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(20px);transform:translateX(20px)}100%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}}@keyframes bounceOutLeft{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}100%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{0%{-webkit-transform:translateX(0);transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}}@keyframes bounceOutRight{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{0%{-webkit-transform:translateY(0);transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(20px);transform:translateY(20px)}100%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}}@keyframes bounceOutUp{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}100%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}}@keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}}@keyframes fadeOutDownBig{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}}@keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}}@keyframes fadeOutLeftBig{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}}@keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}}@keyframes fadeOutRightBig{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}}@keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}}@keyframes fadeOutUpBig{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(.95);transform:perspective(400px) translateZ(0) rotateY(360deg) scale(.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-ms-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-ms-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-ms-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(.95);-ms-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(.95);transform:perspective(400px) translateZ(0) rotateY(360deg) scale(.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-ms-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-10deg);transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg)}100%{-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg);opacity:1}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);-ms-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-10deg);-ms-transform:perspective(400px) rotateX(-10deg);transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg);-ms-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg)}100%{-webkit-transform:perspective(400px) rotateX(0deg);-ms-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg);opacity:1}}.flipInX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-10deg);transform:perspective(400px) rotateY(-10deg)}70%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg)}100%{-webkit-transform:perspective(400px) rotateY(0deg);transform:perspective(400px) rotateY(0deg);opacity:1}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);-ms-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-10deg);-ms-transform:perspective(400px) rotateY(-10deg);transform:perspective(400px) rotateY(-10deg)}70%{-webkit-transform:perspective(400px) rotateY(10deg);-ms-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg)}100%{-webkit-transform:perspective(400px) rotateY(0deg);-ms-transform:perspective(400px) rotateY(0deg);transform:perspective(400px) rotateY(0deg);opacity:1}}.flipInY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px) rotateX(0deg);-ms-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateX(90deg);-ms-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px) rotateY(0deg);transform:perspective(400px) rotateY(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px) rotateY(0deg);-ms-transform:perspective(400px) rotateY(0deg);transform:perspective(400px) rotateY(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateY(90deg);-ms-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translateX(100%) skewX(-30deg);transform:translateX(100%) skewX(-30deg);opacity:0}60%{-webkit-transform:translateX(-20%) skewX(30deg);transform:translateX(-20%) skewX(30deg);opacity:1}80%{-webkit-transform:translateX(0%) skewX(-15deg);transform:translateX(0%) skewX(-15deg);opacity:1}100%{-webkit-transform:translateX(0%) skewX(0deg);transform:translateX(0%) skewX(0deg);opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translateX(100%) skewX(-30deg);-ms-transform:translateX(100%) skewX(-30deg);transform:translateX(100%) skewX(-30deg);opacity:0}60%{-webkit-transform:translateX(-20%) skewX(30deg);-ms-transform:translateX(-20%) skewX(30deg);transform:translateX(-20%) skewX(30deg);opacity:1}80%{-webkit-transform:translateX(0%) skewX(-15deg);-ms-transform:translateX(0%) skewX(-15deg);transform:translateX(0%) skewX(-15deg);opacity:1}100%{-webkit-transform:translateX(0%) skewX(0deg);-ms-transform:translateX(0%) skewX(0deg);transform:translateX(0%) skewX(0deg);opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{-webkit-transform:translateX(0%) skewX(0deg);transform:translateX(0%) skewX(0deg);opacity:1}100%{-webkit-transform:translateX(100%) skewX(-30deg);transform:translateX(100%) skewX(-30deg);opacity:0}}@keyframes lightSpeedOut{0%{-webkit-transform:translateX(0%) skewX(0deg);-ms-transform:translateX(0%) skewX(0deg);transform:translateX(0%) skewX(0deg);opacity:1}100%{-webkit-transform:translateX(100%) skewX(-30deg);-ms-transform:translateX(100%) skewX(-30deg);transform:translateX(100%) skewX(-30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}100%{-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(-200deg);-ms-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}100%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(200deg);-ms-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes slideInDown{0%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes slideInDown{0%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight{0%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}}@keyframes slideOutLeft{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}}@keyframes slideOutRight{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}}@keyframes slideOutUp{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}@-webkit-keyframes slideInUp{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes slideInUp{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}}@keyframes slideOutDown{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes hinge{0%{-webkit-transform:rotate(0);transform:rotate(0);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}80%{-webkit-transform:rotate(60deg) translateY(0);transform:rotate(60deg) translateY(0);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translateY(700px);transform:translateY(700px);opacity:0}}@keyframes hinge{0%{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);-ms-transform:rotate(80deg);transform:rotate(80deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}80%{-webkit-transform:rotate(60deg) translateY(0);-ms-transform:rotate(60deg) translateY(0);transform:rotate(60deg) translateY(0);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translateY(700px);-ms-transform:translateY(700px);transform:translateY(700px);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}100%{opacity:0;-webkit-transform:translateX(100%) rotate(120deg);transform:translateX(100%) rotate(120deg)}}@keyframes rollOut{0%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}100%{opacity:0;-webkit-transform:translateX(100%) rotate(120deg);-ms-transform:translateX(100%) rotate(120deg);transform:translateX(100%) rotate(120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.3);transform:scale(.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.3);-ms-transform:scale(.3);transform:scale(.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale(.1) translateX(2000px);transform:scale(.1) translateX(2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(-48px);transform:scale(.475) translateX(-48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale(.1) translateX(2000px);-ms-transform:scale(.1) translateX(2000px);transform:scale(.1) translateX(2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(-48px);-ms-transform:scale(.475) translateX(-48px);transform:scale(.475) translateX(-48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale(.1) translateY(2000px);transform:scale(.1) translateY(2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(-60px);transform:scale(.475) translateY(-60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale(.1) translateY(2000px);-ms-transform:scale(.1) translateY(2000px);transform:scale(.1) translateY(2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(-60px);-ms-transform:scale(.475) translateY(-60px);transform:scale(.475) translateY(-60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:0;-webkit-transform:scale(.3);transform:scale(.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}50%{opacity:0;-webkit-transform:scale(.3);-ms-transform:scale(.3);transform:scale(.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale(.475) translateY(-60px);transform:scale(.475) translateY(-60px);-webkit-animation-timing-function:linear;animation-timing-function:linear}100%{opacity:0;-webkit-transform:scale(.1) translateY(2000px);transform:scale(.1) translateY(2000px);-webkit-transform-origin:center bottom;transform-origin:center bottom}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale(.475) translateY(-60px);-ms-transform:scale(.475) translateY(-60px);transform:scale(.475) translateY(-60px);-webkit-animation-timing-function:linear;animation-timing-function:linear}100%{opacity:0;-webkit-transform:scale(.1) translateY(2000px);-ms-transform:scale(.1) translateY(2000px);transform:scale(.1) translateY(2000px);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale(.475) translateX(42px);transform:scale(.475) translateX(42px);-webkit-animation-timing-function:linear;animation-timing-function:linear}100%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale(.475) translateX(42px);-ms-transform:scale(.475) translateX(42px);transform:scale(.475) translateX(42px);-webkit-animation-timing-function:linear;animation-timing-function:linear}100%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale(.475) translateX(-42px);transform:scale(.475) translateX(-42px);-webkit-animation-timing-function:linear;animation-timing-function:linear}100%{opacity:0;-webkit-transform:scale(.1) translateX(2000px);transform:scale(.1) translateX(2000px);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale(.475) translateX(-42px);-ms-transform:scale(.475) translateX(-42px);transform:scale(.475) translateX(-42px);-webkit-animation-timing-function:linear;animation-timing-function:linear}100%{opacity:0;-webkit-transform:scale(.1) translateX(2000px);-ms-transform:scale(.1) translateX(2000px);transform:scale(.1) translateX(2000px);-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:linear;animation-timing-function:linear}100%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-transform-origin:center top;transform-origin:center top}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:linear;animation-timing-function:linear}100%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-transform-origin:center top;-ms-transform-origin:center top;transform-origin:center top}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp} \ No newline at end of file diff --git a/commons/base.css b/commons/base.css new file mode 100644 index 0000000..089d4a0 --- /dev/null +++ b/commons/base.css @@ -0,0 +1,418 @@ + + + + + + + + + + +/* @media screen and (height:812px){ +} +@media screen and (height:844px){ +} +@media screen and (height:896px){ +} +@media screen and (min-height:926px){ +} + */ + + + + +.bottoc{margin-top: 6rpx;color: #414141;} +.opc{opacity: 0.7;} +.width100{width: 100%;} +.width55{width: 55%;} +.width50{width: 50%;} +.width49{width: 49%;} +.width48_5{width: 48.5%;} +.width48{width: 48%;} +.width47{width: 47%;} +.width46{width: 46%;} +.width45{width: 45%;} +.width33{width: 33%;} +.width30{width: 30%;} +.width29{width: 29%;} +.width28{width: 28%;} +.width27{width: 27%;} +.width26{width: 26%;} +.width25{width: 25%;} + +.posAll{position: fixed;top: 0;left: 0;right: 0;bottom: 0;background-color: rgba(0,0,0,.45);z-index: 12;} +.posir{position: relative;} +.posia{position: absolute;} +.poszy{position: fixed;left: 0;right: 0;z-index: 3;} +.posiszy{position: fixed;left: 0;right: 0;z-index: 5;} +.posixzy{position: fixed;left: 0;right: 0;z-index: 2;bottom: 0;} +.posia-op{position: absolute;top: 0;right: 0;left: 0;bottom: 0;opacity: 0;} +.syxzo{top: 0;left: 0;right: 0;bottom: 0;opacity: 0;} +.posi-sticky{position: sticky;top: 0;z-index: 1;background-color: #FFFFFF;} + + +.dis{display: flex;} +.disac{display: flex;align-items: center;} +.disja{display: flex;justify-content: space-around;} +.disjb{display: flex;justify-content: space-between;} +.disje{display: flex;justify-content: flex-end;} +.disjbac{display: flex;justify-content: space-between;align-items: center;} +.disjcac{display: flex;justify-content: center;align-items: center;} +.fc{flex-direction: column;} +.fw{flex-wrap: wrap;} +.fe{justify-content: flex-end;} +.flexs{flex-shrink: 0;} + + +.wh42{width: 42rpx;height: 42rpx;} +.wh44{width: 44rpx;height: 44rpx;} + +button:after{content: none!important;} +.borbot{border-bottom: 2rpx solid #EEEEEE;} +.borbot:last-child{border-bottom: none;} +.bbot{border-bottom: 2rpx solid #EEEEEE;} +.tbot{border-top: 2rpx solid #EEEEEE;} +.borbot-df{border: 2rpx solid #DFDFDF;} +.borbot-cc{border: 2rpx solid #CCCCCC;} +.bleft {border-left: 2rpx solid #EEEEEE;} +.bbt-d9{border-bottom: 2rpx solid #d9d9d9;} + +/* 行高 */ +.line-h30{line-height: 30rpx;} +.line-h32{line-height: 32rpx;} +.line-h34{line-height: 34rpx;} +.line-h36{line-height: 36rpx;} +.line-h38{line-height: 38rpx;} +.line-h40{line-height: 40rpx;} +.line-h42{line-height: 42rpx;} +.line-h44{line-height: 44rpx;} +.line-h46{line-height: 46rpx;} +.line-h48{line-height: 48rpx;} +.line-h50{line-height: 50rpx;} +.line-h52{line-height: 52rpx;} +.line-h54{line-height: 54rpx;} +.line-h56{line-height: 56rpx;} +.line-h58{line-height: 58rpx;} +.line-h60{line-height: 60rpx;} +.line-h62{line-height: 62rpx;} +.line-h64{line-height: 64rpx;} +.line-h66{line-height: 66rpx;} +.line-h68{line-height: 60rpx;} +.line-h70{line-height: 70rpx;} +.line-h72{line-height: 72rpx;} +.line-h74{line-height: 74rpx;} + + +.clips1{display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;overflow: hidden;text-overflow: ellipsis;word-wrap: break-word;word-break:break-all;} +.clips2{display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;overflow: hidden;text-overflow: ellipsis;word-wrap: break-word;word-break:break-all;} +.clips3{display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;overflow: hidden;text-overflow: ellipsis;word-wrap: break-word;word-break:break-all;} +.clips4{display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 4;overflow: hidden;text-overflow: ellipsis;word-wrap: break-word;word-break:break-all;} +.clips5{display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 5;overflow: hidden;text-overflow: ellipsis;word-wrap: break-word;word-break:break-all;} +.clips6{display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 6;overflow: hidden;text-overflow: ellipsis;word-wrap: break-word;word-break:break-all;} +.clips7{display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 7;overflow: hidden;text-overflow: ellipsis;word-wrap: break-word;word-break:break-all;} +.clips8{display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 8;overflow: hidden;text-overflow: ellipsis;word-wrap: break-word;word-break:break-all;} +.clips9{display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 9;overflow: hidden;text-overflow: ellipsis;word-wrap: break-word;word-break:break-all;} +.clips10{display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 10;overflow: hidden;text-overflow: ellipsis;word-wrap: break-word;word-break:break-all;} + + +/* 字体大小 */ +.fon20{font-size: 20rpx;} +.fon22{font-size: 22rpx;} +.fon24{font-size: 24rpx;} +.fon25{font-size: 25rpx;} +.fon26{font-size: 26rpx;} +.fon27{font-size: 27rpx;} +.fon28{font-size: 28rpx;} +.fon30{font-size: 30rpx;} +.fon32{font-size: 32rpx;} +.fon34{font-size: 34rpx;} +.fon36{font-size: 36rpx;} +.fon38{font-size: 38rpx;} +.fon40{font-size: 40rpx;} +.fon42{font-size: 42rpx;} +.fon44{font-size: 44rpx;} +.fon46{font-size: 46rpx;} +.fon48{font-size: 48rpx;} +.fon50{font-size: 50rpx;} +.fon52{font-size: 52rpx;} +.fon54{font-size: 54rpx;} +.fon56{font-size: 56rpx;} +.fon58{font-size: 58rpx;} +.fon60{font-size: 60rpx;} +.fon62{font-size: 62rpx;} +.fon64{font-size: 64rpx;} +.fon66{font-size: 66rpx;} +.fon68{font-size: 68rpx;} +.fon70{font-size: 70rpx;} +.fon72{font-size: 72rpx;} + +/* 字体颜色 */ +.colf{color: #FFFFFF;} +.colf6{color: #f6f6f6;} +.colb{color: #000000;} +.colc{color: #CCCCCC;} +.col3{color: #333333;} +.col34{color: #343434;} +.col6{color: #666666;} +.colf8{color: #F85050;} +.col9{color: #999999;} +.pcol{color: #3875F6;} +.col2c{color: #2C2C2C;} +.col80{color: #808080;} +.col7D{color: #7D7D7D;} +.colB3{color: #B3B3B3;} +.col5b{color: #5B5B5B;} +.colpeili{color: #868695;} + + +/* 字体位置 */ +.tright{text-align: right;} +.tcenter{text-align: center;} + +/* 文字空两格 */ +.tindent{text-indent: 2em;} + +/* 元素缩小 */ +.scal13{transform: scale(1.3);} +.scal12{transform: scale(1.2);} +.scal11{transform: scale(1.1);} +.scal10{transform: scale(1);} +.scal09{transform: scale(.9);} +.scal08{transform: scale(.8);} +.scal07{transform: scale(.7);} +.scal06{transform: scale(.6);} +.scal05{transform: scale(.5);} + +/* 行间距 */ +.linh40{line-height: 40rpx;} +.linh50{line-height: 50rpx;} +.linh60{line-height: 60rpx;} +.linh70{line-height: 70rpx;} + +/* 粗体 */ +.bold{font-weight: bold;} +.bold400{font-weight: 400;} +.bold500{font-weight: 500;} + + +/* 背景颜色 */ +.pbackc{background-color: #3875F6;} +.bacf{background-color: #FFFFFF;} +.bac0{background-color: #000000;} +.bcdb{background-color: #DBDBDB;} +.bcf8{background: #F85050;} +.bacf5{background: #F5F5F5;} +.bacf6{background-color: #f6f6f6;} + + + +/* 圆角 */ +.radius10{border-radius: 10rpx;} +.radius15{border-radius: 15rpx;} +.radius20{border-radius: 20rpx;} +.radius30{border-radius: 30rpx;} +.radius35{border-radius: 35rpx;} +.radius40{border-radius: 40rpx;} +.radius45{border-radius: 45rpx;} + +/* 上下左右---外边距 */ +.mar10{margin: 10rpx;} +.mar20{margin: 20rpx;} +.mar25{margin: 25rpx;} +.mar30{margin: 30rpx;} +.mar32{margin: 32rpx;} +.mar36{margin: 36rpx;} +.mar40{margin: 40rpx;} +.mar50{margin: 50rpx;} +/* 上下---外边距 */ +.mar-sx10{margin-top: 10rpx;margin-bottom: 10rpx;} +.mar-sx20{margin-top: 20rpx;margin-bottom: 20rpx;} +.mar-sx25{margin-top: 25rpx;margin-bottom: 25rpx;} +.mar-sx30{margin-top: 30rpx;margin-bottom: 30rpx;} +.mar-sx32{margin-top: 32rpx;margin-bottom: 32rpx;} +.mar-sx36{margin-top: 36rpx;margin-bottom: 36rpx;} +.mar-sx40{margin-top: 40rpx;margin-bottom: 40rpx;} +.mar-sx50{margin-top: 50rpx;margin-bottom: 50rpx;} +/* 左右---外边距 */ +.mar-zy10{margin-left: 10rpx;margin-right: 10rpx;} +.mar-zy20{margin-left: 20rpx;margin-right: 20rpx;} +.mar-zy25{margin-left: 25rpx;margin-right: 25rpx;} +.mar-zy30{margin-left: 30rpx;margin-right: 30rpx;} +.mar-zy32{margin-left: 32rpx;margin-right: 32rpx;} +.mar-zy36{margin-left: 36rpx;margin-right: 36rpx;} +.mar-zy40{margin-left: 40rpx;margin-right: 40rpx;} +.mar-zy50{margin-left: 50rpx;margin-right: 50rpx;} +.mar-zy85{margin-left: 85rpx;margin-right: 85rpx;} +/* 上---外边距 */ +.mar-s10{margin-top: 10rpx;} +.mar-s20{margin-top: 20rpx;} +.mar-s25{margin-top: 25rpx;} +.mar-s30{margin-top: 30rpx;} +.mar-s32{margin-top: 32rpx;} +.mar-s36{margin-top: 36rpx;} +.mar-s40{margin-top: 40rpx;} +.mar-s50{margin-top: 50rpx;} +.mar-s60{margin-top: 60rpx;} +.mar-s70{margin-top: 70rpx;} +.mar-s80{margin-top: 80rpx;} +.mar-s90{margin-top: 90rpx;} +.mar-s100{margin-top: 100rpx;} +.mar-s120{margin-top: 120rpx;} +.mar-s140{margin-top: 140rpx;} +.mar-s160{margin-top: 160rpx;} +.mar-s180{margin-top: 180rpx;} +/* 下---外边距 */ +.mar-x10{margin-bottom: 10rpx;} +.mar-x20{margin-bottom: 20rpx;} +.mar-x25{margin-bottom: 25rpx;} +.mar-x30{margin-bottom: 30rpx;} +.mar-x32{margin-bottom: 32rpx;} +.mar-x36{margin-bottom: 36rpx;} +.mar-x40{margin-bottom: 40rpx;} +.mar-x50{margin-bottom: 50rpx;} +.mar-x60{margin-bottom: 60rpx;} +.mar-x70{margin-bottom: 70rpx;} +.mar-x80{margin-bottom: 80rpx;} +.mar-x90{margin-bottom: 90rpx;} +.mar-x100{margin-bottom: 100rpx;} +.mar-x120{margin-bottom: 120rpx;} +.mar-x140{margin-bottom: 140rpx;} +.mar-x160{margin-bottom: 160rpx;} +.mar-x180{margin-bottom: 180rpx;} +/* 左---外边距 */ +.mar-z10{margin-left: 10rpx;} +.mar-z20{margin-left: 20rpx;} +.mar-z25{margin-left: 25rpx;} +.mar-z30{margin-left: 30rpx;} +.mar-z32{margin-left: 32rpx;} +.mar-z36{margin-left: 36rpx;} +.mar-z40{margin-left: 40rpx;} +.mar-z50{margin-left: 50rpx;} +/* 右---外边距 */ +.mar-y10{margin-right: 10rpx;} +.mar-y20{margin-right: 20rpx;} +.mar-y25{margin-right: 25rpx;} +.mar-y30{margin-right: 30rpx;} +.mar-y32{margin-right: 32rpx;} +.mar-y36{margin-right: 36rpx;} +.mar-y40{margin-right: 40rpx;} +.mar-y50{margin-right: 50rpx;} + +/* 上下左右---内边距 */ +.pad10{padding: 10rpx;} +.pad20{padding: 20rpx;} +.pad25{padding: 25rpx;} +.pad30{padding: 30rpx;} +.pad32{padding: 32rpx;} +.pad36{padding: 36rpx;} +.pad40{padding: 40rpx;} +.pad50{padding: 50rpx;} +/* 上下---内边距 */ +.pad-sx10{padding-top: 10rpx;padding-bottom: 10rpx;} +.pad-sx20{padding-top: 20rpx;padding-bottom: 20rpx;} +.pad-sx25{padding-top: 25rpx;padding-bottom: 25rpx;} +.pad-sx30{padding-top: 30rpx;padding-bottom: 30rpx;} +.pad-sx32{padding-top: 32rpx;padding-bottom: 32rpx;} +.pad-sx36{padding-top: 36rpx;padding-bottom: 36rpx;} +.pad-sx40{padding-top: 40rpx;padding-bottom: 40rpx;} +.pad-sx50{padding-top: 50rpx;padding-bottom: 50rpx;} +/* 左右---内边距 */ +.pad-zy10{padding-left: 10rpx;padding-right: 10rpx;} +.pad-zy20{padding-left: 20rpx;padding-right: 20rpx;} +.pad-zy25{padding-left: 25rpx;padding-right: 25rpx;} +.pad-zy30{padding-left: 30rpx;padding-right: 30rpx;} +.pad-zy32{padding-left: 32rpx;padding-right: 32rpx;} +.pad-zy36{padding-left: 36rpx;padding-right: 36rpx;} +.pad-zy40{padding-left: 40rpx;padding-right: 40rpx;} +.pad-zy50{padding-left: 50rpx;padding-right: 50rpx;} +/* 上---内边距 */ +.pad-s10{padding-top: 10rpx;} +.pad-s20{padding-top: 20rpx;} +.pad-s25{padding-top: 25rpx;} +.pad-s30{padding-top: 30rpx;} +.pad-s32{padding-top: 32rpx;} +.pad-s36{padding-top: 36rpx;} +.pad-s40{padding-top: 40rpx;} +.pad-s50{padding-top: 50rpx;} +.pad-s120{padding-top: 120rpx;} +.pad-s140{padding-top: 140rpx;} +.pad-s160{padding-top: 160rpx;} +.pad-s180{padding-top: 180rpx;} +/* 下---内边距 */ +.pad-x10{padding-bottom: 10rpx;} +.pad-x20{padding-bottom: 20rpx;} +.pad-x25{padding-bottom: 25rpx;} +.pad-x30{padding-bottom: 30rpx;} +.pad-x32{padding-bottom: 32rpx;} +.pad-x36{padding-bottom: 36rpx;} +.pad-x40{padding-bottom: 40rpx;} +.pad-x50{padding-bottom: 50rpx;} +.pad-x120{padding-bottom: 120rpx;} +.pad-x140{padding-bottom: 140rpx;} +.pad-x160{padding-bottom: 160rpx;} +.pad-x180{padding-bottom: 180rpx;} +.pad-x260{padding-bottom: 260rpx;} +/* 左---内边距 */ +.pad-z10{padding-left: 10rpx;} +.pad-z20{padding-left: 20rpx;} +.pad-z25{padding-left: 25rpx;} +.pad-z30{padding-left: 30rpx;} +.pad-z32{padding-left: 32rpx;} +.pad-z36{padding-left: 36rpx;} +.pad-z40{padding-left: 40rpx;} +.pad-z50{padding-left: 50rpx;} +/* 右---内边距 */ +.pad-y10{padding-right: 10rpx;} +.pad-y20{padding-right: 20rpx;} +.pad-y25{padding-right: 25rpx;} +.pad-y30{padding-right: 30rpx;} +.pad-y32{padding-right: 32rpx;} +.pad-y36{padding-right: 36rpx;} +.pad-y40{padding-right: 40rpx;} +.pad-y50{padding-right: 50rpx;} + +.pad-sx27-zy20{padding: 27rpx 20rpx;} + + + + +scroll-view ::-webkit-scrollbar { + display: none !important; + width: 0 !important; + height: 0 !important; + -webkit-appearance: none; + background: transparent; +} + + +/* 圆圈中间一个原点 start */ +.mo-item { + width: 30rpx; + height: 30rpx; + border-radius: 100%; + border: 2rpx solid #000000; + box-sizing: border-box; +} +.active-item{ + position: relative; + display: flex; + justify-content: center; + align-items: center; + border: 2rpx solid #FF0000; +} +.active-item::before{ + content: ''; + display: block; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%,-50%); + width: 20rpx; + height: 20rpx; + border-radius: 100%; + background-color: #FF0000; +} +/* 圆圈中间一个原点 end */ + + + diff --git a/commons/icon-font.css b/commons/icon-font.css new file mode 100644 index 0000000..6270de7 --- /dev/null +++ b/commons/icon-font.css @@ -0,0 +1,155 @@ +@font-face { + font-family: "iconfont"; /* Project id 3180711 */ + src: url('https://at.alicdn.com/t/font_3180711_atv5gkgm4w4.woff2?t=1651830764889') format('woff2'), + url('https://at.alicdn.com/t/font_3180711_atv5gkgm4w4.woff?t=1651830764889') format('woff'), + url('https://at.alicdn.com/t/font_3180711_atv5gkgm4w4.ttf?t=1651830764889') format('truetype'); +} + +.icon { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-del:before { + content: "\e718"; +} + +.icon-cut:before { + content: "\e609"; +} + +.icon-add:before { + content: "\e60a"; +} + +.icon-add-picture05:before { + content: "\e639"; +} + +.icon-add-picture04:before { + content: "\e636"; +} + +.icon-add-picture03:before { + content: "\e642"; +} + +.icon-add-picture02:before { + content: "\e8bc"; +} + +.icon-add-picture01:before { + content: "\e62c"; +} + +.icon-sandian:before { + content: "\e769"; +} + +.icon-nothing-collection:before { + content: "\e610"; +} + +.icon-nothing-more:before { + content: "\e624"; +} + +.icon-nothing-data:before { + content: "\e60c"; +} + +.icon-address-check:before { + content: "\e6c2"; +} + +.icon-address-unchecked:before { + content: "\e623"; +} + +.icon-navigate-now:before { + content: "\e640"; +} + +.icon-send-goods:before { + content: "\e601"; +} + +.icon-payment:before { + content: "\e602"; +} + +.icon-finish:before { + content: "\e63f"; +} + +.icon-take:before { + content: "\e649"; +} + +.icon-refund:before { + content: "\e613"; +} + +.icon-customer-black:before { + content: "\ec2e"; +} + +.icon-customer:before { + content: "\e628"; +} + +.icon-check:before { + content: "\e61e"; +} + +.icon-del-white:before { + content: "\e61f"; +} + +.icon-screen:before { + content: "\e60b"; +} + +.icon-search:before { + content: "\e653"; +} + +.icon-caidan-mo:before { + content: "\e73e"; +} + +.icon-renwu-mo:before { + content: "\e73f"; +} + +.icon-shop-cart:before { + content: "\e73d"; +} + +.icon-caidan-active:before { + content: "\e608"; +} + +.icon-renwu-acitve:before { + content: "\e67c"; +} + +.icon-home-mo:before { + content: "\e673"; +} + +.icon-home-active:before { + content: "\e674"; +} + +.icon-return:before { + content: "\e600"; +} + +.icon-next:before { + content: "\e60e"; +} + diff --git a/commons/style.css b/commons/style.css new file mode 100644 index 0000000..c8eb9c8 --- /dev/null +++ b/commons/style.css @@ -0,0 +1,78 @@ +/* 首页 */ +.home-message-box {line-height: 60rpx;} +.home-message-box image { + width: 30rpx; + height: 35rpx; +} +.home-message-box view { + position: absolute; + left: 14rpx; + top: -16rpx; + width: 40rpx; + height: 40rpx; + display: flex;justify-content: center;align-items: center; + border-radius: 100%; + font-size: 22rpx; + background-color: #e93030; + color: #FFFFFF; + transform: scale(.8); +} +.project-notice-box { + position: relative; + z-index: 1; + background-color: #FFFFFF; + margin: 20rpx 0; + border-radius: 10rpx; + box-shadow: 6rpx 6rpx 20rpx rgba(0, 162, 234, 0.3); + margin-top: -70rpx; + padding: 20rpx 0; +} +.home-fun-box { + background-color: #FFFFFF; + padding: 30rpx; + margin-bottom: 20rpx; +} +.fun-title::before { + content: ''; + display: block; + width: 7rpx; + height: 30rpx; + background: linear-gradient(to top, #FFFFFF 0%, #03affb 40%, #03affb 100%); + border-radius: 26%; + margin-right: 10rpx; +} +.home-solution { + background-color: #FFFFFF; +} +.solution-title { + bottom: 6rpx; + left: -40rpx; + right: -40rpx; + padding: 6rpx; + background-color: rgba(255,255,255,0.6); + transform: scale(.6); + text-align: center; +} +.engineer-num { + position: absolute; + top: -16rpx; + right: -12rpx; + font-size: 24rpx; + background-color: #f03232; + width: 36rpx; + height: 36rpx; + display: flex;justify-content: center;align-items: center; + border-radius: 100%; + color: #FFFFFF; + transform: scale(.8); + +} +/* 我的页面 */ +.my-exit-btn{ + height: 88rpx; + display: flex;justify-content: center;align-items: center; + border-radius: 88rpx; + background-color: #03affb; + color: #FFFFFF; + margin-top: 40rpx; +} \ No newline at end of file diff --git a/components/containers/readme.md b/components/containers/readme.md new file mode 100644 index 0000000..c2b37f6 --- /dev/null +++ b/components/containers/readme.md @@ -0,0 +1,37 @@ +第一步:引入组件 + + import statusContainer from '@/components/containers/status-container.vue'; + +第二步:注册组件 + + export default { + components:{ + statusContainer + } + } + +第三步:使用组件 + + + +参数说明 + + ifTitle:是否显示标题,默认true + titlet:标题文字,默认标题 + ifTitleCenter:标题是否居中,默认居中 + titlec:标题颜色,默认#000000 + ifReturn:是否显示返回键,默认显示 + returnc:返回键颜色,默认#333333 + backgroundc:导航栏背景色,默认#FFFFFF \ No newline at end of file diff --git a/components/containers/status-container.vue b/components/containers/status-container.vue new file mode 100644 index 0000000..8a8099f --- /dev/null +++ b/components/containers/status-container.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/components/customer/customer-one.vue b/components/customer/customer-one.vue new file mode 100644 index 0000000..2afdbae --- /dev/null +++ b/components/customer/customer-one.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/components/customer/public-customer.vue b/components/customer/public-customer.vue new file mode 100644 index 0000000..8633740 --- /dev/null +++ b/components/customer/public-customer.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/components/foot-tabs/foot-tab.vue b/components/foot-tabs/foot-tab.vue new file mode 100644 index 0000000..a1cab8f --- /dev/null +++ b/components/foot-tabs/foot-tab.vue @@ -0,0 +1,204 @@ + + + + diff --git a/components/foot-tabs/readme.md b/components/foot-tabs/readme.md new file mode 100644 index 0000000..a21cbf8 --- /dev/null +++ b/components/foot-tabs/readme.md @@ -0,0 +1,37 @@ +第一步:引入组件 + + import footTab from '@/components/foot-tabs/foot-tab.vue'; + +第二步:注册组件 + + export default { + components:{ + footTab + } + } + +第三步:使用组件 + + + +参数说明 + + current:当前选中项,默认0表示第一项 + isIcon:哪个图标突出,默认2表示从索引0开始数,第二个图标突出 + backgroundImage:底部导航背景图片,默认空值 + backgroundColor:背景颜色,默认#FFFFFF + isGradualChange:是否开启背景颜色渐变,默认开启 + direction:渐变方向,默认right top + colorOne:第一种颜色,默认#FFFFFF + colorTwo:第二种颜色,默认#FFFFFF + colorThree:第三种颜色,默认#FFFFFF + colorFour:第四种颜色,默认#FFFFFF + boxShadowNum:阴影大小0~1之间 0表示没有阴影,默认0.1 \ No newline at end of file diff --git a/components/function-list/column/column-function.vue b/components/function-list/column/column-function.vue new file mode 100644 index 0000000..50d15cd --- /dev/null +++ b/components/function-list/column/column-function.vue @@ -0,0 +1,82 @@ + + + + + \ No newline at end of file diff --git a/components/function-list/column/readme.md b/components/function-list/column/readme.md new file mode 100644 index 0000000..40af453 --- /dev/null +++ b/components/function-list/column/readme.md @@ -0,0 +1,43 @@ +第一步:引入组件 + + import columnFunction from '@/components/function-list/column/column-function.vue'; + +第二步:注册组件 + + export default { + components:{ + columnFunction + } + } + +第三步:使用组件 + + + +参数说明 + + list:列表数据,默认以下数组: + [ + {iconsrc:'',iconWidth:60,iconHeight:60,title:'标题一',content:'',contentColor:'#999999',ifNext:true}, + {iconsrc:'',iconWidth:60,iconHeight:60,title:'标题二',content:'',contentColor:'#999999',ifNext:true}, + {iconsrc:'',iconWidth:60,iconHeight:60,title:'标题三',content:'',contentColor:'#999999',ifNext:true}, + ] + titlec:标题颜色,默认#000000 + ifIcon:是否显示左侧图标,默认false + ifLine:是否显示下划线,默认true + linec:下划线颜色,默认#EEEEEE + ifLastLine:是否显示最后一条下划线,默认true + +方法使用 + + export default { + methods:{ + chooseEv(obj) { + console.log(obj); + }, + } + } \ No newline at end of file diff --git a/components/function-list/gong-ge/gong-ge-function.vue b/components/function-list/gong-ge/gong-ge-function.vue new file mode 100644 index 0000000..84e9dd5 --- /dev/null +++ b/components/function-list/gong-ge/gong-ge-function.vue @@ -0,0 +1,106 @@ + + + + \ No newline at end of file diff --git a/components/function-list/gong-ge/readme.md b/components/function-list/gong-ge/readme.md new file mode 100644 index 0000000..d00645b --- /dev/null +++ b/components/function-list/gong-ge/readme.md @@ -0,0 +1,47 @@ +第一步:引入组件 + + import gongGeFunction from '@/components/function-list/gong-ge/gong-ge-function.vue'; + +第二步:注册组件 + + export default { + components:{ + gongGeFunction + } + } + +第三步:使用组件 + + + +参数说明 + + list:列表数据,默认以下数组: + [ + {url:'',iconsrc:'',iconWidth:60,iconHeight:60,title:'标题一'}, + {url:'',iconsrc:'',iconWidth:60,iconHeight:60,title:'标题二'}, + {url:'',iconsrc:'',iconWidth:60,iconHeight:60,title:'标题三'}, + {url:'',iconsrc:'',iconWidth:60,iconHeight:60,title:'标题四'}, + {url:'',iconsrc:'',iconWidth:60,iconHeight:60,title:'标题五'}, + {url:'',iconsrc:'',iconWidth:60,iconHeight:60,title:'标题五'}, + {url:'',iconsrc:'',iconWidth:60,iconHeight:60,title:'标题五'}, + ] + rowNum:一排显示数量,默认5 + titlec:标题颜色,默认#000000 + fonts:字体大小,默认28rpx + titleTop:字体距离图标的距离,默认20rpx + itemTop:item的顶部距离,默认30rpx + +方法使用 + + export default { + methods:{ + chooseGe(obj) { + console.log(obj); + }, + } + } \ No newline at end of file diff --git a/components/list/list-one.vue b/components/list/list-one.vue new file mode 100644 index 0000000..17907c4 --- /dev/null +++ b/components/list/list-one.vue @@ -0,0 +1,70 @@ + + + + + \ No newline at end of file diff --git a/components/nothing/nothing-page.vue b/components/nothing/nothing-page.vue new file mode 100644 index 0000000..b0c34ae --- /dev/null +++ b/components/nothing/nothing-page.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/components/nothing/pitera.vue b/components/nothing/pitera.vue new file mode 100644 index 0000000..25b6cc7 --- /dev/null +++ b/components/nothing/pitera.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/components/nothing/readme.md b/components/nothing/readme.md new file mode 100644 index 0000000..b3ab5cd --- /dev/null +++ b/components/nothing/readme.md @@ -0,0 +1,19 @@ + + diff --git a/components/scroll-views/readme.md b/components/scroll-views/readme.md new file mode 100644 index 0000000..6a36ca9 --- /dev/null +++ b/components/scroll-views/readme.md @@ -0,0 +1,30 @@ +第一步:引入组件 + + import scrollTextSlide from '@/components/scroll-views/scroll-text-slide.vue'; + +第二步:注册组件 + + export default { + components:{ + scrollTextSlide + } + } + +第三步:使用组件 + + + +参数说明 + + list:数据列表,默认['全部', '测试', '测试宽度', '测试宽度三号', '测试宽度四号小星星', '测试宽度五号'] + activeIndex:选中索引,默认0 + config:未选中、选中、下划线的样式,默认为以下对象: + { + color: '#999999',//默认时字体颜色 + activeColor: '#000000',//选中时字体颜色 + underLineColor: '#000000',//下滑线颜色 + } \ No newline at end of file diff --git a/components/scroll-views/scroll-text-slide.vue b/components/scroll-views/scroll-text-slide.vue new file mode 100644 index 0000000..509991d --- /dev/null +++ b/components/scroll-views/scroll-text-slide.vue @@ -0,0 +1,257 @@ + + + + + diff --git a/components/shopping-carts/cart-slide.vue b/components/shopping-carts/cart-slide.vue new file mode 100644 index 0000000..1b17eeb --- /dev/null +++ b/components/shopping-carts/cart-slide.vue @@ -0,0 +1,411 @@ + + + + + diff --git a/components/status-navs/readme.md b/components/status-navs/readme.md new file mode 100644 index 0000000..6af41cc --- /dev/null +++ b/components/status-navs/readme.md @@ -0,0 +1,43 @@ +第一步:引入组件 + + import statusNav from '@/components/status-navs/status-nav.vue'; + +第二步:注册组件 + + export default { + components:{ + statusNav + } + } + +第三步:使用组件 + + + +参数说明 + + ifTitle:是否显示标题,默认true + navBarTitle:导航栏标题,默认空值 + ifCenter:标题是否居中,默认居中 + titleColor:标题颜色,默认#000000 + ifReturn:是否显示返回键,默认显示 + returnc:返回键颜色,默认#333333 + backgroudColor:状态栏、导航栏背景颜色,默认#FFFFFF + navBarHeight:导航栏高度,默认40px + clipNumber:标题最多几行显示,默认1 + marginBottom:底部距离内容多高,默认20rpx \ No newline at end of file diff --git a/components/status-navs/status-nav.vue b/components/status-navs/status-nav.vue new file mode 100644 index 0000000..620c8dd --- /dev/null +++ b/components/status-navs/status-nav.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/components/swiper-tab/swiper-adaptive.vue b/components/swiper-tab/swiper-adaptive.vue new file mode 100644 index 0000000..befad1d --- /dev/null +++ b/components/swiper-tab/swiper-adaptive.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/components/swiper-tab/swiper-tab-jl.vue b/components/swiper-tab/swiper-tab-jl.vue new file mode 100644 index 0000000..cf1a6b1 --- /dev/null +++ b/components/swiper-tab/swiper-tab-jl.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/components/swiper-tab/swiper-tab-slide.vue b/components/swiper-tab/swiper-tab-slide.vue new file mode 100644 index 0000000..234c4a9 --- /dev/null +++ b/components/swiper-tab/swiper-tab-slide.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/components/swiper-tab/swiper-tab.vue b/components/swiper-tab/swiper-tab.vue new file mode 100644 index 0000000..b882c7d --- /dev/null +++ b/components/swiper-tab/swiper-tab.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/components/swipers/readme.md b/components/swipers/readme.md new file mode 100644 index 0000000..33d4513 --- /dev/null +++ b/components/swipers/readme.md @@ -0,0 +1,34 @@ +第一步:引入组件 + + import swiperPu from '@/components/swipers/swiper-pu.vue'; + +第二步:注册组件 + + export default { + components:{ + 'custom-swiper':swiperPu + } + } + +第三步:使用组件 + + + +参数说明 + + isplay:是否自动轮播,默认不轮播 + isDot:是否显示指示点,默认显示 + bannerList:默认轮播图片,默认值为以下数组: + [ + {imgSrc:'https://s6.jpg.cm/2022/02/14/L4oDhy.jpg',url:'',isVideo:false,poster:''}, + {imgSrc:'https://s6.jpg.cm/2022/02/14/L4oDhy.jpg',url:'',isVideo:false,poster:''}, + {imgSrc:'https://s6.jpg.cm/2022/02/14/L4oDhy.jpg',url:'',isVideo:false,poster:''}, + ] + newHeight:swiper的高,默认200px + newBottom:指示点距离底部位置,默认18px + newRadius:图片圆角,默认0px + browseP:是否可预览,默认不能预览 \ No newline at end of file diff --git a/components/swipers/swiper-pu.vue b/components/swipers/swiper-pu.vue new file mode 100644 index 0000000..a49876b --- /dev/null +++ b/components/swipers/swiper-pu.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/jsFile/public-api.js b/jsFile/public-api.js new file mode 100644 index 0000000..71f6d4c --- /dev/null +++ b/jsFile/public-api.js @@ -0,0 +1,4 @@ +import request from './requst.js'; +export function uploadImg(data) { + return request.upload("/universal/api.upload/upload", data); +} \ No newline at end of file diff --git a/jsFile/requst.js b/jsFile/requst.js new file mode 100644 index 0000000..749fb84 --- /dev/null +++ b/jsFile/requst.js @@ -0,0 +1,180 @@ +// 清理所有缓存并前往登录授权页 +const goLogin = () => { + uni.clearStorageSync(); + uni.navigateTo({ + url: '/pages/login/login' + }) +} +let flag = true; +// 刷新token并跳转到当前页面 +const refreshTokenPage = () => { + uni.login({ + provider: 'weixin', + success: (result)=> { + uni.request({ + url: `${getApp().globalData.hostapi}user/login`, + method: 'post', + data: {code:result.code}, + success: res => { + if(res.data.data.token!=''){ + flag = true; + uni.setStorageSync('token',res.data.data.token); // 缓存token + uni.setStorageSync('openid',res.data.data.openid)//缓存openid + uni.setStorageSync('expire',res.data.data.expire); // 缓存失效时间(时间戳格式) + uni.reLaunch({ // 重新进入当前页面 + url:uni.getStorageSync('page-path-options') + }) + } + } + }) + }, + }); +} +// 请求错误处理 +const checkError = (e) => { + // console.error("----接口错误----", e) + if (e.data) { + if (e.data.code) { + switch (Number(e.data.code)) { + case 500: + // 接口错误 + console.log('500接口错误'); + case 4003: + // 参数错误 + console.log('4003参数错误'); + break; + case 4004: + // 记录不存在 + console.log('4004记录不存在'); + break; + case 5001: + // xxx错误 + console.log('5001xxx错误'); + break; + case 5050: + // 服务器错误,请稍后重试 + console.log('5050服务器错误,请稍后重试'); + // 调用到登录页 + goLogin(); + break; + case 5051: + // 未知错误 + console.log('5051未知错误'); + break; + case 6001: + // token验证失败或已失效 + console.log('6001token验证失败或已失效'); + if(flag) { + flag = false; + // 调用刷新token事件并跳转到当前页面 + refreshTokenPage(); + } + break; + } + } + } +} + +// 封装request的(GET、POST)请求 +const request = (method, url, options) => { + let methods = ''; + let headers = {}; + switch (method) { + case 'get': + methods = 'GET' + headers = { + 'Content-Type': 'application/json; charset=UTF-8', + 'Authorization': 'Bearer '+uni.getStorageSync('token') || '' + } + break; + case 'post': + methods = 'POST' + headers = { + 'Content-Type': 'application/json; charset=UTF-8', + 'Authorization': 'Bearer '+uni.getStorageSync('token') || '' + } + break; + case 'postForm': + methods = 'POST' + headers = { + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'Authorization': 'Bearer '+uni.getStorageSync('token') || '' + } + break; + } + return new Promise((resolve, reject) => { + uni.request({ + url: `${getApp().globalData.hostapi}${url}`, + method: methods, + data: options, + header: headers, + success: res => { + console.log(`${url}返的结果===>`,res); + if (res.statusCode == 200) { + if (res.data.code == 0) { + // 接口调用成功 + resolve(res.data); + } else { + // 接口返回错误信息 + checkError(res); + } + } else { + // 接口返回错误信息 + checkError(res); + } + }, + fail: e => { + // 接口请求错误 + checkError(e, reject); + }, + complete: rest => { + // 是否成功,都会执行 + console.log(rest,100); + } + }) + }) +} +// 上传文件 封装请求 +const uploadFile = (url, options) => { + let tempData = options || {} + return new Promise((resolve, reject) => { + uni.uploadFile({ + url: `${getApp().globalData.hostapi}${url}`, + filePath: tempData.path, + name: 'image', + fileType:'image', + formData: tempData, + header: { + 'Content-Type': 'multipart/form-data;charset=UTF-8', + 'Authorization': 'Bearer '+uni.getStorageSync('token') || '' + }, + success: res => { + if (res.statusCode == 200) { + let temp = JSON.parse(res.data) + if (temp.code == 0) { + resolve(temp) + } + } + } + }); + }) +} + + +export default { + get: (url, options) => { + return request('get', url, options) + }, + // JOSN格式 + post: (url, options) => { + return request('post', url, options) + }, + // form-data格式 + postForm: (url, options) => { + return request('postForm', url, options) + }, + // 上传 + upload: (url, options) => { + return uploadFile(url, options) + } +} diff --git a/jsFile/tools.js b/jsFile/tools.js new file mode 100644 index 0000000..5b0723a --- /dev/null +++ b/jsFile/tools.js @@ -0,0 +1,609 @@ +const tools = { + timer:'', + /** + * @description 埋点倒计时 + */ + daoTime(){ + let daoTime = uni.getStorageSync('daoTime') + if(daoTime==''){//初次判断倒计时是否为空 + uni.setStorageSync('daoTime',60)//设置倒计时 + daoTime = uni.getStorageSync('daoTime') + this.timer = setInterval(()=>{ + uni.setStorageSync('daoTime',daoTime--)//设置倒计时 + if(uni.getStorageSync('daoTime')<=0 || uni.getStorageSync('maiList').length==5){ + uni.removeStorageSync('daoTime')//清空倒计时 + clearInterval(this.timer)//关闭倒计时 + // console.log('上/报,埋点'); + uni.removeStorageSync('maiList')//清空上报参数 + this.daoTime()//重新倒计时 + } + },1000) + } else {//继续当前倒计时倒计 + this.timer = setInterval(()=>{ + uni.setStorageSync('daoTime',daoTime--)//设置倒计时 + if(uni.getStorageSync('daoTime')<=0 || uni.getStorageSync('maiList').length==5){ + uni.removeStorageSync('daoTime')//清空倒计时 + clearInterval(this.timer)//关闭倒计时 + // console.log('上报,埋点'); + uni.removeStorageSync('maiList')//清空上报参数 + this.daoTime()//重新倒计时 + } + },1000) + } + }, + /** + * @description 关闭倒计时 + */ + closeTimer(){ + clearInterval(this.timer) + console.log('倒计时清空了'); + }, + /** + * @description 获取字符串中的数字 + */ + obtainCount(str) { + return parseInt(str.replace(/[^0-9]/ig,"")) + }, + /** + * @description 获取微信扫码后的结果,并解析 + */ + unescapeEv(op) { + let str = unescape(op.q); + return str; + }, + /** + * @description 手机号验证 + */ + isPhone:function(phone){ + // 手机号正则表达式 + let reg_tel = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/; + return !reg_tel.test(phone); + }, + /** + * @description 电子邮箱验证 + */ + isEmail(email){ + let reg_email = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; + return !reg_email.test(email); + }, + /** + * @description 身份证验证 + */ + isIdentity(identity) { + let reg_identity = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; + return !reg_identity.test(identity); + }, + /** + * @description 手机号中间四位用"****"带替 + */ + hideMPhone(phone){ + return `${phone.substr(0, 3)}****${phone.substr(7)}` + }, + /** + * @description 手机号中间加字符 + */ + phoneAddChat(phone,startNum=3,endNum=7,character=' '){ + let phoneStr = phone; + phoneStr = phoneStr.replace(/\s*/g, ""); + var phoneArr = []; + for(var i = 0; i < phoneStr.length; i++){ + if (i==startNum||i==endNum){ + phoneArr.push(`${character}` + phoneStr.charAt(i)); + } else { + phoneArr.push(phoneStr.charAt(i)); + } + } + phone = phoneArr.join(""); + return phone; + }, + /** + * @description 昵称从第一个字开始,后面的都用"*"代替 + */ + hideName(name,num){ + return `${name.substr(0, 1)}****${name.substr(name.length-1)}` + }, + /** + * @description 金额转换各三位数使用英文","隔开 + */ + changeNum(num){ + if (num) { + // 针对整数部分进行格式化处理,这是此方法的核心,也是稍难理解的一个地方,逆向的来思考或者采用简单的事例来实现就容易多了 + /* + 也可以这样想象,现在有一串数字字符串在你面前,如果让你给他家千分位的逗号的话,你是怎么来思考和操作的? + 字符串长度为0/1/2/3时都不用添加 + 字符串长度大于3的时候,从右往左数,有三位字符就加一个逗号,然后继续往前数,直到不到往前数少于三位字符为止 + */ + num = num+''; // 数字转换为字符串,数字是没有.length属性的 + for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) { + num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3)) + } + // 将数据(符号、整数部分、小数部分)整体组合返回 + return num; + } + }, + /** + * @description 整数添加.00,小数就不添加 + */ + addXiaoShu(num){ + // console.log(num,'添加小数点后两位小数'); + let str = num.toString(); + str = str*1; + str = str.toFixed(2); + str = str+''; + return str.includes('.') ? str : str = num + '.00'; + }, + // type:+加、-减、*乘、/除 + // len:小数后保留几位 + /** + * @description 数字换算解决失精度问题 + */ + operationEv(num1,num2,type,len=0){ + // 将数字转化成字符串 + num1 = num1.toString(); + num2 = num2.toString(); + // 获取小数点的位置 + var index1 = num1.indexOf("."); + var index2 = num2.indexOf("."); + // 如果小数点存在,那么就再获取各自的小数位数 + var ws1 = 0; + var ws2 = 0; + if(index1 != -1){ + ws1 = num1.split(".")[1].length; + } + if(index2 != -1){ + ws2 = num2.split(".")[1].length; + } + // 看谁的小数位数大,谁的小数位数小 + var bigger = (ws1 > ws2) ? ws1 : ws2; + var smaller = (ws1 < ws2) ? ws1 : ws2; + // 计算得到需要补齐的0的个数 + var zerosCount = bigger - smaller; + // 好了,现在不管三七二十,全部去除小数点 + num1 = num1.replace(".",""); + num2 = num2.replace(".",""); + // 比较num1和num2谁大,比较方法就是看谁是smaller,是smaller的一方就补0 + if(ws1 == smaller){ + for (var i = 0; i < zerosCount; i++) { + num1 += "0"; + } + } else { + for (var i = 0; i < zerosCount; i++) { + num2 += "0"; + } + } + // 开始计算 + var sum = ""; + if(type=="+"){ + // 加 + sum = parseInt(num1) + parseInt(num2); + } + if(type=="-"){ + // 减 + sum = parseInt(num1) - parseInt(num2); + } + if(type=="*"){ + // 乘 + sum = parseInt(num1) * parseInt(num2); + } + if(type=="/"){ + // 除 + sum = parseInt(num1) / parseInt(num2); + } + // 根据较大的小数位数计算倍数 + var beishu = 1; + for (var i = 0; i < bigger; i++) { + beishu = beishu*10; + } + sum = sum/beishu; + if(type=="*"){ + switch (bigger){ + case 1: + sum = sum / 10; + break; + case 2: + sum = sum / 100; + break; + case 3: + sum = sum / 1000; + break; + } + } + if(type=="/"){ + switch (bigger){ + case 1: + sum = sum * 10; + break; + case 2: + sum = sum * 100; + break; + case 3: + sum = sum * 1000; + break; + } + } + len!=0 ? sum = sum.toFixed(len) : ''; + return sum; + }, + /** + * @description 金额输入框验证 + */ + checkPrice(number,zong){ + let reg = /^[0-9]*$/;//数字正则表达式 + let newObj = {} + zong = parseInt(zong).toString()//取小数点左边的整数 + if(!reg.test(number)){//不是数字时 + newObj = { + len:zong.length,//动态设置长度 + val:zong//动态设置值正整数的总金额 + } + } else {//是数字时 + newObj = { + len:zong.length, + val:number//动态设置当前输入的值 + } + if(number*1 > zong*1){//输入的金额大于总金额 + newObj.val = zong//赋值总金额 + } + } + return newObj + }, + /** + * @description 文本提示 + */ + showToast: function(msg, icon='none',time) { + // 弹框显示时间:默认2秒 + var newTime = 2000 + if (time) {newTime = time;} + return uni.showToast({ + title: msg, + icon: icon, + duration:newTime + }) + }, + /** + * @description 富文本处理 + */ + escape2Html(str) { + var arrEntities = { 'lt': '<', 'gt': '>', 'nbsp': ' ', 'amp': '&', 'quot': '"' }; + return str.replace(/&(lt|gt|nbsp|amp|quot|src);/ig, function (all, t) { + return arrEntities[t]; + }) + .replace(']*src=['"]([^'"]+)[^>]*>/gi, (match, p1) => { + return ` -1 ? p1 : 'https://oss.hmzfyy.cn' + p1}' />` + }) + }, + /** + * @description 检查网络状态 + */ + networkStatus(){ + uni.getNetworkType({ + success: (res)=> { + console.log('当前网络状态:',res.networkType);//none:当前无网络连接 + if(res.networkType=='none'){ + uni.setStorageSync('isNet',false) + } else { + uni.setStorageSync('isNet',true); + // 微信小程序原生API性能优化 + // #ifdef MP-WEIXIN + // 连网下,检测小程序是否有更新 + this.checkUpdate(); + // #endif + } + } + }); + }, + /** + * @description app、小程序的检测版本并更新 + */ + checkUpdate(){ + // 检测app + // #ifdef APP-PLUS + + // #endif + //检测小程序 + // #ifdef MP-WEIXIN + var self = this; + // 获取小程序更新机制兼容 + if (wx.canIUse('getUpdateManager')) { + const updateManager = wx.getUpdateManager();//1. 检查小程序是否有新版本发布 + updateManager.onCheckForUpdate(function(res) {// 请求完新版本信息的回调 + if (res.hasUpdate) { + //检测到新版本,需要更新,给出提示 + wx.showModal({ + title: '更新提示', + content: '检测到新版本,是否下载新版本并重启小程序?', + success: function(res) { + if (res.confirm) { + //2. 用户确定下载更新小程序,小程序下载及更新静默进行 + self.downLoadAndUpdate(updateManager) + // 清除所有缓存 + uni.clearStorage(); + uni.clearStorageSync(); + } else if (res.cancel) { + //用户点击取消按钮的处理,如果需要强制更新,则给出二次弹窗,如果不需要,则这里的代码都可以删掉了 + wx.showModal({ + title: '温馨提示~', + content: '本次版本更新涉及到新的功能添加,旧版本无法正常访问的哦~', + showCancel:false,//隐藏取消按钮 + confirmText:"确定更新",//只保留确定更新按钮 + success: function(res) { + if (res.confirm) { + //下载新版本,并重新应用 + self.downLoadAndUpdate(updateManager) + } + } + }) + } + } + }) + } + }) + } else { // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示 + wx.showModal({ + title: '提示', + content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。' + }) + } + // #endif + }, + // 下载小程序新版本并重启应用 + downLoadAndUpdate(updateManager){ + var self = this; + wx.showLoading(); //静默下载更新小程序新版本 + updateManager.onUpdateReady(function () { + wx.hideLoading(); //新的版本已经下载好,调用 applyUpdate 应用新版本并重启 + updateManager.applyUpdate(); + // 清除缓存 + uni.clearStorageSync(); + uni.clearStorage(); + }) + updateManager.onUpdateFailed(function () { // 新的版本下载失败 + wx.showModal({ + title: '已经有新版本了哟~', + content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~', + }) + }) + }, + /** + * @description 文本复制 + */ + clickCopy(data){ + uni.setClipboardData({ + data: data, + success: ()=> { + uni.showToast({title: '复制成功',duration: 2000,icon: 'none'}); + } + }); + }, + authTimer:null, + /** + * @description 判断是否授权,没授权,前往登录页面授权 + */ + judgeAuth(){ + let auth = false; + clearTimeout(this.authTimer); + if(!uni.getStorageSync('token')) { + this.showToast('请登录'); + this.authTimer = setTimeout(()=>{ + uni.navigateTo({url:'/pages/login/login'}); + },2000) + } else { + auth = true; + } + return auth; + }, + /** + * @description 判断当前环境:清空日志输出 + */ + currentContext(){ + // #ifdef APP-PLUS + if(uni.getSystemInfoSync().platform != "devtools"){//devtools:开发版 值域为:ios、android、mac(3.1.10+)、windows(3.1.10+)、linux(3.1.10+) + // console.log = () =>{} + } + // #endif + // 微信小程序原生API性能优化 + // #ifdef MP-WEIXIN + let hInfo = wx.getAccountInfoSync(); + // console.log(hInfo.envVersion);//develop:开发版 trial:体验版 release:正式版 + if(hInfo.miniProgram.envVersion == "release"){ + // 清除所有输出日志 + console.log = () =>{}; + // 开启埋点倒计时 + // this.daoTime(); + } + // #endif + }, + /** + * @description 禁止小程序使用右上角分享 + */ + disableShareEv(){ + // #ifdef MP-WEIXIN + wx.hideShareMenu({ + menus: ['shareAppMessage', 'shareTimeline'] + }) + // #endif + }, + /** + * @description 获取当前页面完整url + */ + obtainPagePath(){ + let pages = getCurrentPages(); + // 获取纯页面路径 + let route = pages[pages.length - 1].route; + uni.setStorageSync('url',route); + // 获取当前页面url,带参数 + let routeParam = pages[pages.length - 1].$page.fullPath; + // console.log(routeParam.options,'获取当前url参数'); + uni.setStorageSync('page-path-options',routeParam); + console.log(uni.getStorageSync('page-path-options'),'当前页面完整路径'); + }, + /** + * @description 拨打电话 + * @param {Number} phone + */ + countCustomer(phone=10086){ + const res = uni.getSystemInfoSync(); + if(res.platform=='ios'){ + uni.makePhoneCall({ + phoneNumber:phone*1, + success: () => {}, + fail: () => {} + }) + } else { + uni.showActionSheet({ + itemList:[phone,'立即呼叫'], + itemColor:'#3875F6', + success: (res) => { + if(res.tapIndex==1){ + uni.makePhoneCall({ + phoneNumber:phone + }) + } + } + }) + } + }, + /** + * @description 图片选择 + * @param {Number} count + */ + uploadImg(count=1) { + let imgArr = []; + uni.chooseImage({ + count:count, + sizeType:['compressed'], + sourceType:['album','camera'], + success: (res) => { + let files = res.tempFilePaths + console.log(files); + files.forEach(item=>{ + imgArr.push(item); + }) + } + }) + return imgArr; + }, + /** + * @description 打开小程序获取用户信息权限 + */ + wxOpenSet() { + // #ifdef MP-WEIXIN + // 用户信息 + uni.authorize({ + scope:'scope.userInfo', + success: (res) => {}, + fail: (res) => { + uni.showModal({ + content:'检测到您没打开获取信息功能权限,是否去设置打开?', + confirmText: "确认", + cancelText:'取消', + success: (res) => { + if(res.confirm){ + uni.openSetting({ + success: (res) => { + console.log(res); + } + }) + }else{ + console.log('取消'); + } + } + }) + } + }) + // #endif + }, + /** + * @description 传入目的地的经纬度、地点名称、详细地址,打开地图导航到达目的地 + */ + goFlag:true, + goThere(latitude=30.656693,longitude=104.136425,name="大向天诚有限责任公司",address="四川省成都市成华区双店路B口"){ + if(this.goFlag){ + this.goFlag = false; + // #ifdef MP-WEIXIN + wx.getLocation({//获取当前经纬度 + type: 'wgs84', //返回可以用于wx.openLocation的经纬度,官方提示bug: iOS 6.3.30 type 参数不生效,只会返回 wgs84 类型的坐标信息 + success: (res)=> { + wx.openLocation({//​使用微信内置地图查看位置。 + latitude: parseFloat(latitude),//要去的纬度-地址 + longitude: parseFloat(longitude),//要去的经度-地址 + name: name, + address: address, + fail:err=>{ + tools.showToast('地址信息错误'); + } + }) + } + }) + // #endif + + // #ifdef APP-PLUS || H5 + uni.openLocation({ + latitude: parseFloat(latitude), + longitude: parseFloat(longitude), + name:name, + address:address, + success:()=> { + console.log('success'); + }, + fail:err=>{ + console.log(err) + } + }); + // #endif + setTimeout(()=>{ + this.goFlag = true; + },2000) + } else { + tools.showToast('请勿多次点击'); + } + }, + /** + * @description 保存图片 + * @param {String} src + */ + saveImg(src) { + // #ifdef APP-PLUS + uni.saveImageToPhotosAlbum({ + filePath: src, + success:(resimg)=> {} + }); + // #endif + // #ifdef MP-WEIXIN + let exist = src.slice(0,4); + if(exist=='http') { + uni.downloadFile({ + url: src, + success: (res) => { + uni.saveImageToPhotosAlbum({ + filePath: res.tempFilePath, + success: ()=> {}, + fail: () => { + uni.showToast({title:'保存失败',icon:'error'}) + } + }); + } + }) + } else { + wx.saveFile({ + tempFilePath: src, + success:(wximg)=> {} + }) + } + // #endif + } +} + + + + + + + + + + +export default { + tools +} \ No newline at end of file diff --git a/main.js b/main.js new file mode 100644 index 0000000..62a93f1 --- /dev/null +++ b/main.js @@ -0,0 +1,26 @@ +import Vue from 'vue'; +import App from './App'; +import store from './store' +Vue.prototype.$store = store + +import statusContainer from './components/containers/status-container.vue';//引入头部状态栏、导航栏、内容容器组件 +Vue.component('status-container',statusContainer);//全局注册头部状态栏、导航栏、内容容器组件 + +import nothingPage from './components/nothing/nothing-page.vue';//引入无内容组件 +Vue.component('nothing-page',nothingPage);//全局注册无内容组件 + +// 常用便捷式公共方法 +import tools from '@/jsFile/tools.js'; +Vue.prototype.$toolAll = tools; + +// 响应数据 +import requst from '@/jsFile/requst.js'; +Vue.prototype.$requst = requst; + +App.mpType = 'app'; + +const app = new Vue({ + store, + ...App +}) +app.$mount() diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..45031e2 --- /dev/null +++ b/manifest.json @@ -0,0 +1,87 @@ +{ + "name" : "app适配微信小程序", + "appid" : "__UNI__768F35C", + "description" : "这是一款基于uniapp开发的app和微信小程序的模板框架", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + "app-plus" : { + "usingComponents" : true, + "compilerVersion" : 3, + /* 5+App特有相关 */ + "modules" : { + "Payment" : {}, + "Share" : {} + }, + /* 模块配置 */ + "distribute" : { + /* 应用发布信息 */ + "android" : { + /* android打包配置 */ + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "ios" : {}, + /* ios打包配置 */ + "sdkConfigs" : { + "maps" : {}, + "payment" : { + "weixin" : { + "__platform__" : [ "ios", "android" ], + "appid" : "wx2654bc27c419ada6", + "UniversalLinks" : "" + } + }, + "push" : {}, + "geolocation" : {}, + "share" : { + "weixin" : { + "appid" : "wx2654bc27c419ada6", + "UniversalLinks" : "" + } + }, + "ad" : {} + } + }, + "splashscreen" : { + "alwaysShowBeforeRender" : false, + "waiting" : false + } + }, + /* SDK配置 */ + "quickapp" : {}, + /* 快应用特有相关 */ + "mp-weixin" : { + /* 小程序特有相关 */ + "appid" : "wxa02e44170bc722cd", + "setting" : { + "urlCheck" : true, + "es6" : true + }, + "usingComponents" : true, + "permission" : { + "scope.userLocation" : { + "desc" : "您的位置信息将用于小程序位置接口的效果展示" + } + } + }, + "mp-baidu" : { + "appid" : "24346353" + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a52bb17 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,15 @@ +{ + "name": "轮播视频和图片", + "version": "1.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "轮播视频和图片", + "version": "1.0.1", + "dependencies": { + "moment": "^2.29.3" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..b6383f3 --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "id": "zhuge-swiper", + "name": "轮播视频和图片", + "version": "1.0.1", + "description": "自动轮播视频和图片组件。播放视频时停止轮播,手动滑动swiper时视频停止播放", + "keywords": [ + "vue", + "swiper", + "zhuge" + ] +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..b455f07 --- /dev/null +++ b/pages.json @@ -0,0 +1,181 @@ +{ + "pages": [ + { + "path": "pages/tabbar/pagehome/pagehome", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false, + "navigationStyle": "custom", //禁用原生导航栏,微信小程序可用 + "navigationBarTextStyle": "black", + "app-plus": { + "titleNView": false, //禁用原生导航栏,APP和H5可用 + "bounce": "none", + "scrollIndicator": "none" + } + } + }, { + "path": "pages/tabbar/my/my", + "style": { + "navigationBarTitleText": "个人中心", + "navigationStyle": "custom" //禁用原生导航栏,微信小程序可用 + } + },{ + "path": "pages/tabbar/cart/cart", + "style": { + "navigationBarTitleText": "购物车", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/tabbar/cate/cate", + "style": { + "navigationBarTitleText": "分类", + "enablePullDownRefresh": false + } + } + ], + "subPackages": [{ //A包 + "root": "pagesA", + "pages": [ + { + "path" : "shopping-cart-slide/shopping-cart-slide", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "order-list/order-list", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ] + }, + { //B包 + "root": "pagesB", + "pages": [ + { + "path" : "login/login", + "style" : { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + }, + { + "path" : "login/xiey", + "style" : { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + } + ,{ + "path" : "shop-detail/shop-detail", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "buy-read/buy-read", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "disclaimers/disclaimers", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "business-profile/business-profile", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "search/search", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "settlement/settlement", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "finish/finish", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "order-detail/order-detail", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ] + } + ], + "preloadRule": { + "pages/tabbar/my/my": { + "network": "all", + "packages": ["pagesA"] + } + }, + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarBackgroundColor": "#FFFFFF", //导航栏背景色 + "navigationStyle": "custom", //禁用原生导航栏,微信小程序可用 + "backgroundColor":"#FFFFFF",//下拉显示出来的窗口的背景色 + "backgroundTextStyle":"light",//下拉 loading 的样式,仅支持 dark / light + // "transparentTitle":"none",//导航栏整体(前景、背景)透明设置。支持 always 一直透明 / auto 滑动自适应 / none 不透明 + "app-plus": { + "titleNView": false, //禁用原生导航栏,APP和H5可用 + "bounce": "none", + "scrollIndicator": "none" + } + }, + "condition" : { //模式配置,仅开发期间生效 + "current": 0, //当前激活的模式(list 的索引项) + "list": [ + { + "name": "", //模式名称 + "path": "", //启动页面,必选 + "query": "" //启动参数,在页面的onLoad函数里面得到 + } + ] + } +} diff --git a/pages/tabbar/cart/cart.vue b/pages/tabbar/cart/cart.vue new file mode 100644 index 0000000..6cc1fc4 --- /dev/null +++ b/pages/tabbar/cart/cart.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/pages/tabbar/cate/cate.vue b/pages/tabbar/cate/cate.vue new file mode 100644 index 0000000..7ed0cf7 --- /dev/null +++ b/pages/tabbar/cate/cate.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/pages/tabbar/my/my.vue b/pages/tabbar/my/my.vue new file mode 100644 index 0000000..9fb77d6 --- /dev/null +++ b/pages/tabbar/my/my.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/pages/tabbar/pagehome/pagehome.vue b/pages/tabbar/pagehome/pagehome.vue new file mode 100644 index 0000000..e8004b5 --- /dev/null +++ b/pages/tabbar/pagehome/pagehome.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/pagesA/order-list/order-list.vue b/pagesA/order-list/order-list.vue new file mode 100644 index 0000000..8ce2823 --- /dev/null +++ b/pagesA/order-list/order-list.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/pagesA/shopping-cart-slide/shopping-cart-slide.vue b/pagesA/shopping-cart-slide/shopping-cart-slide.vue new file mode 100644 index 0000000..5aa4613 --- /dev/null +++ b/pagesA/shopping-cart-slide/shopping-cart-slide.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/pagesB/business-profile/business-profile.vue b/pagesB/business-profile/business-profile.vue new file mode 100644 index 0000000..450ffce --- /dev/null +++ b/pagesB/business-profile/business-profile.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/pagesB/buy-read/buy-read.vue b/pagesB/buy-read/buy-read.vue new file mode 100644 index 0000000..7effa41 --- /dev/null +++ b/pagesB/buy-read/buy-read.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/pagesB/disclaimers/disclaimers.vue b/pagesB/disclaimers/disclaimers.vue new file mode 100644 index 0000000..a598391 --- /dev/null +++ b/pagesB/disclaimers/disclaimers.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/pagesB/finish/finish.vue b/pagesB/finish/finish.vue new file mode 100644 index 0000000..e0c8797 --- /dev/null +++ b/pagesB/finish/finish.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/pagesB/login/login.vue b/pagesB/login/login.vue new file mode 100644 index 0000000..6883869 --- /dev/null +++ b/pagesB/login/login.vue @@ -0,0 +1,219 @@ + + + diff --git a/pagesB/login/xiey.vue b/pagesB/login/xiey.vue new file mode 100644 index 0000000..34edab8 --- /dev/null +++ b/pagesB/login/xiey.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/pagesB/order-detail/order-detail.vue b/pagesB/order-detail/order-detail.vue new file mode 100644 index 0000000..4c15ec6 --- /dev/null +++ b/pagesB/order-detail/order-detail.vue @@ -0,0 +1,82 @@ + + + + + + diff --git a/pagesB/search/search.vue b/pagesB/search/search.vue new file mode 100644 index 0000000..373a721 --- /dev/null +++ b/pagesB/search/search.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/pagesB/settlement/settlement.vue b/pagesB/settlement/settlement.vue new file mode 100644 index 0000000..29234eb --- /dev/null +++ b/pagesB/settlement/settlement.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/pagesB/shop-detail/shop-detail.vue b/pagesB/shop-detail/shop-detail.vue new file mode 100644 index 0000000..1161c32 --- /dev/null +++ b/pagesB/shop-detail/shop-detail.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..9edc87c --- /dev/null +++ b/project.config.json @@ -0,0 +1,77 @@ +{ + "description": "项目配置文件", + "packOptions": { + "ignore": [] + }, + "setting": { + "urlCheck": true, + "es6": true, + "enhance": true, + "postcss": true, + "preloadBackgroundData": false, + "minified": true, + "newFeature": false, + "coverView": true, + "nodeModules": false, + "autoAudits": false, + "showShadowRootInWxmlPanel": true, + "scopeDataCheck": false, + "uglifyFileName": false, + "checkInvalidKey": true, + "checkSiteMap": true, + "uploadWithSourceMap": true, + "compileHotReLoad": false, + "lazyloadPlaceholderEnable": false, + "useMultiFrameRuntime": true, + "useApiHook": true, + "useApiHostProcess": true, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "useIsolateContext": false, + "userConfirmedBundleSwitch": false, + "packNpmManually": false, + "packNpmRelationList": [], + "minifyWXSS": true, + "disableUseStrict": false, + "minifyWXML": true, + "showES6CompileOption": false, + "useCompilerPlugins": false, + "ignoreUploadUnusedFiles": true + }, + "compileType": "miniprogram", + "libVersion": "2.22.0", + "appid": "wx987dc41899f719e8", + "projectname": "%E4%BD%A9%E4%B8%BD%E5%95%86%E5%9F%8E", + "debugOptions": { + "hidedInDevtools": [] + }, + "scripts": {}, + "staticServerOptions": { + "baseURL": "", + "servePath": "" + }, + "isGameTourist": false, + "condition": { + "search": { + "list": [] + }, + "conversation": { + "list": [] + }, + "game": { + "list": [] + }, + "plugin": { + "list": [] + }, + "gamePlugin": { + "list": [] + }, + "miniprogram": { + "list": [] + } + } +} \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..b3ab5cd --- /dev/null +++ b/readme.md @@ -0,0 +1,19 @@ + + diff --git a/static/deleteImg/icon-ge-01.png b/static/deleteImg/icon-ge-01.png new file mode 100644 index 0000000000000000000000000000000000000000..bb687157c42c0188cefa11071d93f2eef656d3a2 GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0vp^20(1Y!3-pIMON$sQaJ%WA+A9BKfQpR|AR1~eaa<4 ze!&dCx2{{J_xAbxx@6-|EK|zzHC4sV?dNesoMZyhw0Yc?9#* z9p*pyIhf1~*v|PmFkNCbk(^-4x8TV2Q-2$-OI@ik7x*#n2Kx`wb!q`e!}sw<7^;Yh zt)8?nAzPufRx+M()t2U>zdWsL^|$fq{`;2nd)lr0weGRm``#4)vcB`|ukXc#In9Oa z7H1E3vI&ZHdmNb7Fmb``xTU$v!(V$`U|!+6Dnu)bftk}O#psu1-x+~P3h(uwJ-qaM z{paV^N)PgE+rPwA`7`xbn16i4{-sZN;pfHc)P*J-;V#K5GdMC&zQk2{@@=tS-|q4I yItxs`eB{X$p|qlD2YOW0mY09Od}aUPZT`!>er9pauK5TIPXJ6Tx_kR_*DVwCvJ;{MZPqQE zRjIeDue(&iP$BvDRR#toAx{^_5RcTMX zu7jHQ<$344H?j4UZn!wJa@JG7b#_}4cZ3+ES53OkByD*rENXK=g4*)loHYegK23{o zHCEly*JN5IbdTq?PovVd$A+y;l6SJWw#x3gv7OtH z|Fe6&D^o7dF;K5_5k4gyG_T7te_>gJ_QFhuPi_9YHYn}kzh#}=xNo7*)_s}l<8`i; z*D1w2^4-0W{Mc&a+sq?n+fU#A!0oyxtNPc{DOJsd&Z~7-o&6N*jnoYiPh&0Hfsrnb*!9r!Ck>&%Jopr!dTl)iq{M{^5r`> zHkSTsdHy2v=^DEiao4!Mn>kESb!v>5z5Gr5IrXP+#h?D0_4!CsGQT9}gib3P3l8a` z7_obeNgJP^e#)+=6St9%b&`tq+rEVx7R`FYC4C`o)#~#}NtNz=yKkr`FX-%Y`8o9~ z-{L2Ce95S zzR5)Dax6O}F!h<*mL)cRFVep3RsXM8+Eykrol|b@(&qg7cRs_1pr=c}1 zE@_8gms<19-6GDO+EVEap8o`bxmIR4^`G38{riFYqRwT~Wl3Ca4Eh4TXTvtWc(}aW z0|%^ literal 0 HcmV?d00001 diff --git a/static/deleteImg/icon-ge-04.png b/static/deleteImg/icon-ge-04.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e43a06b03cf4c72f58dc07350a820d31d514fa GIT binary patch literal 643 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-s69RlfT!Hle!33r;NPYmiNxvk> zFPI@Xz%l7{N9?qqjTZbIAD$lDu}0;=&DmbgM)J(x&YxM{SW}*-AuYb3KhmA&_JOpk zdv@9}FfbN-x;Tb-9G^Pvd0(>uPs3TRDY0JScXwZxuKT}z_X;8LIZq5~9{DdiKk?}i zu>~CR+~RHquALI^=6~=t3fRAkabIWKPxc&5_g@h?4a*&mnoX779$sPj`}DK@4E&;u zXO8TPeRJg2v+iBe0g8%#I$z&E|LOTxz_M%$pJ-8wf!+b;Q$-E+cgmILt$D9JZ{D43z)rpmh(A$Z9n&gm23BDRj>M~Z&LVl-(|g;1uo0%C*Bs$S=kUIwNJS` zcI%pz^I6;c&zZj}+5Y@~>%K3NuNS*B|N6B3?BtTuKP{LK#jIYw_;;ln^P_ox)_#7T zbWhxs;pwtZ+rOWm`M_1$N~3HS3JPFTHQ-(2RI0qJL- zr}Mo}_W8^IWW|;S8A&w<&)%@5?luP=NQur(a(iv5_08_aiD}1o{FycV@?vfEztehT z=jo{H9(0seeH3#`qgCQ-dq9lwxh1_tjR#w9eR$^S@?_Oj{TugAJ(N1SdpR)X7(8A5 KT-G@yGywobEkF|ZE_H35f=~;<#%By^QO4XQ zeC|g>yNh!(4oP22I?CH+xL5lp8;kCl*#WOq=GP~`ubMCQQb{D3r*?_d-&Rvzi;^7- zbqvnZCQE!ae`nvuoT=l&>`=ns;#k}CW!k5$juCoHfrgEGzZXa`A6Ya(t589fLCdLP z!mH0tMIY;C9_4)^5Y3QQvP`>R{j_Hn>W&;MWf0kB&Y(Eg`hQ_}e9%Q^aSOHwD_9sK zfB49l{(q?K?UZxrZw*7~t@Qc%&W}`g95g=_9c=4q^;2=d^_2Ra^)JrKEq5wTeIEX4 z9?O|VPT5z#riO2hkhr!&>TY|E-_lnMHbu_1>$gaA2W7j?y~RJ_)Xu=IWo3#i1p2}HOU=K;N(q8p7%nQD3w@p`j(^20X;~$QjW=#`tPB@(X zyrb?wy>C?&%Sqq=X8yaKx7dq0{kz;M)Oi=JnOEDhm%VRy*X>P$ zx8CkzJfJk0Vc)#)%kfe#TlStV`uxr3rrf1kK52v13NyEeGVkb`T~fDJM`XI?3N{qj{Jh_u zr}l~2vPspEdUx zY+wAr_G@ImarvWyidM`1;5XBzKA)(uF4D|d?MzVODwEYA2R>$AIVxO~z!!5uq;l_} zfc3ktXjw$+eL1A+cKYW<)}CektClB+PMNK6HLqS^TiA{hd+T$T+_Tk{UGn+z4Bonl vc55Fx%$`)be#LL4>3dG}9=f*v^?!!i<&%w={iqZ|lgH!N`7p~kLYQQdzExDu6*vR z7{@a=_X+i;cT9hwbHt(R!)&;~&;jNt+&>bVsGi>b_J`uOCp=U5bGj$0@663zb;V?ZY5bS1T5FHqoH8SO%97=3ibB&I zF5FgmZg^PL)v!2!V*Pp}cebRD6B?HZJ63Ny*h^8zfXCqLr8<>+y%!^E648_Ecj9xoV+Pu$HJ>7ddYPrXPP!3-o56b#M+sjdK@5LY1me{g_r<{7;}*XWi6 z`2{ods;|j5|NZ%}$cd>|=Zc;z=x?qKy?=H8gbGi4JryxN)~~m>PwY%j;(W1QMvDE$ zni>WMMpjQ3#}JR>Z>JqEYBmsXxc-2_@k?A!wfD{c|MxzantahjIo{}GOL>y~dxoZq z9J}`XmgD(Ylg)iOq+^Dv?bMXD*4|ZZ=0(pHU(M;!d&z%-(=H>2>B){s_l{cc-Z9sU z`Tdefc8A${{E}{X|MF0=zR~@VMQB>iLCvfSi<;t%`RhzQYk0(CosR9lVWsoypM)xd zYG3Ed_=gf~?^WeLA+#y+g%oG@s44$rjF6*2UngAM6GhhG! literal 0 HcmV?d00001 diff --git a/static/deleteImg/icon-ge-08.png b/static/deleteImg/icon-ge-08.png new file mode 100644 index 0000000000000000000000000000000000000000..5df3718c1a6c0c0b358aa4668463d961536944b5 GIT binary patch literal 584 zcmeAS@N?(olHy`uVBq!ia0vp^+CXg1!3-o9O?MUoQZoa5LR^9L|3L|^%Cdw29cNS$ zU>a9H0|TRur;B5V$ML6^PUbZmh_pTwJ`o_pVVsiSb&1E<>fZPI9ZeyZB#s~J z)|>DvU&njC&gp#_yPgZM6-&9hJF!>)uPcOP4M=_Au!Dtre^1)dfZW zI#jzv@6p;_<;OFaUw-#rvwdz??p}5?jT=7#*KF8*t<7fg_G_Vu!uR&|iIydPe7=k; z`olD%R^DCj3z9ZTKY8@KYFU2Q&u6y-o+mPty=xKPc!87Uwc3QzjaFt&dpPr_`y>W; zZ`Qj!-?K~fTWiJc)l0U-lbf{TL zkY6yvb&ls-R$b2IfBoX|gEN7@zI{5fvLr!AUYhOQg?-x>OzZS? z%2<)?EKxn6Y0K)`jqhTe`w>9fa5oVb^~{a+uYW7OC4 z*kF^Ku_b@qgwk(WZo3beR~?dDTsrSV^Awd6tFFyivg1xP+sQ<&mcm7ww!S)@^>$O4 zT2O~H{}a>b3`J9in0cN{1eOc0JhF9m=9|;I0-V1+xZ%Q8sArlsGkeX>XAIR!Q!V0M zy&bf^IC`zfns-Zaxz?=ywOwKlS0#MSN}H0q;!xXF6Y;+9Q+u+e?=q+gc_wM@r!u3j zqP#lkVDabHi(9e^7d;Z0tlJ=AQPORDknzFPZOx0`2{j#E_E=?exbpqY%Ph+eANbyE z@XUYxb~&c-zfY_^w>ii@mRS+{!77*S0Y~^3ll-+NqcJ^!~I9R*&xYh*vu7j^na)78&qol`;+06ZCttN;K2 literal 0 HcmV?d00001 diff --git a/static/deleteImg/icon-ge-10.png b/static/deleteImg/icon-ge-10.png new file mode 100644 index 0000000000000000000000000000000000000000..54a41e8ef22c3a5186d1d059f9177af41b0e8925 GIT binary patch literal 731 zcmeAS@N?(olHy`uVBq!ia0vp^#vshW3=*k7AOWP72Ka=y0_p#Q9_;x0I27nmvyvdc zV1~y2c^}?BJ-apZ&%+(PX`HVnX2*NG=&DQKxV)@3Kv`UXo#p$Hjw%Nm<4=1xt}Tv` zpD|@}w8cc0{&)rk#`T^qjv*e$uTHx;t;s;ZMVfV@EMse->z!kzb9Ddz&t&dUY&ll^ ztMJvvS9erqy}R&Xg7^)oWS^_$!V^qyzRa4(+x9MMi*tA3*Kpn>)78qS*Z#E=e!8Fg zgkx^X_2v1-o~9<#78~DpoisD##H6hzkG(xFX+PsV*>gwUz$LKrPr^ht0YjhLlV&cO z$!OfR>W8bLTDL}HR8tKA77 zCIbbd`L4Z}B-ZAHwI7kGWZr6W=zYl3w-v_GiSn_h{Ti}wUS3i%ad+F5y=5%COE1O= zrc7C;7}ah4M}28>`MLsGFa1@$JF7paJh~Ac={)({|7Z2GtVwtGakB1}Z&x<_^riN3 zslncG@m-2nX7AUM><(F+?-co%=UD-&odoCUQ zuq^NUwr+R38!PgcxduKwBj9wW{-Z5#V(pFVdQ&MBb@0K<%;k^lez literal 0 HcmV?d00001 diff --git a/static/public/icon-aboutus.png b/static/public/icon-aboutus.png new file mode 100644 index 0000000000000000000000000000000000000000..8ebd43870d1d75dc8af86de9fe75967ad198a25b GIT binary patch literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^ia;#S!3-qhyh0j))QSL~5LX~QB!JF+k2at~%}av( zf*FK#oKwt1Zb`Y=bXv8 zk)Be!x(e(fUq+}iFff*Rx;TbdoGzVov#QB~$L+A5#=4HAyVtM1dtLe8TzjRDb<`hy z54HOv& zUOujynPV_PKw)c#dxhv?GnYxv4mkEyO^E)(+x%&^(;ef5;Th3KBzeQj^D9ru)0DZ0ZoKbzi-sKJ>`(+#9Z8S)6)*pGd0yPCo3EcVhOc1e zw%n^V-T3RQ4I%06WpiHn#h#dX_@l|2WgblVMJt`ZJ~!WC^r8cGyH&z2tWdnQ zA(Y$bf|u#64-tZ#j=F{^E7W98&N&~IW!3-puo@uH8shI&jA+A7rZ~|r7tf@ek8I=V2 z1v7l^4=UhY7^)@k=f}%R?+tPe|x=&j}~m4*tVx2u578L zaa8>J71KO7ojR(kBy#gl+qZd3GkMetXRFWXsNbM4Z{;g-{&11?59dES_-*-=2+6P6 zXWPBR+0z$tE?E5P+WWZTmaP}gC>=X=^2Mjd^9BWxjz@Oo6@Q4m#dd1fUB`!)f*xJi zQ(q9_+7VKt9Rsw&sk?sI`DM$b6Mw<&;$T!uf0$J literal 0 HcmV?d00001 diff --git a/static/public/icon-customer.png b/static/public/icon-customer.png new file mode 100644 index 0000000000000000000000000000000000000000..6332d885961aaf1da6025a41f098697df2f2b86f GIT binary patch literal 4501 zcmc(ihdUfm_s5Zlgpfq9(TOF98iYjeHLTu)Xc4_c1ks{I^yrXhWnn%#;U+@l3MtG(ylHDm#4V@roKG;*9VOMv0UQMuP!gAXhg5Bt_T<` zV4R{6`6t1i5>8Gpb`Ji(e}-FHKWy#=X30SegSxN#(6$wuz`q9W0Q1Em=3;xFaCCxS-8>ze!7Z*5jxdB{ETB5> z9zGc!Kbu=RotQnFTELD@V@FV!Z-}#*KL^m(X(s6fX%m3?`0Ls|>A9g_`E?L%5lej+!5lYxwwzF&X!-O=&+ zCqrYHZzF%yUmP}c&r6%E+6HX|Brcoz%<`!&C|J%3X)l?)1^~{t_savl0P(kzi*SF}HbOoDB?a8JGs=%T2LM{YzUuUL zJFOI;1>&rEL;?1{&tGkZrvv5stM3LptP=zZ9hZwmpjI8<%stfE49}S1c)DNSI47Wa ziNoVoHvy8vrk70r7qFLJ zj+8|Ln;!3Hr1zYNn1qz}-fb#2=9~1~ykwmGweg`To)(d~2h;#LeU>ZfA8FTJ|yKt*w$G2zPwAv9U5cJvGqZ z-rSV_KElDu+)P(qdS?;wbGRSg+1ylBT9ExIAu`$H&{#)%At0wx*i2sEE+Q*sqcPemD$PS65qA zR+^XnIpbqoY)oWmXi%WPkEf^GOBW}5TN@kW=Z0EZvJ&ePO^xNnd09yb0iNnA%JQ6S zT+M&nfmegMri!BR%SA-4f6#MN#sU7@%tkLYUcD;Q%o!ac(S?^s7n9!To4JvAtIso$ zn5B=2>V11>r`*WGzvGwfdDp(#t5?)H*9%LEj@Te2U^W3LJ|u9To% zYL(ZTlk?X7J8>!`9Si3?L%V7ck?oG(5fsquI37Eegg6~L(L9l+vJ$>bo3`;2YLl7ag@{2vhhOLV zW>qjI?$sWEYxt?Yc(4~UcE60^5 z2~;~>fBJ(@*(7nb8Z3Xh9S+};@n6bh zm0Bm6lp{#cA`j4i$*a*>;j97Ag<9%VVM$p9i#_T1k;7*{z#h&}N{gGLPC8o{!3ZNY z5Z{>k*#hP}!Owpm(jjhz~1c_MDH#?^*eaN!}4KL?yb;cN!ZUb@X*!pHZO17&g{u# zf?kb-CiBy+26B$6$d%%x|VnNYQ-Y8o#oo8Sj`L6{j9)DN# zAVh;bYsw0_idHuui9wpZBqX6Y3Y8Ltz(Gq_~;Ecq8K>~ z4{3S6@J`UD^GT0}It%g0bd~rGr}}u@jl{)7KUT&hX;5kQt_?NW4rDK}iCoJa!I=I7 z`fDmEBZX>fzS-qs;8t~pEdOF-$+1ZyQf_l%K^+mil|#MuruFRoyI8+UFbuq1tyX_7 z$_;lTq8E$dgr>1+8#vJo#)iX`Rw=ghnEV8MVNzzjKcIMl-fi}@|^P#(NsYfei?E^{5oa>guro72gQtW*Vrmfp7 z`kQKn!XKZx!c=D}XH~vD`Ga<6gbpSlem7eAY50oo|D_>Q^>;=23^-?Ou*evN2A^mO z@e|tC87>38s(Cyd271zrJyA5mNmMyQ1{*apv1=80)R$oHuM%K$HcVAw^9;|IPhL)m zb+}qv%BQ{)rw=Q=FTM`eF2TXMC}U5$BSM@$3x9Lol!Zng&Gj+#q|XO@D3&dza`Y!+ z7V?5FXPk{9B(ArnysH_RW@(}4OivgcSAM$}nDx6H;RC&&IfQ0&b9yryT;tW`KKXS> zDCZ!mq9GXEs9{1ZM=(HjzG-Cj1N-_86c92+zf^(jXz);2;#!IJ^5Ns#w_W|EKCiuP z;Wn(Q=CWhWCg1t)Xw;Y55B(hXFd1j6e| zkfF=hAZFFoXY)-+$b;$%^Z@NmXZ`#)x;*6Z#+idZ6g-A>%Gc9Xz7Nn2r_P=)cPbT+ z+to|ZCJ_aM$-41uZX3KPHKGZ?X<6#;K01xC=T^8yO4)ZawlBuef^yn+!bm#>jYPsF zBV{O734w)m@wDR+ zpdwv6QH!wWvr;?SQ!(P0ytF!yzzseQ%J*?3n(F&{{P(GsBEKAA@%flMS^~<^xUypM zYpfbKs$9%8X*KJva|DB_Rm#yK(*R!)U$QQfdjC%%*$3ncJVic|sP8c>ZJ|Gj?iCg| zv$iD1g@jOMRg@L{D31B9%-@sQN!zh`Z%#k%Y+Axs?{kH}{KjTB6-90;o*XHmWblIe zUdm8^u2OIq338|&>C$EZR+uo~FclIC^SUxl!{Xl(Gp|;HfUhEr$n6j4B1p;a^0ND! z40_n+s1Mrxe9lvbPOu*@N1s93zH{&?%Ajh<<(}~RGYj`4(zp5ebKp0c| z+2`=v-ttZ>oq(s2`rMr_bi?Q4pl(US)TH5uko&qdg@)b>t)ZJ?Vk+N@PqfvyXKmS6 z-+D9t5r1N1#g%2t4OKOvGfAiwyTvrOm+)P8 zxD{FDndBv0{HzV0vd38vmF)7DeaD~2oEJ(UA9P{tHFyBhYwbSP1UV?)oEUl6nxhfD z%(%kn7IeFrbnZL(&zY)SD+e$19xeUC^7U_O1_eZtBLSMwNLNp`z~XBn$H3za;bWriSS50#u;VmwC;ipa-x!g?(U4!eFV*Vt^?NKInvbtMiv zKd!F4JD<22Z|+SYmsp&z*vn5(M??qHUwOCp)bC|oZ{qd}iNQUiT!^plL;Ip^%~rEn z=m2$=!+PLIo?L=+HyK=mw0f&;H00orSQL&Svq@liF?};U5?M=?_HZ~;#D3RG+FPIl zL3@M}E%wEkVo{^dor4uIpY3mde##!g8vk+pO=1dn0%0Jc-nE_TwGWqMRrdu6dH3f~ z5w906UGSQ?C~z@Cfkmoq^T>~!PEx>D4m`yGGq$|P05M5eaiTlREoHV$r@ncG_ zxz&Y0AKkHG_EI@vKsKoS!EBqPyXA4DW7r;8-FTbrQ^2 z(~Y~fAXr#@8(xvlh*--ol_#qxJpZl2qc=6A5D@fNtEAa5T?|c?!lGGUzv_L(R{f<7 z6J1BUGakqZr{Xqjh_^4?q)w{KEaZ|{`v!GZec79e+fHSb@z*61)M+%$NVq3!stCA< zmsfTq0Tbd5{mkmTl8wPsj{Axr7x?&QX#jOEhyBL96w?hpd%sv|b;y8QZH2IlmSAL{ zu4UN87@jc3-S`z9oDt=G)u9!E8u-@fnO7loyUO0;ZQ+cLcv`kRQsJICdt#6a3~ABk zqaHD>@7Teth1@ATuweHZc@c18jX7ehb4VS_E6T~e2ytvY87lFb;1>D)1g4=vp(Cbs z=lXHTovQu$tp`1GW!bv9YQKvoQm$8sfqvYu+b?iJlmGq#ijQE~+Ag3hQn>aDj z>iC&+XUpjL_xTeQ`9TWT3?WcYDVb|_vamWI{ PnnaqadMdR_c9H)FT4X~d literal 0 HcmV?d00001 diff --git a/static/public/icon-duty.png b/static/public/icon-duty.png new file mode 100644 index 0000000000000000000000000000000000000000..5cc0ce22243235bb60d41dfe6fe5f8a507ca293e GIT binary patch literal 712 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU3?z3ec*Fy#`2jv5u0VP)gYA>;T!8K~DGBlm zW;ogZ@ecRzsiG{~*RFK8F#P`c>XPPMzw@)~l;j0o@87#=VP{>c^RtIH4$m#l4AYXH zP?4x(peta-z`(e~)5S5w;&kie>t(AA1YBD+m(7an*)4m#(0AwW|NGxsaTcm5bbn@; zWgML}txa&%oR_=neR_&a_x%yB*S=%-S^I6y_vC8%2M?BA{qaP<)Zu(p-`wg0O5F8H zn?EpqGBY=Ju%EpuoKbqJc8SH_u5C=>CedaN^S_DhV?A8yQpU3I#dW?d?swTAbxzrx z!>n1wv_5i|LUI0q&@OZPmjXd2w=?pbG*CXZ{;1U5Y5F1wOG}vS-mTwNySlYCP`j_Y zuD-9Mb=CE~i=`A<4t1V9GJ$VL64!Re3(8{eZOZ@n=@&1u-jjEG<<~1kY7tJ!m)Uyz zQky+i+*)ufy4p$S-RCxrQOKfQT=+sx+b;@C(#HNpLx7k0X?|=YM=#e&Ag~!@>_+=C53JUU8qdS;+RC z3?DL1F>^gUHGlP|@F!y8pEzGJ32p4S%wm9r`JXA0-f1e(keshZF)Ex9Xe*{UMN a53C1!;-wuo7J320k-^i|&t;ucLK6UO=Cf!3 literal 0 HcmV?d00001 diff --git a/static/public/icon-payment.png b/static/public/icon-payment.png new file mode 100644 index 0000000000000000000000000000000000000000..f6e5ad0db15db9928bf7b44528ce2fbb9c645deb GIT binary patch literal 607 zcmeAS@N?(olHy`uVBq!ia0vp^MnJ5?!3-n?Y^5`R)XV^%5LX~QIDxWk)>NR&j7oz1 zf*F__9$K8~HWvFDb-YzdXpjEy2UC6bZ;ku#dc`a&zANWfrl`tqSWsOWVy~_E?9sZu zJePY3rxY0&7@a*`978;gKb@AD-{c_BCO*~cZnLuki%$FYz0d#u-_f`6w$i&ppBBcy znml2G`R5dmvIGT>9qEhX%GkR-<|!LI*8Fc)!E~%b{3-8*>j`&!1%5oY6K8$@=GLqB z;}MmUy!?C$Hk|j-nm2J%6-$IiYSJ~F=?+(8sBX8*3)?S2L-n-VmoIWmr{_5i9|=IP=XVsZNFmD_xW6a-u^ zHV0|!4am*jd-i|*@*6(MDw6F-#AEw6IL~5ZySG6sKj-jkxh}6Q0w{E*`UR+H$10+ur!Ch_FX%l=iDh z!O!+49n;@<@_DX_9Zym5r-cVUKiAm)?)U4p`xi^AFZ9}_`u~#N+PG^jvw7H5eA#Y^ a^ekY%&L9(%WiYu86k?vPelF{r5}E+QHgVwq literal 0 HcmV?d00001 diff --git a/static/public/icon-search.png b/static/public/icon-search.png new file mode 100644 index 0000000000000000000000000000000000000000..a1414091bd9c731aa0430dbad69a4be7cbd456ac GIT binary patch literal 704 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU3?z3ec*Fy#IRQQ)u0Z<#Ur;B5V#p$V&UslaF5O6*IMuNwz`{O?SjkA|zp8vf+di9J3L&twb z|9D>PR?d9Z_e8GPIP#2hPi0M9^`(;~l0nHl&F@opEB5njyObu%^yKf?Gs2&fFMnt3 zS+R6BgUGroEb0xZ>sS6}ebQ-CSetMm;M-NN-9Euj`QN{1w+MaqnD2e*-o#R;Zq*yc znwF0DuEu?4c)Z?@xwAwtBEal$qtmX!go4{PA)0s39Jsf-pZCe4$NDZy)oa&&V3iRS z-*Amf*kXl6`^>NzO$!$>F3Z^Hc$2YXp1`H~Z!Fr^hCQEJ-jldkbk~E`6?NB+XIoCr zp1MF;Z|+AP4wGHF5!Qh`50?n`t!m`C(0l&My5(CL_OG70SNX_QU7iA~7U2zb;q`(B zFQp9i&Tel@-ge%W*)@47!#|e(QkllqnfrROs{eTMin`q7yc-M8_Wr2fn?E7;nD6YnjlR96eqPCXj~Z3KzX?Bgkb$RO z;_Z{k;Sm+uC-xaCzxDJz&^ys)alg|2)4@vjPq|h9WRGuhR(mR5`WP7144$rjF6*2U FngA>ba4$^q|D;8->4p zqzk>?-CT1c@7v}#hg19iEB4)amf<`>tan4#mf~kCt~!dZ`0BkQ^5iq&Npt;l`Tph^ zmR$LG&2C=3&gG!rcXR6+wpaY-xW4tC^^ZsCHXU8QO@||^b=md)|K|DfsK>`?#p2ht z%iCY?(TUErRA-M|)i1)9_=rDb7jt9akCoNtPFW(~9%x8ACyHE4(9U*N?(qmnLbz9gxBtysn&F6f%dcAVLPzw@dbp^xX(D=!E zx9t>{Owa#4{lw3Hp<^5N?#W*A=Xm=1S<&tF(N9l#UNJPjD)sOXcV+*V@Y(gO4Zlt5 z_CLEYea#8)^{?l+e16)c`}AyajzZC$RU*c+Jzsf~3YXk5(|YWxbnoIq39paSPE9Nf b>Z-po-{5iMvC1f5Ofq=7`njxgN@xNA33xX$ literal 0 HcmV?d00001 diff --git a/static/public/icon-send-goods.png b/static/public/icon-send-goods.png new file mode 100644 index 0000000000000000000000000000000000000000..2e97feb1e8c74d040feb04826adb188586cc9388 GIT binary patch literal 542 zcmeAS@N?(olHy`uVBq!ia0vp^dO)nf!3-p~*;z;csjdK@5LX~QNPsXChd$6Lx+Ot= z!3-Nu{XFEhNHTxf{3TcR&i*JoRh5_h&#UJb&L7{>UzvV)&5G8{AV)j12T>6^a{N^{ zS{WD^#XMacLo80;y?DH+*+8WAVe%|r{kE1@ahJ~h-XF)1D&VEothT!6KX3S9cJA1O z*Fo!lw8Xt%IhT2h%KWt}KdiKGJEg(5)$@{@PnBhgprqrIiJHsoyf!gL<`|wC@Wr3XTVnWOtK4?^hSlOLKX7bX{os|W+x}0xAMl(?SR-Y={=*I~ zmo`y0<^MCEWYs@%Ex+gUmZw$P`lp)cog;ff9_psttiSWB{N4Bd#8P+Ldyi^U%_M_t z-<8Q&Sx3ceJMdI1`MwBu+@sZwuGuM%3nCt^PbofrA=N)`n#DS^eW!NE=@)Euf7~gz zpEK^st$O{$N$R?Dqf}Qr>mdK II;Vst0JV*Sp%sBT3@W^XD{ z{%)=k%VK_hM!^E@zfxcK`^Ud3Fg`iQ{tu&pzTa%^`AvGyT=Z|WHcWfpELrd{+R(SZ z!+P$W_2#o`0{T>cPi&jByZ_ztUz1s$dsck*l(;HCS;V04(&nR*&Fr^}Za-0z*K%Sp zEBm{b_2t?o7Q6iIytCGy6;(B!FEzDjo?k$hby!e;|JG;S(VNOm{jUE_yW?HC_qlfn a&wqwR6EikQ&ilp(N}ZmrelF{r5}E+hcl+!B literal 0 HcmV?d00001 diff --git a/static/tabbar/icon-cart.png b/static/tabbar/icon-cart.png new file mode 100644 index 0000000000000000000000000000000000000000..98350c06ff6e46975802a527cc42fbf89924c37b GIT binary patch literal 674 zcmeAS@N?(olHy`uVBq!ia0vp^>Oic$)w|9Dxv7VH`gx-uWO*zq*_pctC-BFp~XU+fN z(3;imk50H%d&P-1Y4gJc{zGA}T zY4g@6yDz%&YFprx{hjmT>KP`VxXEAivrrUmlkYJJZOh?^_ZFz-(E;f_-o zJZF~P3OW8pG%ZTd>%~W3tN*4p>~f(sN7rBJUYH)5xv_% z8D{${KJeJXKH-D$r45ts&x+Q6r1o*wjw?|-f_t=|w?02x%5q5S=^vTe`b*YUi(_+U zUVressi~zPCqr}L!$~itT)zDEekh#$X@1TIzTS5^_Ex{99-4pR$R7T;6K7r6X#aLX zm<_Ml&!&A$%{9%8Ji=R9-RFD}UJ|fza<5DDva_6@)IyGY{dA?t#KV6{XMI)ub>oDW zU7FGfXLl|+!P)XuujpE@EdPm%E!hE;U5~RFww)E{yW`0$wc%}~&ra#Isc-)=is{?- T$Xzi8r9cKxS3j3^P6V4);iEMu(@}r~f)T+5$Yu5HfWpm_R zed_;(amlt6&4|mj>xwzv@7e4SSH30D^w*SZA5}0RyUIrN7 N44$rjF6*2UngH=+lhgnJ literal 0 HcmV?d00001 diff --git a/static/tabbar/icon-home.png b/static/tabbar/icon-home.png new file mode 100644 index 0000000000000000000000000000000000000000..2ca906a4da358fb3e4ee850bc1c4c1d1a6e2af34 GIT binary patch literal 565 zcmeAS@N?(olHy`uVBq!ia0vp^>Oic)!3-q5w1qDLsmTF8A+A9B{~!YwtySZI&N3(o z@(X4-vuf$3!&?-8e`nh#$n@sKj+x!{{${+n>QbDaUfjFBpe5W*N9FO>4P{9&wz8r} zCkje0y~e=6sOah97-Dhy?d9;iLk=Pi7t@m;-P7J%?(yzlxVVRdS<&zQqJKK^na_ID zmblqJU%mRv%^M7Fw%@&Z>dAGLm#6v?jzw>ekdmm(PHi>tefsc`;}f&=NQUCSKLgJ= z$eO1rv*x(R<=NHTlVZDj@W7-?KNvROy78J*=V|Y6)_bn^=J50c=l0$?5aW4NNG*G% zw~xiN=Y|b;-DWKb=9vHd@r?yNOJ>@&*M6IvDUfpMm}JxcAF>V^p0TCjt4>Hcy)?7vId(3|7jD-Y{CWS+A^e8dN&l$b9a{Uhdh=*4+V1DL_KwHikjhBL zZ7a^iyiBWXDQerZyjxK)yHBuu?*tvDqoSHN2Bu4U(++*nD*rVh?_l;4leiVRVuf1e Y_m_+5MJ{+&0!kPRp00i_>zopr0E)s&TmS$7 literal 0 HcmV?d00001 diff --git a/static/tabbar/icon-my.png b/static/tabbar/icon-my.png new file mode 100644 index 0000000000000000000000000000000000000000..3430198d2e38b180600884aca7dd442850720348 GIT binary patch literal 664 zcmeAS@N?(olHy`uVBq!ia0vp^3P7yJ!3-oP{mr}$q?QKwgt!9f|AQXv`1?2%=uoqg zAirRSj!*9de$VoAQ~G;)N|p%s?Za!Ab-y})ysyU6R8HdC!)@isF}m!R_iUP15^Sp` z&B7EB<|x#dGkMQS1_s6)PZ!4!i_>#2U7t4FL4f5#lc18ak&vThrD|^3-~Y>Rraj$k z!eswr-_@6vJa;d@u-K!neK@g%16D7v0(- zpDAW_n2mo{hsm8EbF82I5_Y~9vn@tAIqUNGvr_+`Fa2Vgf9sRU{x|P)4Z=mP*a-Bm zp8V_9<#&6&&foJ>F387i*^Dy>drnl8t#`jtUa{e-WbND;L7@@>FXN+AFYZX1kh#Tw zj`7hB%i;w~><)G~q<4m_TR+9X^`Lprt&I-HxE6mqld$37idk&a_9TY5GOMpTvOnhg zwp{kfyPuWcnEoty&lAqlbM*!D8^gV=#TOR291PSdc|1S-f%y3x!`p3~5(2=OWAJqK Kb6Mw<&;$To_=(v7 literal 0 HcmV?d00001 diff --git a/store/actions.js b/store/actions.js new file mode 100644 index 0000000..c126b1b --- /dev/null +++ b/store/actions.js @@ -0,0 +1 @@ +// 根级别的 action \ No newline at end of file diff --git a/store/index.js b/store/index.js new file mode 100644 index 0000000..8bc4203 --- /dev/null +++ b/store/index.js @@ -0,0 +1,16 @@ +// 组装模块并导出 store 的地方 +import Vue from 'vue' +import Vuex from 'vuex' +import moduleA from '@/store/modules/moduleA' +import moduleB from '@/store/modules/moduleB' + +Vue.use(Vuex);//vue的插件机制 + +//Vuex.modules 模块选项 +const store = new Vuex.Store({ + modules: { + moduleA, + moduleB + } +}) +export default store \ No newline at end of file diff --git a/store/modules/moduleA.js b/store/modules/moduleA.js new file mode 100644 index 0000000..2260651 --- /dev/null +++ b/store/modules/moduleA.js @@ -0,0 +1,93 @@ +// 购物车模块 +export default { + state:{//存放状态 + // 底部导航的高 + footHeight:'', + token:'token已生成', + userInfo:{}, + count:0, + publicColor:'', + todos: [{ + id: 1, + text: '我是内容一', + done: true + }, + { + id: 2, + text: '我是内容二', + done: false + } + ], + obj:{ + a:'吃鸡腿', + b:'吃自助餐' + } + }, + // Vuex中store数据改变的唯一方法就是mutations 不适合异步方法 + mutations: { + footHeightEv(state,str){ + state.footHeight = str; + }, + add(state) { + state.count = 7; + }, + add2(state, payload) { + state.count = payload.amount; + }, + // 单个属性处理方法 + setToken(state,str) { + state.token = str; + }, + // 对象处理方法 + updateUserInfo(state, payload) { + // 变更状态 + state.userInfo = payload.userInfo; + }, + // 新增字段方法 + newProp(state,payload) { + state.obj = { ...state.obj, c: payload.c }; + } + }, + // 可以执行任意的同步和异步操作 + actions:{ + addCountAction ({commit}) { + commit('add') + }, + addCountAction2 (context , payload) { + context.commit('add2', payload) + }, + // 异步方法 + addCountAction3 (context , payload) { + setTimeout(function () { + context.commit('add2', payload) + }, 2000) + }, + actionA ({ commit }) { + return new Promise((resolve, reject) => { + setTimeout(() => { + commit('someMutation') + resolve() + }, 1000) + }) + }, + actionB ({ dispatch, commit }) { + return dispatch('actionA').then(() => { + commit('someOtherMutation') + }) + } + }, + // Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性),对 state 的加工,是派生出来的数据。 可以在多组件中共享 getter 函数,这样做还可以提高运行效率。 + getters: { + doneTodos: state => { + return state.todos.filter(todo => todo.done) + }, + doneTodosCount: (state, getters) => { + //state :可以访问数据 + //getters:访问其他函数,等同于 store.getters + return getters.doneTodos.length + }, + getTodoById: (state) => (id) => { + return state.todos.find(todo => todo.id === id) + } + } +} \ No newline at end of file diff --git a/store/modules/moduleB.js b/store/modules/moduleB.js new file mode 100644 index 0000000..3a9c369 --- /dev/null +++ b/store/modules/moduleB.js @@ -0,0 +1,87 @@ +export default { + state:{//存放状态 + token:'token已生成', + userInfo:{}, + count:0, + publicColor:'', + todos: [{ + id: 1, + text: '我是内容一', + done: true + }, + { + id: 2, + text: '我是内容二', + done: false + } + ], + obj:{ + a:'吃鸡腿', + b:'吃自助餐' + } + }, + // Vuex中store数据改变的唯一方法就是mutations 不适合异步方法 + mutations: { + add(state) { + state.count = 7; + }, + add2(state, payload) { + state.count = payload.amount; + }, + // 单个属性处理方法 + setToken(state,str) { + state.token = str; + }, + // 对象处理方法 + updateUserInfo(state, payload) { + // 变更状态 + state.userInfo = payload.userInfo; + }, + // 新增字段方法 + newProp(state,payload) { + state.obj = { ...state.obj, c: payload.c }; + } + }, + // 可以执行任意的同步和异步操作 + actions:{ + addCountAction ({commit}) { + commit('add') + }, + addCountAction2 (context , payload) { + context.commit('add2', payload) + }, + // 异步方法 + addCountAction3 (context , payload) { + setTimeout(function () { + context.commit('add2', payload) + }, 2000) + }, + actionA ({ commit }) { + return new Promise((resolve, reject) => { + setTimeout(() => { + commit('someMutation') + resolve() + }, 1000) + }) + }, + actionB ({ dispatch, commit }) { + return dispatch('actionA').then(() => { + commit('someOtherMutation') + }) + } + }, + // Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性),对 state 的加工,是派生出来的数据。 可以在多组件中共享 getter 函数,这样做还可以提高运行效率。 + getters: { + // doneTodos: state => { + // return state.todos.filter(todo => todo.done) + // }, + // doneTodosCount: (state, getters) => { + // //state :可以访问数据 + // //getters:访问其他函数,等同于 store.getters + // return getters.doneTodos.length + // }, + // getTodoById: (state) => (id) => { + // return state.todos.find(todo => todo.id === id) + // } + } +} \ No newline at end of file diff --git a/store/mutations.js b/store/mutations.js new file mode 100644 index 0000000..d15562c --- /dev/null +++ b/store/mutations.js @@ -0,0 +1 @@ +// 根级别的 mutation \ No newline at end of file diff --git a/store/readme.md b/store/readme.md new file mode 100644 index 0000000..3532bd6 --- /dev/null +++ b/store/readme.md @@ -0,0 +1,119 @@ +#引入vuex状态机 +在根目录创建store目录 + +#在main.js引入store、注册store、挂载store在程序上 +import Vue from 'vue'; +import App from './App'; +#import store from './store' +#Vue.prototype.$store = store + +const app = new Vue({ +# store, + ...App +}) +app.$mount() + + +#在页面内使用store的属性 + +import { mapState,mapGetters,mapMutations } from 'vuex'//引入mapState +export default { + data() { + return {} + }, +#单纯访问属性值 + computed:{ + tokenEv() { + return this.$store.state.token; + } + }, + + computed:mapState({ + // 从state中拿到数据 箭头函数可使代码更简练 + token: state => state.token, + }), + computed:mapState(['token']), + computed: { + ...mapState({ + token: function (state) { + return '追加的' + state.token + }, + userInfo: state => state.userInfo, + }) + }, + computed:{ + ...mapState([ + 'token', + 'userInfo', + 'count', + 'obj' + ]) + }, + computed: { + ...mapState({ + token: state => state.moduleA.token, + count: state => state.moduleB.count + }), + }, +#单纯访问方法 + computed: { + todos() { + return this.$store.getters.doneTodos + } + }, + computed: { + doneTodosCount() { + return this.$store.getters.doneTodosCount + } + }, + + computed: { + getTodoById() { + return this.$store.getters.getTodoById(1) + } + }, + + computed: { + // 使用对象展开运算符将 getter 混入 computed 对象中 + ...mapGetters([ + 'doneTodos', + 'doneTodosCount', + 'getTodoById' + // ... + ]) + }, + onLoad(options) { +#改变状态机里面的值 + + this.$store.commit('setToken', 'token已改变'); + + this.$store.commit('updateUserInfo',{userInfo:'用户信息'}) + this.$store.commit({ + type: 'updateUserInfo', + userInfo: '新方式更新用户信息' + }) + this.$store.commit('newProp',{c:'吃火锅'}) + + console.log(this.token); + + this.add(); + + this.$store.dispatch('addCountAction') + this.$store.dispatch('addCountAction2',{amount:10}) + + this.$store.dispatch('addCountAction3',{amount:30}) + setTimeout(()=>{ + console.log(this.count,388); + },3000) + }, + methods: { + + ...mapMutations(['add']),//对象展开运算符直接拿到add + } + } \ No newline at end of file diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..f0f426c --- /dev/null +++ b/uni.scss @@ -0,0 +1,76 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 颜色变量 */ + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color:#333;//基本色 +$uni-text-color-inverse:#fff;//反色 +$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 背景颜色 */ +$uni-bg-color:#ffffff; +$uni-bg-color-grey:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 + +/* 边框颜色 */ +$uni-border-color:#c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm:24upx; +$uni-font-size-base:28upx; +$uni-font-size-lg:32upx; + +/* 图片尺寸 */ +$uni-img-size-sm:40upx; +$uni-img-size-base:52upx; +$uni-img-size-lg:80upx; + +/* Border Radius */ +$uni-border-radius-sm: 4upx; +$uni-border-radius-base: 6upx; +$uni-border-radius-lg: 12upx; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 10px; +$uni-spacing-row-base: 20upx; +$uni-spacing-row-lg: 30upx; + +/* 垂直间距 */ +$uni-spacing-col-sm: 8upx; +$uni-spacing-col-base: 16upx; +$uni-spacing-col-lg: 24upx; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title:40upx; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle:36upx; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph:30upx; \ No newline at end of file