commit 26bb2a1f5ee5f162a23ff85fb30aeefc2c679f1e
Author: xcw <727612669@qq.com>
Date: Thu May 11 10:51:56 2023 +0800
first init
diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json
new file mode 100644
index 0000000..81f13f4
--- /dev/null
+++ b/.hbuilderx/launch.json
@@ -0,0 +1,16 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+ // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+ "version": "0.0",
+ "configurations": [{
+ "default" :
+ {
+ "launchtype" : "local"
+ },
+ "mp-weixin" :
+ {
+ "launchtype" : "local"
+ },
+ "type" : "uniCloud"
+ }
+ ]
+}
diff --git a/App.vue b/App.vue
new file mode 100644
index 0000000..3237063
--- /dev/null
+++ b/App.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
\ No newline at end of file
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/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/loading.css b/commons/loading.css
new file mode 100644
index 0000000..9a3191a
--- /dev/null
+++ b/commons/loading.css
@@ -0,0 +1,1054 @@
+.loading-box {
+ display: flex;
+ justify-content: center;
+ width: 100%;
+ padding-top: 20px;
+ font-size: 30px;
+ color: rgba(253, 82, 75, 1);
+ vertical-align: top;
+ -webkit-transition: .3s color, .3s border;
+ transition: .3s color, .3s border;
+}
+
+/* .loading-box:hover {
+ color: #d60b52;
+ font-size: 0;
+ padding: 0;
+ border-width: 3px;
+ line-height: 200px;
+}
+.loading-box:hover [class*="loader-"] {
+ font-size: 70px;
+ line-height: 200px;
+} */
+
+[class*="loader-"] {
+ display: inline-block;
+ width: 1em;
+ height: 1em;
+ color: inherit;
+ vertical-align: middle;
+ pointer-events: none;
+}
+
+.loader-01 {
+ border: .2em dotted currentcolor;
+ border-radius: 50%;
+ -webkit-animation: 1s loader-01 linear infinite;
+ animation: 1s loader-01 linear infinite;
+}
+
+@-webkit-keyframes loader-01 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes loader-01 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+.loader-02 {
+ border: .2em solid transparent;
+ border-left-color: currentcolor;
+ border-right-color: currentcolor;
+ border-radius: 50%;
+ -webkit-animation: 1s loader-02 linear infinite;
+ animation: 1s loader-02 linear infinite;
+}
+
+@-webkit-keyframes loader-02 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes loader-02 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+.loader-03 {
+ border: .2em solid currentcolor;
+ border-bottom-color: transparent;
+ border-radius: 50%;
+ -webkit-animation: 1s loader-03 linear infinite;
+ animation: 1s loader-03 linear infinite;
+ position: relative;
+}
+
+@-webkit-keyframes loader-03 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes loader-03 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+.loader-04 {
+ border: 1px solid currentcolor;
+ border-radius: 50%;
+ -webkit-animation: 1s loader-04 linear infinite;
+ animation: 1s loader-04 linear infinite;
+ position: relative;
+}
+
+.loader-04:before {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ position: absolute;
+ top: -.2em;
+ left: 50%;
+ border: .2em solid currentcolor;
+ border-radius: 50%;
+}
+
+@-webkit-keyframes loader-04 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes loader-04 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+.loader-05 {
+ border: .2em solid transparent;
+ border-top-color: currentcolor;
+ border-radius: 50%;
+ -webkit-animation: 1s loader-05 linear infinite;
+ animation: 1s loader-05 linear infinite;
+ position: relative;
+}
+
+.loader-05:before {
+ content: '';
+ display: block;
+ width: inherit;
+ height: inherit;
+ position: absolute;
+ top: -.2em;
+ left: -.2em;
+ border: .2em solid currentcolor;
+ border-radius: 50%;
+ opacity: .5;
+}
+
+@-webkit-keyframes loader-05 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes loader-05 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+.loader-06 {
+ border: .2em solid currentcolor;
+ border-radius: 50%;
+ -webkit-animation: loader-06 1s ease-out infinite;
+ animation: loader-06 1s ease-out infinite;
+}
+
+@-webkit-keyframes loader-06 {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ }
+
+ 50% {
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 0;
+ }
+}
+
+@keyframes loader-06 {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ }
+
+ 50% {
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 0;
+ }
+}
+
+.loader-07 {
+ border: 0 solid transparent;
+ border-radius: 50%;
+ position: relative;
+}
+
+.loader-07:before,
+.loader-07:after {
+ content: '';
+ border: .2em solid currentcolor;
+ border-radius: 50%;
+ width: inherit;
+ height: inherit;
+ position: absolute;
+ top: 0;
+ left: 0;
+ -webkit-animation: loader-07 1s linear infinite;
+ animation: loader-07 1s linear infinite;
+ opacity: 0;
+}
+
+.loader-07:before {
+ -webkit-animation-delay: 1s;
+ animation-delay: 1s;
+}
+
+.loader-07:after {
+ -webkit-animation-delay: .5s;
+ animation-delay: .5s;
+}
+
+@-webkit-keyframes loader-07 {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ }
+
+ 50% {
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 0;
+ }
+}
+
+@keyframes loader-07 {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ }
+
+ 50% {
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 0;
+ }
+}
+
+.loader-08 {
+ position: relative;
+}
+
+.loader-08:before,
+.loader-08:after {
+ content: '';
+ width: inherit;
+ height: inherit;
+ border-radius: 50%;
+ background-color: currentcolor;
+ opacity: 0.6;
+ position: absolute;
+ top: 0;
+ left: 0;
+ -webkit-animation: loader-08 2.0s infinite ease-in-out;
+ animation: loader-08 2.0s infinite ease-in-out;
+}
+
+.loader-08:after {
+ -webkit-animation-delay: -1.0s;
+ animation-delay: -1.0s;
+}
+
+@-webkit-keyframes loader-08 {
+
+ 0%,
+ 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+
+ 50% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+@keyframes loader-08 {
+
+ 0%,
+ 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+
+ 50% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+.loader-09 {
+ background-color: currentcolor;
+ border-radius: 50%;
+ -webkit-animation: loader-09 1.0s infinite ease-in-out;
+ animation: loader-09 1.0s infinite ease-in-out;
+}
+
+@-webkit-keyframes loader-09 {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+
+ 100% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 0;
+ }
+}
+
+@keyframes loader-09 {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+
+ 100% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 0;
+ }
+}
+
+.loader-10 {
+ position: relative;
+ -webkit-animation: loader-10-1 2.0s infinite linear;
+ animation: loader-10-1 2.0s infinite linear;
+}
+
+.loader-10:before,
+.loader-10:after {
+ content: '';
+ width: 0;
+ height: 0;
+ border: .5em solid currentcolor;
+ display: block;
+ position: absolute;
+ border-radius: 100%;
+ -webkit-animation: loader-10-2 2s infinite ease-in-out;
+ animation: loader-10-2 2s infinite ease-in-out;
+}
+
+.loader-10:before {
+ top: 0;
+ left: 50%;
+}
+
+.loader-10:after {
+ bottom: 0;
+ right: 50%;
+ -webkit-animation-delay: -1s;
+ animation-delay: -1s;
+}
+
+@-webkit-keyframes loader-10-1 {
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes loader-10-1 {
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+@-webkit-keyframes loader-10-2 {
+
+ 0%,
+ 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+
+ 50% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+@keyframes loader-10-2 {
+
+ 0%,
+ 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+
+ 50% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+.loader-11 {
+ background-color: currentcolor;
+ -webkit-animation: loader-11 1.2s infinite ease-in-out;
+ animation: loader-11 1.2s infinite ease-in-out;
+}
+
+@-webkit-keyframes loader-11 {
+ 0% {
+ -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg);
+ transform: perspective(120px) rotateX(0deg) rotateY(0deg);
+ }
+
+ 50% {
+ -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
+ transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
+ }
+
+ 100% {
+ -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
+ transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
+ }
+}
+
+@keyframes loader-11 {
+ 0% {
+ -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg);
+ transform: perspective(120px) rotateX(0deg) rotateY(0deg);
+ }
+
+ 50% {
+ -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
+ transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
+ }
+
+ 100% {
+ -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
+ transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
+ }
+}
+
+.loader-12 {
+ position: relative;
+}
+
+.loader-12:before,
+.loader-12:after {
+ content: '';
+ display: block;
+ position: absolute;
+ background-color: currentcolor;
+ left: 50%;
+ right: 0;
+ top: 0;
+ bottom: 50%;
+ box-shadow: -.5em 0 0 currentcolor;
+ -webkit-animation: loader-12 1s linear infinite;
+ animation: loader-12 1s linear infinite;
+}
+
+.loader-12:after {
+ top: 50%;
+ bottom: 0;
+ -webkit-animation-delay: .25s;
+ animation-delay: .25s;
+}
+
+@-webkit-keyframes loader-12 {
+
+ 0%,
+ 100% {
+ box-shadow: -.5em 0 0 transparent;
+ background-color: currentcolor;
+ }
+
+ 50% {
+ box-shadow: -.5em 0 0 currentcolor;
+ background-color: transparent;
+ }
+}
+
+@keyframes loader-12 {
+
+ 0%,
+ 100% {
+ box-shadow: -.5em 0 0 transparent;
+ background-color: currentcolor;
+ }
+
+ 50% {
+ box-shadow: -.5em 0 0 currentcolor;
+ background-color: transparent;
+ }
+}
+
+.loader-13:before,
+.loader-13:after,
+.loader-13 {
+ border-radius: 50%;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation: loader-13 1.8s infinite ease-in-out;
+ animation: loader-13 1.8s infinite ease-in-out;
+}
+
+.loader-13 {
+ color: currentcolor;
+ position: relative;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-animation-delay: -0.16s;
+ animation-delay: -0.16s;
+ top: -1em;
+}
+
+.loader-13:before {
+ right: 100%;
+ -webkit-animation-delay: -0.32s;
+ animation-delay: -0.32s;
+}
+
+.loader-13:after {
+ left: 100%;
+}
+
+.loader-13:before,
+.loader-13:after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 0;
+ width: inherit;
+ height: inherit;
+}
+
+@-webkit-keyframes loader-13 {
+
+ 0%,
+ 80%,
+ 100% {
+ box-shadow: 0 1em 0 -1em;
+ }
+
+ 40% {
+ box-shadow: 0 1em 0 -.2em;
+ }
+}
+
+@keyframes loader-13 {
+
+ 0%,
+ 80%,
+ 100% {
+ box-shadow: 0 1em 0 -1em;
+ }
+
+ 40% {
+ box-shadow: 0 1em 0 -.2em;
+ }
+}
+
+.loader-14 {
+ border-radius: 50%;
+ box-shadow: 0 1em 0 -.2em currentcolor;
+ position: relative;
+ -webkit-animation: loader-14 0.8s ease-in-out alternate infinite;
+ animation: loader-14 0.8s ease-in-out alternate infinite;
+ -webkit-animation-delay: 0.32s;
+ animation-delay: 0.32s;
+ top: -1em;
+}
+
+.loader-14:after,
+.loader-14:before {
+ content: '';
+ position: absolute;
+ width: inherit;
+ height: inherit;
+ border-radius: inherit;
+ box-shadow: inherit;
+ -webkit-animation: inherit;
+ animation: inherit;
+}
+
+.loader-14:before {
+ left: -1em;
+ -webkit-animation-delay: 0.48s;
+ animation-delay: 0.48s;
+}
+
+.loader-14:after {
+ right: -1em;
+ -webkit-animation-delay: 0.16s;
+ animation-delay: 0.16s;
+}
+
+@-webkit-keyframes loader-14 {
+ 0% {
+ box-shadow: 0 2em 0 -.2em currentcolor;
+ }
+
+ 100% {
+ box-shadow: 0 1em 0 -.2em currentcolor;
+ }
+}
+
+@keyframes loader-14 {
+ 0% {
+ box-shadow: 0 2em 0 -.2em currentcolor;
+ }
+
+ 100% {
+ box-shadow: 0 1em 0 -.2em currentcolor;
+ }
+}
+
+.loader-15 {
+ background: currentcolor;
+ position: relative;
+ -webkit-animation: loader-15 1s ease-in-out infinite;
+ animation: loader-15 1s ease-in-out infinite;
+ -webkit-animation-delay: 0.4s;
+ animation-delay: 0.4s;
+ width: .25em;
+ height: .5em;
+}
+
+.loader-15:after,
+.loader-15:before {
+ content: '';
+ position: absolute;
+ width: inherit;
+ height: inherit;
+ background: inherit;
+ -webkit-animation: inherit;
+ animation: inherit;
+}
+
+.loader-15:before {
+ right: .5em;
+ -webkit-animation-delay: 0.2s;
+ animation-delay: 0.2s;
+}
+
+.loader-15:after {
+ left: .5em;
+ -webkit-animation-delay: 0.6s;
+ animation-delay: 0.6s;
+}
+
+@-webkit-keyframes loader-15 {
+
+ 0%,
+ 100% {
+ box-shadow: 0 0 0 currentcolor, 0 0 0 currentcolor;
+ }
+
+ 50% {
+ box-shadow: 0 -.25em 0 currentcolor, 0 .25em 0 currentcolor;
+ }
+}
+
+@keyframes loader-15 {
+
+ 0%,
+ 100% {
+ box-shadow: 0 0 0 currentcolor, 0 0 0 currentcolor;
+ }
+
+ 50% {
+ box-shadow: 0 -.25em 0 currentcolor, 0 .25em 0 currentcolor;
+ }
+}
+
+.loader-16 {
+ -webkit-transform: rotateZ(45deg);
+ transform: rotateZ(45deg);
+ -webkit-perspective: 1000px;
+ perspective: 1000px;
+ border-radius: 50%;
+}
+
+.loader-16:before,
+.loader-16:after {
+ content: '';
+ display: block;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: inherit;
+ height: inherit;
+ border-radius: 50%;
+ -webkit-animation: 1s spin linear infinite;
+ animation: 1s spin linear infinite;
+}
+
+.loader-16:before {
+ -webkit-transform: rotateX(70deg);
+ transform: rotateX(70deg);
+}
+
+.loader-16:after {
+ -webkit-transform: rotateY(70deg);
+ transform: rotateY(70deg);
+ -webkit-animation-delay: .4s;
+ animation-delay: .4s;
+}
+
+@-webkit-keyframes rotate {
+ 0% {
+ -webkit-transform: translate(-50%, -50%) rotateZ(0deg);
+ transform: translate(-50%, -50%) rotateZ(0deg);
+ }
+
+ 100% {
+ -webkit-transform: translate(-50%, -50%) rotateZ(360deg);
+ transform: translate(-50%, -50%) rotateZ(360deg);
+ }
+}
+
+@keyframes rotate {
+ 0% {
+ -webkit-transform: translate(-50%, -50%) rotateZ(0deg);
+ transform: translate(-50%, -50%) rotateZ(0deg);
+ }
+
+ 100% {
+ -webkit-transform: translate(-50%, -50%) rotateZ(360deg);
+ transform: translate(-50%, -50%) rotateZ(360deg);
+ }
+}
+
+@-webkit-keyframes rotateccw {
+ 0% {
+ -webkit-transform: translate(-50%, -50%) rotate(0deg);
+ transform: translate(-50%, -50%) rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: translate(-50%, -50%) rotate(-360deg);
+ transform: translate(-50%, -50%) rotate(-360deg);
+ }
+}
+
+@keyframes rotateccw {
+ 0% {
+ -webkit-transform: translate(-50%, -50%) rotate(0deg);
+ transform: translate(-50%, -50%) rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: translate(-50%, -50%) rotate(-360deg);
+ transform: translate(-50%, -50%) rotate(-360deg);
+ }
+}
+
+@-webkit-keyframes spin {
+
+ 0%,
+ 100% {
+ box-shadow: .2em 0px 0 0px currentcolor;
+ }
+
+ 12% {
+ box-shadow: .2em .2em 0 0 currentcolor;
+ }
+
+ 25% {
+ box-shadow: 0 .2em 0 0px currentcolor;
+ }
+
+ 37% {
+ box-shadow: -.2em .2em 0 0 currentcolor;
+ }
+
+ 50% {
+ box-shadow: -.2em 0 0 0 currentcolor;
+ }
+
+ 62% {
+ box-shadow: -.2em -.2em 0 0 currentcolor;
+ }
+
+ 75% {
+ box-shadow: 0px -.2em 0 0 currentcolor;
+ }
+
+ 87% {
+ box-shadow: .2em -.2em 0 0 currentcolor;
+ }
+}
+
+@keyframes spin {
+
+ 0%,
+ 100% {
+ box-shadow: .2em 0px 0 0px currentcolor;
+ }
+
+ 12% {
+ box-shadow: .2em .2em 0 0 currentcolor;
+ }
+
+ 25% {
+ box-shadow: 0 .2em 0 0px currentcolor;
+ }
+
+ 37% {
+ box-shadow: -.2em .2em 0 0 currentcolor;
+ }
+
+ 50% {
+ box-shadow: -.2em 0 0 0 currentcolor;
+ }
+
+ 62% {
+ box-shadow: -.2em -.2em 0 0 currentcolor;
+ }
+
+ 75% {
+ box-shadow: 0px -.2em 0 0 currentcolor;
+ }
+
+ 87% {
+ box-shadow: .2em -.2em 0 0 currentcolor;
+ }
+}
+
+.loader-17 {
+ position: relative;
+ background-color: currentcolor;
+ border-radius: 50%;
+}
+
+.loader-17:after,
+.loader-17:before {
+ content: "";
+ position: absolute;
+ width: .25em;
+ height: .25em;
+ border-radius: 50%;
+ opacity: .8;
+}
+
+.loader-17:after {
+ left: -.5em;
+ top: -.25em;
+ background-color: currentcolor;
+ -webkit-transform-origin: .75em 1em;
+ transform-origin: .75em 1em;
+ -webkit-animation: loader-17 1s linear infinite;
+ animation: loader-17 1s linear infinite;
+ opacity: .6;
+}
+
+.loader-17:before {
+ left: -1.25em;
+ top: -.75em;
+ background-color: currentcolor;
+ -webkit-transform-origin: 1.5em 1em;
+ transform-origin: 1.5em 1em;
+ -webkit-animation: loader-17 2s linear infinite;
+ animation: loader-17 2s linear infinite;
+}
+
+@-webkit-keyframes loader-17 {
+ 0% {
+ -webkit-transform: rotateZ(0deg) translate3d(0, 0, 0);
+ transform: rotateZ(0deg) translate3d(0, 0, 0);
+ }
+
+ 100% {
+ -webkit-transform: rotateZ(360deg) translate3d(0, 0, 0);
+ transform: rotateZ(360deg) translate3d(0, 0, 0);
+ }
+}
+
+@keyframes loader-17 {
+ 0% {
+ -webkit-transform: rotateZ(0deg) translate3d(0, 0, 0);
+ transform: rotateZ(0deg) translate3d(0, 0, 0);
+ }
+
+ 100% {
+ -webkit-transform: rotateZ(360deg) translate3d(0, 0, 0);
+ transform: rotateZ(360deg) translate3d(0, 0, 0);
+ }
+}
+
+.loader-18 {
+ position: relative;
+}
+
+.loader-18:before,
+.loader-18:after {
+ content: '';
+ display: block;
+ position: absolute;
+ border-radius: 50%;
+ border: .1em solid transparent;
+ border-bottom-color: currentcolor;
+ top: 0;
+ left: 0;
+ -webkit-animation: 1s loader-18 linear infinite;
+ animation: 1s loader-18 linear infinite;
+}
+
+.loader-18:before {
+ width: 1em;
+ height: 1em;
+}
+
+.loader-18:after {
+ width: .8em;
+ height: .8em;
+ top: .1em;
+ left: .1em;
+ -webkit-animation-direction: reverse;
+ animation-direction: reverse;
+}
+
+@-webkit-keyframes loader-18 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes loader-18 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+.loader-19 {
+ border-top: .2em solid currentcolor;
+ border-right: .2em solid transparent;
+ -webkit-animation: loader-19 1s linear infinite;
+ animation: loader-19 1s linear infinite;
+ border-radius: 100%;
+ position: relative;
+}
+
+@-webkit-keyframes loader-19 {
+ to {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes loader-19 {
+ to {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
diff --git a/commons/style.css b/commons/style.css
new file mode 100644
index 0000000..8d60e72
--- /dev/null
+++ b/commons/style.css
@@ -0,0 +1,58 @@
+/* 图片处理 */
+image {
+ /* 照顾低版本浏览器 如果图片外面包含了链接会有边框的问题 */
+ border: 0;
+ /* 取消图片底侧有空白缝隙的问题 ① */
+ vertical-align: middle;
+ /* 取消图片底侧有空白缝隙的问题 ② */
+ object-fit: cover;
+}
+
+/* 去除滚动条 */
+scroll-view ::-webkit-scrollbar {
+ display: none !important;
+ width: 0 !important;
+ height: 0 !important;
+ -webkit-appearance: none;
+ background: transparent;
+}
+
+/* 文字行数 */
+.clips {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 1;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ word-wrap: break-word;
+ word-break: break-all;
+}
+
+/* 页面样式 */
+page {
+ background-color: #f7f7f7;
+ color: #333333;
+}
+
+.main {
+ padding-bottom: 120rpx;
+}
+
+/* 输入默认提示 */
+::-webkit-input-placeholder {
+ /* WebKit browsers,webkit内核浏览器 */
+ color: #8f989f;
+}
+:-moz-placeholder {
+ /* Mozilla Firefox 4 to 18 */
+ color: #8f989f;
+}
+::-moz-placeholder {
+ /* Mozilla Firefox 19+ */
+ color: #8f989f;
+}
+:-ms-input-placeholder {
+ /* Internet Explorer 10+ */
+ color: #8f989f;
+}
+
diff --git a/components/foot-bar/foot-bar.vue b/components/foot-bar/foot-bar.vue
new file mode 100644
index 0000000..4969faa
--- /dev/null
+++ b/components/foot-bar/foot-bar.vue
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
diff --git a/components/goods-list/goods-list.vue b/components/goods-list/goods-list.vue
new file mode 100644
index 0000000..08e9f80
--- /dev/null
+++ b/components/goods-list/goods-list.vue
@@ -0,0 +1,260 @@
+
+
+
+
+ {{item.tag}}
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+ ¥
+ {{item.price.substr(0,item.price.indexOf('.'))}}
+ {{item.price.substr(item.price.indexOf('.'),item.price.length)}}
+
+
+ +
+ {{item.integral}}
+ 积分
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+ {{content}}
+
+
+
+
+
+
+
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 @@
+
+ {{textStr}}
+
+
+
+
+
diff --git a/components/status-nav/status-nav.vue b/components/status-nav/status-nav.vue
new file mode 100644
index 0000000..c6c7909
--- /dev/null
+++ b/components/status-nav/status-nav.vue
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{navBarTitle}}
+
+ {{netText}}刷新
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/swipers/swiper-lamp.vue b/components/swipers/swiper-lamp.vue
new file mode 100644
index 0000000..348988d
--- /dev/null
+++ b/components/swipers/swiper-lamp.vue
@@ -0,0 +1,62 @@
+
+
+
+
+ {{item.title}}
+
+
+ {{item.title}}
+
+
+
+
+
+
+
+
diff --git a/components/swipers/swiper-pu.vue b/components/swipers/swiper-pu.vue
new file mode 100644
index 0000000..7b14bd0
--- /dev/null
+++ b/components/swipers/swiper-pu.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{bcurrent+1}}
+ /
+ {{bannerList.length}}
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-bottom-popup/tui-bottom-popup.vue b/components/thorui/tui-bottom-popup/tui-bottom-popup.vue
new file mode 100644
index 0000000..97b676c
--- /dev/null
+++ b/components/thorui/tui-bottom-popup/tui-bottom-popup.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-bubble-popup/tui-bubble-popup.vue b/components/thorui/tui-bubble-popup/tui-bubble-popup.vue
new file mode 100644
index 0000000..3ac3f32
--- /dev/null
+++ b/components/thorui/tui-bubble-popup/tui-bubble-popup.vue
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-button/tui-button.vue b/components/thorui/tui-button/tui-button.vue
new file mode 100644
index 0000000..160560b
--- /dev/null
+++ b/components/thorui/tui-button/tui-button.vue
@@ -0,0 +1,520 @@
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-calendar/tui-calendar.js b/components/thorui/tui-calendar/tui-calendar.js
new file mode 100644
index 0000000..86522f1
--- /dev/null
+++ b/components/thorui/tui-calendar/tui-calendar.js
@@ -0,0 +1,562 @@
+/**
+ * @1900-2100区间内的公历、农历互转
+ * @公历转农历:solar2lunar(1987,11,01);
+ * @农历转公历:lunar2solar(1987,09,10);
+ */
+let calendar = {
+ /**
+ * 农历1900-2100的润大小信息表
+ * @Array Of Property
+ * @return Hex
+ */
+ lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, //1900-1909
+ 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, //1910-1919
+ 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, //1920-1929
+ 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, //1930-1939
+ 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, //1940-1949
+ 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, //1950-1959
+ 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, //1960-1969
+ 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, //1970-1979
+ 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, //1980-1989
+ 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0, //1990-1999
+ 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, //2000-2009
+ 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, //2010-2019
+ 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, //2020-2029
+ 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, //2030-2039
+ 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, //2040-2049
+ 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, //2050-2059
+ 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, //2060-2069
+ 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, //2070-2079
+ 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, //2080-2089
+ 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, //2090-2099
+ 0x0d520
+ ], //2100
+ /**
+ * 公历每个月份的天数普通表
+ * @Array Of Property
+ * @return Number
+ */
+ solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
+ /**
+ * 天干地支之天干速查表
+ * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
+ * @return Cn string
+ */
+ Gan: ["\u7532", "\u4e59", "\u4e19", "\u4e01", "\u620a", "\u5df1", "\u5e9a", "\u8f9b", "\u58ec", "\u7678"],
+ /**
+ * 天干地支之地支速查表
+ * @Array Of Property
+ * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
+ * @return Cn string
+ */
+ Zhi: ["\u5b50", "\u4e11", "\u5bc5", "\u536f", "\u8fb0", "\u5df3", "\u5348", "\u672a", "\u7533", "\u9149", "\u620c",
+ "\u4ea5"
+ ],
+ /**
+ * 天干地支之地支速查表<=>生肖
+ * @Array Of Property
+ * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
+ * @return Cn string
+ */
+ Animals: ["\u9f20", "\u725b", "\u864e", "\u5154", "\u9f99", "\u86c7", "\u9a6c", "\u7f8a", "\u7334", "\u9e21",
+ "\u72d7", "\u732a"
+ ],
+ /**
+ * 24节气速查表
+ * @Array Of Property
+ * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
+ * @return Cn string
+ */
+ solarTerm: ["\u5c0f\u5bd2", "\u5927\u5bd2", "\u7acb\u6625", "\u96e8\u6c34", "\u60ca\u86f0", "\u6625\u5206",
+ "\u6e05\u660e", "\u8c37\u96e8", "\u7acb\u590f", "\u5c0f\u6ee1", "\u8292\u79cd", "\u590f\u81f3", "\u5c0f\u6691",
+ "\u5927\u6691", "\u7acb\u79cb", "\u5904\u6691", "\u767d\u9732", "\u79cb\u5206", "\u5bd2\u9732", "\u971c\u964d",
+ "\u7acb\u51ac", "\u5c0f\u96ea", "\u5927\u96ea", "\u51ac\u81f3"
+ ],
+ /**
+ * 1900-2100各年的24节气日期速查表
+ * @Array Of Property
+ * @return 0x string For splice
+ */
+ sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
+ '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
+ 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
+ '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
+ '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
+ '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
+ '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
+ '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+ '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
+ '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+ '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
+ '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
+ '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
+ '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
+ '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
+ '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
+ '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
+ '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
+ '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
+ '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'
+ ],
+ /**
+ * 数字转中文速查表
+ * @Array Of Property
+ * @trans ['日','一','二','三','四','五','六','七','八','九','十']
+ * @return Cn string
+ */
+ nStr1: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341"],
+ /**
+ * 日期转农历称呼速查表
+ * @Array Of Property
+ * @trans ['初','十','廿','卅']
+ * @return Cn string
+ */
+ nStr2: ["\u521d", "\u5341", "\u5eff", "\u5345"],
+ /**
+ * 月份转农历称呼速查表
+ * @Array Of Property
+ * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
+ * @return Cn string
+ */
+ nStr3: ["\u6b63", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341", "\u51ac",
+ "\u814a"
+ ],
+ /**
+ * 返回农历y年一整年的总天数
+ * @param lunar Year
+ * @return Number
+ * @eg:let count = calendar.lYearDays(1987) ;//count=387
+ */
+ lYearDays: function(y) {
+ let i, sum = 348;
+ for (i = 0x8000; i > 0x8; i >>= 1) {
+ sum += (calendar.lunarInfo[y - 1900] & i) ? 1 : 0;
+ }
+ return (sum + calendar.leapDays(y));
+ },
+ /**
+ * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
+ * @param lunar Year
+ * @return Number (0-12)
+ * @eg:let leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
+ */
+ leapMonth: function(y) { //闰字编码 \u95f0
+ return (calendar.lunarInfo[y - 1900] & 0xf);
+ },
+ /**
+ * 返回农历y年闰月的天数 若该年没有闰月则返回0
+ * @param lunar Year
+ * @return Number (0、29、30)
+ * @eg:let leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
+ */
+ leapDays: function(y) {
+ if (calendar.leapMonth(y)) {
+ return ((calendar.lunarInfo[y - 1900] & 0x10000) ? 30 : 29);
+ }
+ return (0);
+ },
+ /**
+ * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
+ * @param lunar Year
+ * @return Number (-1、29、30)
+ * @eg:let MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
+ */
+ monthDays: function(y, m) {
+ if (m > 12 || m < 1) {
+ return -1
+ } //月份参数从1至12,参数错误返回-1
+ return ((calendar.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29);
+ },
+ /**
+ * 返回公历(!)y年m月的天数
+ * @param solar Year
+ * @return Number (-1、28、29、30、31)
+ * @eg:let solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
+ */
+ solarDays: function(y, m) {
+ if (m > 12 || m < 1) {
+ return -1
+ } //若参数错误 返回-1
+ let ms = m - 1;
+ if (ms == 1) { //2月份的闰平规律测算后确认返回28或29
+ return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28);
+ } else {
+ return (calendar.solarMonth[ms]);
+ }
+ },
+ /**
+ * 农历年份转换为干支纪年
+ * @param lYear 农历年的年份数
+ * @return Cn string
+ */
+ toGanZhiYear: function(lYear) {
+ let ganKey = (lYear - 3) % 10;
+ let zhiKey = (lYear - 3) % 12;
+ if (ganKey == 0) ganKey = 10; //如果余数为0则为最后一个天干
+ if (zhiKey == 0) zhiKey = 12; //如果余数为0则为最后一个地支
+ return calendar.Gan[ganKey - 1] + calendar.Zhi[zhiKey - 1];
+ },
+ /**
+ * 公历月、日判断所属星座
+ * @param cMonth [description]
+ * @param cDay [description]
+ * @return Cn string
+ */
+ toAstro: function(cMonth, cDay) {
+ let s =
+ "\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf";
+ let arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22];
+ return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + "\u5ea7"; //座
+ },
+ /**
+ * 传入offset偏移量返回干支
+ * @param offset 相对甲子的偏移量
+ * @return Cn string
+ */
+ toGanZhi: function(offset) {
+ return calendar.Gan[offset % 10] + calendar.Zhi[offset % 12];
+ },
+ /**
+ * 传入公历(!)y年获得该年第n个节气的公历日期
+ * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
+ * @return day Number
+ * @eg:let _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
+ */
+ getTerm: function(y, n) {
+ if (y < 1900 || y > 2100) {
+ return -1;
+ }
+ if (n < 1 || n > 24) {
+ return -1;
+ }
+ let _table = calendar.sTermInfo[y - 1900];
+ let _info = [
+ parseInt('0x' + _table.substr(0, 5)).toString(),
+ parseInt('0x' + _table.substr(5, 5)).toString(),
+ parseInt('0x' + _table.substr(10, 5)).toString(),
+ parseInt('0x' + _table.substr(15, 5)).toString(),
+ parseInt('0x' + _table.substr(20, 5)).toString(),
+ parseInt('0x' + _table.substr(25, 5)).toString()
+ ];
+ let _calday = [
+ _info[0].substr(0, 1),
+ _info[0].substr(1, 2),
+ _info[0].substr(3, 1),
+ _info[0].substr(4, 2),
+ _info[1].substr(0, 1),
+ _info[1].substr(1, 2),
+ _info[1].substr(3, 1),
+ _info[1].substr(4, 2),
+ _info[2].substr(0, 1),
+ _info[2].substr(1, 2),
+ _info[2].substr(3, 1),
+ _info[2].substr(4, 2),
+ _info[3].substr(0, 1),
+ _info[3].substr(1, 2),
+ _info[3].substr(3, 1),
+ _info[3].substr(4, 2),
+ _info[4].substr(0, 1),
+ _info[4].substr(1, 2),
+ _info[4].substr(3, 1),
+ _info[4].substr(4, 2),
+ _info[5].substr(0, 1),
+ _info[5].substr(1, 2),
+ _info[5].substr(3, 1),
+ _info[5].substr(4, 2),
+ ];
+ return parseInt(_calday[n - 1]);
+ },
+ /**
+ * 传入农历数字月份返回汉语通俗表示法
+ * @param lunar month
+ * @return Cn string
+ * @eg:let cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
+ */
+ toChinaMonth: function(m) { // 月 => \u6708
+ if (m > 12 || m < 1) {
+ return -1
+ } //若参数错误 返回-1
+ let s = calendar.nStr3[m - 1];
+ s += "\u6708"; //加上月字
+ return s;
+ },
+ /**
+ * 传入农历日期数字返回汉字表示法
+ * @param lunar day
+ * @return Cn string
+ * @eg:let cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
+ */
+ toChinaDay: function(d) { //日 => \u65e5
+ let s;
+ switch (d) {
+ case 10:
+ s = '\u521d\u5341';
+ break;
+ case 20:
+ s = '\u4e8c\u5341';
+ break;
+ break;
+ case 30:
+ s = '\u4e09\u5341';
+ break;
+ break;
+ default:
+ s = calendar.nStr2[Math.floor(d / 10)];
+ s += calendar.nStr1[d % 10];
+ }
+ return (s);
+ },
+ /**
+ * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
+ * @param y year
+ * @return Cn string
+ * @eg:let animal = calendar.getAnimal(1987) ;//animal='兔'
+ */
+ getAnimal: function(y) {
+ return calendar.Animals[(y - 4) % 12]
+ },
+ /**
+ * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
+ * @param y solar year
+ * @param m solar month
+ * @param d solar day
+ * @return JSON object
+ * @eg:console.log(calendar.solar2lunar(1987,11,01));
+ */
+ solar2lunar: function(y, m, d) { //参数区间1900.1.31~2100.12.31
+ if (y < 1900 || y > 2100) {
+ return -1;
+ } //年份限定、上限
+ if (y == 1900 && m == 1 && d < 31) {
+ return -1;
+ } //下限
+ let objDate;
+ if (!y) { //未传参 获得当天
+ objDate = new Date();
+ } else {
+ objDate = new Date(y, parseInt(m) - 1, d)
+ }
+ let i, leap = 0,
+ temp = 0;
+ //修正ymd参数
+ y = objDate.getFullYear();
+ m = objDate.getMonth() + 1;
+ d = objDate.getDate();
+ let offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) /
+ 86400000;
+ for (i = 1900; i < 2101 && offset > 0; i++) {
+ temp = calendar.lYearDays(i);
+ offset -= temp;
+ }
+ if (offset < 0) {
+ offset += temp;
+ i--;
+ }
+ //是否今天
+ let isTodayObj = new Date(),
+ isToday = false;
+ if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {
+ isToday = true;
+ }
+ //星期几
+ let nWeek = objDate.getDay(),
+ cWeek = calendar.nStr1[nWeek];
+ if (nWeek == 0) {
+ nWeek = 7;
+ } //数字表示周几顺应天朝周一开始的惯例
+ //农历年
+ let year = i;
+ leap = calendar.leapMonth(i); //闰哪个月
+ let isLeap = false;
+ //效验闰月
+ for (i = 1; i < 13 && offset > 0; i++) {
+ //闰月
+ if (leap > 0 && i == (leap + 1) && isLeap == false) {
+ --i;
+ isLeap = true;
+ temp = calendar.leapDays(year); //计算农历闰月天数
+ } else {
+ temp = calendar.monthDays(year, i); //计算农历普通月天数
+ }
+ //解除闰月
+ if (isLeap == true && i == (leap + 1)) {
+ isLeap = false;
+ }
+ offset -= temp;
+ }
+ if (offset == 0 && leap > 0 && i == leap + 1)
+ if (isLeap) {
+ isLeap = false;
+ } else {
+ isLeap = true;
+ --i;
+ }
+ if (offset < 0) {
+ offset += temp;
+ --i;
+ }
+ //农历月
+ let month = i;
+ //农历日
+ let day = offset + 1;
+ //天干地支处理
+ let sm = m - 1;
+ let gzY = calendar.toGanZhiYear(year);
+ //月柱 1900年1月小寒以前为 丙子月(60进制12)
+ let firstNode = calendar.getTerm(year, (m * 2 - 1)); //返回当月「节」为几日开始
+ let secondNode = calendar.getTerm(year, (m * 2)); //返回当月「节」为几日开始
+ //依据12节气修正干支月
+ let gzM = calendar.toGanZhi((y - 1900) * 12 + m + 11);
+ if (d >= firstNode) {
+ gzM = calendar.toGanZhi((y - 1900) * 12 + m + 12);
+ }
+ //传入的日期的节气与否
+ let isTerm = false;
+ let Term = null;
+ if (firstNode == d) {
+ isTerm = true;
+ Term = calendar.solarTerm[m * 2 - 2];
+ }
+ if (secondNode == d) {
+ isTerm = true;
+ Term = calendar.solarTerm[m * 2 - 1];
+ }
+ //日柱 当月一日与 1900/1/1 相差天数
+ let dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10;
+ let gzD = calendar.toGanZhi(dayCyclical + d - 1);
+ //该日期所属的星座
+ let astro = calendar.toAstro(m, d);
+ return {
+ 'lYear': year,
+ 'lMonth': month,
+ 'lDay': day,
+ 'Animal': calendar.getAnimal(year),
+ 'IMonthCn': (isLeap ? "\u95f0" : '') + calendar.toChinaMonth(month),
+ 'IDayCn': calendar.toChinaDay(day),
+ 'cYear': y,
+ 'cMonth': m,
+ 'cDay': d,
+ 'gzYear': gzY,
+ 'gzMonth': gzM,
+ 'gzDay': gzD,
+ 'isToday': isToday,
+ 'isLeap': isLeap,
+ 'nWeek': nWeek,
+ 'ncWeek': "\u661f\u671f" + cWeek,
+ 'isTerm': isTerm,
+ 'Term': Term,
+ 'astro': astro
+ };
+ },
+ /**
+ * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
+ * @param y lunar year
+ * @param m lunar month
+ * @param d lunar day
+ * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
+ * @return JSON object
+ * @eg:console.log(calendar.lunar2solar(1987,9,10));
+ */
+ lunar2solar: function(y, m, d, isLeapMonth) { //参数区间1900.1.31~2100.12.1
+ isLeapMonth = !!isLeapMonth;
+ let leapOffset = 0;
+ let leapMonth = calendar.leapMonth(y);
+ let leapDay = calendar.leapDays(y);
+ if (isLeapMonth && (leapMonth != m)) {
+ return -1;
+ } //传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
+ if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) {
+ return -1;
+ } //超出了最大极限值
+ let day = calendar.monthDays(y, m);
+ let _day = day;
+ //bugFix 2016-9-25
+ //if month is leap, _day use leapDays method
+ if (isLeapMonth) {
+ _day = calendar.leapDays(y, m);
+ }
+ if (y < 1900 || y > 2100 || d > _day) {
+ return -1;
+ } //参数合法性效验
+ //计算农历的时间差
+ let offset = 0;
+ for (let i = 1900; i < y; i++) {
+ offset += calendar.lYearDays(i);
+ }
+ let leap = 0,
+ isAdd = false;
+ for (let i = 1; i < m; i++) {
+ leap = calendar.leapMonth(y);
+ if (!isAdd) { //处理闰月
+ if (leap <= i && leap > 0) {
+ offset += calendar.leapDays(y);
+ isAdd = true;
+ }
+ }
+ offset += calendar.monthDays(y, i);
+ }
+ //转换闰月农历 需补充该年闰月的前一个月的时差
+ if (isLeapMonth) {
+ offset += day;
+ }
+ //1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
+ let stmap = Date.UTC(1900, 1, 30, 0, 0, 0);
+ let calObj = new Date((offset + d - 31) * 86400000 + stmap);
+ let cY = calObj.getUTCFullYear();
+ let cM = calObj.getUTCMonth() + 1;
+ let cD = calObj.getUTCDate();
+ return calendar.solar2lunar(cY, cM, cD);
+ }
+};
+
+export default {
+ solar2lunar: calendar.solar2lunar,
+ lunar2solar: calendar.lunar2solar
+};
diff --git a/components/thorui/tui-calendar/tui-calendar.vue b/components/thorui/tui-calendar/tui-calendar.vue
new file mode 100644
index 0000000..10bafea
--- /dev/null
+++ b/components/thorui/tui-calendar/tui-calendar.vue
@@ -0,0 +1,915 @@
+
+
+
+
+
+
+
+
+
+
+ {{ showTitle }}
+
+
+
+
+
+
+
+
+
+
+ {{ index + 1 }}
+
+ {{ getDescText(index, startDate, endDate) }}
+
+
+
+
+ {{ startText }}
+
+ {{ endText }}
+
+ {{ month }}
+
+
+
+
+
+
diff --git a/components/thorui/tui-card/tui-card.vue b/components/thorui/tui-card/tui-card.vue
new file mode 100644
index 0000000..ef2b470
--- /dev/null
+++ b/components/thorui/tui-card/tui-card.vue
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-cascade-selection/tui-cascade-selection.vue b/components/thorui/tui-cascade-selection/tui-cascade-selection.vue
new file mode 100644
index 0000000..2f084df
--- /dev/null
+++ b/components/thorui/tui-cascade-selection/tui-cascade-selection.vue
@@ -0,0 +1,513 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ subItem.text }}
+
+ {{ subItem.subText }}
+
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-circular-progress/tui-circular-progress.vue b/components/thorui/tui-circular-progress/tui-circular-progress.vue
new file mode 100644
index 0000000..3aa00db
--- /dev/null
+++ b/components/thorui/tui-circular-progress/tui-circular-progress.vue
@@ -0,0 +1,265 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/thorui/tui-collapse/tui-collapse.vue b/components/thorui/tui-collapse/tui-collapse.vue
new file mode 100644
index 0000000..446c854
--- /dev/null
+++ b/components/thorui/tui-collapse/tui-collapse.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-countdown/tui-countdown.vue b/components/thorui/tui-countdown/tui-countdown.vue
new file mode 100644
index 0000000..a4ff640
--- /dev/null
+++ b/components/thorui/tui-countdown/tui-countdown.vue
@@ -0,0 +1,343 @@
+
+
+
+
+ {{ d }}
+
+
+
+ {{ isColon ? ':' : '天' }}
+
+
+
+ {{ h }}
+
+
+
+ {{ isColon ? ':' : '时' }}
+
+
+
+ {{ i }}
+
+
+
+ {{ isColon ? ':' : '分' }}
+
+
+
+ {{ s }}
+
+
+
+ {{ unitEn ? 's' : '秒' }}
+
+
+ .
+
+
+
+ {{item}}
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-divider/tui-divider.vue b/components/thorui/tui-divider/tui-divider.vue
new file mode 100644
index 0000000..ec96112
--- /dev/null
+++ b/components/thorui/tui-divider/tui-divider.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-drawer/tui-drawer.vue b/components/thorui/tui-drawer/tui-drawer.vue
new file mode 100644
index 0000000..da36970
--- /dev/null
+++ b/components/thorui/tui-drawer/tui-drawer.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-icon/tui-icon.js b/components/thorui/tui-icon/tui-icon.js
new file mode 100644
index 0000000..36549d2
--- /dev/null
+++ b/components/thorui/tui-icon/tui-icon.js
@@ -0,0 +1,190 @@
+export default {
+ "about": "\ue772",
+ "about-fill": "\ue771",
+ "add": "\ue770",
+ "add-fill": "\ue76f",
+ "addmessage": "\ue76e",
+ "addressbook": "\ue76d",
+ "agree": "\ue76c",
+ "agree-fill": "\ue76b",
+ "alarm": "\ue76a",
+ "alarm-fill": "\ue769",
+ "alipay": "\ue768",
+ "android": "\ue767",
+ "applets": "\ue766",
+ "arrowdown": "\ue765",
+ "arrowleft": "\ue764",
+ "arrowright": "\ue763",
+ "arrowup": "\ue762",
+ "attestation": "\ue761",
+ "back": "\ue760",
+ "bag": "\ue75f",
+ "bag-fill": "\ue75e",
+ "balloon": "\ue75d",
+ "bankcard": "\ue75c",
+ "bankcard-fill": "\ue75b",
+ "bottom": "\ue75a",
+ "calendar": "\ue759",
+ "camera": "\ue758",
+ "camera-fill": "\ue757",
+ "camera-add": "\ue756",
+ "card": "\ue755",
+ "card-fill": "\ue754",
+ "cart": "\ue753",
+ "cart-fill": "\ue752",
+ "category": "\ue751",
+ "category-fill": "\ue750",
+ "check": "\ue74f",
+ "circle": "\ue74e",
+ "circle-fill": "\ue74d",
+ "circle-selected": "\ue74c",
+ "clock": "\ue74b",
+ "clock-fill": "\ue74a",
+ "close": "\ue749",
+ "close-fill": "\ue748",
+ "community": "\ue747",
+ "community-fill": "\ue746",
+ "computer": "\ue745",
+ "computer-fill": "\ue744",
+ "coupon": "\ue743",
+ "delete": "\ue742",
+ "deletekey": "\ue741",
+ "dingtalk": "\ue740",
+ "dissatisfied": "\ue73f",
+ "down": "\ue73e",
+ "download": "\ue73d",
+ "edit": "\ue73c",
+ "ellipsis": "\ue73b",
+ "enlarge": "\ue73a",
+ "evaluate": "\ue739",
+ "exchange": "\ue738",
+ "explain": "\ue737",
+ "explain-fill": "\ue736",
+ "explore": "\ue735",
+ "explore-fill": "\ue734",
+ "eye": "\ue733",
+ "feedback": "\ue732",
+ "fingerprint": "\ue730",
+ "friendadd": "\ue72f",
+ "friendadd-fill": "\ue72e",
+ "gps": "\ue72d",
+ "histogram": "\ue72c",
+ "home": "\ue72b",
+ "home-fill": "\ue72a",
+ "house": "\ue729",
+ "imface": "\ue728",
+ "imkeyboard": "\ue727",
+ "immore": "\ue726",
+ "imvoice": "\ue725",
+ "ios": "\ue724",
+ "kefu": "\ue723",
+ "label": "\ue722",
+ "label-fill": "\ue721",
+ "like": "\ue720",
+ "like-fill": "\ue71f",
+ "link": "\ue71e",
+ "listview": "\ue71d",
+ "loading": "\ue71c",
+ "location": "\ue71b",
+ "mail": "\ue71a",
+ "mail-fill": "\ue719",
+ "manage": "\ue718",
+ "manage-fill": "\ue717",
+ "member": "\ue716",
+ "member-fill": "\ue715",
+ "message": "\ue714",
+ "message-fill": "\ue713",
+ "mobile": "\ue712",
+ "moments": "\ue711",
+ "more": "\ue710",
+ "more-fill": "\ue70f",
+ "narrow": "\ue70e",
+ "news": "\ue70d",
+ "news-fill": "\ue70c",
+ "nodata": "\ue70b",
+ "notice": "\ue699",
+ "notice-fill": "\ue698",
+ "offline": "\ue697",
+ "offline-fill": "\ue696",
+ "oppose": "\ue695",
+ "oppose-fill": "\ue694",
+ "order": "\ue693",
+ "partake": "\ue692",
+ "people": "\ue691",
+ "people-fill": "\ue690",
+ "pic": "\ue68f",
+ "pic-fill": "\ue68e",
+ "picture": "\ue68d",
+ "pie": "\ue68c",
+ "plus": "\ue689",
+ "polygonal": "\ue688",
+ "position": "\ue686",
+ "pwd": "\ue685",
+ "qq": "\ue684",
+ "qrcode": "\ue682",
+ "redpacket": "\ue681",
+ "redpacket-fill": "\ue680",
+ "reduce": "\ue67f",
+ "refresh": "\ue67e",
+ "revoke": "\ue67d",
+ "satisfied": "\ue67c",
+ "screen": "\ue67b",
+ "search": "\ue67a",
+ "search-2": "\ue679",
+ "send": "\ue678",
+ "service": "\ue677",
+ "service-fill": "\ue676",
+ "setup": "\ue675",
+ "setup-fill": "\ue674",
+ "share": "\ue673",
+ "share-fill": "\ue672",
+ "shield": "\ue671",
+ "shop": "\ue670",
+ "shop-fill": "\ue66f",
+ "shut": "\ue66e",
+ "signin": "\ue66d",
+ "sina": "\ue66c",
+ "skin": "\ue66b",
+ "soso": "\ue669",
+ "square": "\ue668",
+ "square-fill": "\ue667",
+ "square-selected": "\ue666",
+ "star": "\ue665",
+ "star-fill": "\ue664",
+ "strategy": "\ue663",
+ "sweep": "\ue662",
+ "time": "\ue661",
+ "time-fill": "\ue660",
+ "todown": "\ue65f",
+ "toleft": "\ue65e",
+ "tool": "\ue65d",
+ "top": "\ue65c",
+ "toright": "\ue65b",
+ "towardsleft": "\ue65a",
+ "towardsright": "\ue659",
+ "towardsright-fill": "\ue658",
+ "transport": "\ue657",
+ "transport-fill": "\ue656",
+ "turningdown": "\ue654",
+ "turningleft": "\ue653",
+ "turningright": "\ue652",
+ "turningup": "\ue651",
+ "unreceive": "\ue650",
+ "seen": "\ue7d2",
+ "unseen": "\ue7d1",
+ "up": "\ue64e",
+ "upload": "\ue64c",
+ "video": "\ue64b",
+ "voice": "\ue649",
+ "voice-fill": "\ue648",
+ "voipphone": "\ue647",
+ "wallet": "\ue646",
+ "warning": "\ue645",
+ "wealth": "\ue644",
+ "wealth-fill": "\ue643",
+ "weather": "\ue642",
+ "wechat": "\ue641",
+ "wifi": "\ue640",
+ "play": "\ue7d5",
+ "suspend": "\ue7d4"
+}
diff --git a/components/thorui/tui-icon/tui-icon.vue b/components/thorui/tui-icon/tui-icon.vue
new file mode 100644
index 0000000..ec9c955
--- /dev/null
+++ b/components/thorui/tui-icon/tui-icon.vue
@@ -0,0 +1,81 @@
+
+ {{ icons[name] }}
+
+
+
+
+
+
diff --git a/components/thorui/tui-loading/tui-loading.vue b/components/thorui/tui-loading/tui-loading.vue
new file mode 100644
index 0000000..4c38a09
--- /dev/null
+++ b/components/thorui/tui-loading/tui-loading.vue
@@ -0,0 +1,78 @@
+
+
+
+ {{text}}
+
+
+
+
+
+
diff --git a/components/thorui/tui-loadmore/tui-loadmore.vue b/components/thorui/tui-loadmore/tui-loadmore.vue
new file mode 100644
index 0000000..4c9ab65
--- /dev/null
+++ b/components/thorui/tui-loadmore/tui-loadmore.vue
@@ -0,0 +1,161 @@
+
+
+
+ {{text}}
+
+
+
+
+
+
diff --git a/components/thorui/tui-modal/tui-modal.vue b/components/thorui/tui-modal/tui-modal.vue
new file mode 100644
index 0000000..008c09d
--- /dev/null
+++ b/components/thorui/tui-modal/tui-modal.vue
@@ -0,0 +1,408 @@
+
+
+
+
+ {{ title }}
+ {{ content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-no-data/tui-no-data.vue b/components/thorui/tui-no-data/tui-no-data.vue
new file mode 100644
index 0000000..1406ca8
--- /dev/null
+++ b/components/thorui/tui-no-data/tui-no-data.vue
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+ {{btnText}}
+
+
+
+
+
+
diff --git a/components/thorui/tui-nomore/tui-nomore.vue b/components/thorui/tui-nomore/tui-nomore.vue
new file mode 100644
index 0000000..25d7d2c
--- /dev/null
+++ b/components/thorui/tui-nomore/tui-nomore.vue
@@ -0,0 +1,115 @@
+
+
+
+ {{isDot?dotText:text}}
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-numberbox/tui-numberbox.vue b/components/thorui/tui-numberbox/tui-numberbox.vue
new file mode 100644
index 0000000..811e8b4
--- /dev/null
+++ b/components/thorui/tui-numberbox/tui-numberbox.vue
@@ -0,0 +1,231 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-rate/tui-rate.vue b/components/thorui/tui-rate/tui-rate.vue
new file mode 100644
index 0000000..997a3d9
--- /dev/null
+++ b/components/thorui/tui-rate/tui-rate.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-slide-verify/tui-slide-verify.vue b/components/thorui/tui-slide-verify/tui-slide-verify.vue
new file mode 100644
index 0000000..196090d
--- /dev/null
+++ b/components/thorui/tui-slide-verify/tui-slide-verify.vue
@@ -0,0 +1,218 @@
+
+
+ 拖动滑块验证
+
+ {{passText}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-slide-verify/tui-slide-verify.wxs b/components/thorui/tui-slide-verify/tui-slide-verify.wxs
new file mode 100644
index 0000000..1ab80e7
--- /dev/null
+++ b/components/thorui/tui-slide-verify/tui-slide-verify.wxs
@@ -0,0 +1,73 @@
+var slideBarWidth = 200;
+var slideBlockWidth = 32;
+var errorRange = 2
+var disabled = false
+
+function bool(str) {
+ return str === 'true' || str == true ? true : false
+}
+
+function touchstart(e, ins) {
+ var state=e.instance.getState()
+ var touch = e.touches[0] || e.changedTouches[0]
+ var dataset = e.instance.getDataset()
+ state.startX = touch.pageX
+ slideBarWidth = +dataset.slidebarwidth
+ slideBlockWidth = +dataset.slideblockwidth
+ errorRange = +dataset.errorrange
+ disabled = bool(dataset.disabled)
+}
+
+function styleChange(left, ins) {
+ if (!ins) return;
+ ins.selectComponent('.tui-slider-block').setStyle({
+ transform: 'translate3d(' + left + 'px,0,0)'
+ })
+ ins.selectComponent('.tui-slide-glided').setStyle({
+ width: left + 'px'
+ })
+}
+
+function touchmove(e, ins) {
+ if (disabled) return;
+ var state=e.instance.getState()
+ var touch = e.touches[0] || e.changedTouches[0]
+ var pageX = touch.pageX;
+ var left = pageX - state.startX + (state.lastLeft || 0);
+ left = left < 0 ? 0 : left;
+ var width = slideBarWidth - slideBlockWidth;
+ left = left >= width ? width : left;
+ state.startX = pageX
+ state.lastLeft = left
+ styleChange(left, ins)
+}
+
+function touchend(e, ins) {
+ if (disabled) return;
+ var state=e.instance.getState()
+ let left = slideBarWidth - slideBlockWidth
+ if (left - state.lastLeft <= errorRange) {
+ styleChange(left, ins)
+ ins.callMethod('success')
+ } else {
+ state.startX = 0;
+ state.lastLeft = 0;
+ styleChange(0, ins)
+ }
+}
+
+function slidereset(reset, oldreset, owner, ins) {
+ var state=ins.getState()
+ if (reset > 0) {
+ state.startX = 0;
+ state.lastLeft = 0;
+ styleChange(0, owner)
+ }
+}
+
+module.exports = {
+ touchstart: touchstart,
+ touchmove: touchmove,
+ touchend: touchend,
+ slidereset: slidereset
+}
\ No newline at end of file
diff --git a/components/thorui/tui-steps/tui-steps.vue b/components/thorui/tui-steps/tui-steps.vue
new file mode 100644
index 0000000..4cfb063
--- /dev/null
+++ b/components/thorui/tui-steps/tui-steps.vue
@@ -0,0 +1,253 @@
+
+
+
+
+
+ {{ type == 1 ? '' : index + 1 }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+ {{ item.desc }}
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-sticky-wxs/tui-sticky-wxs.vue b/components/thorui/tui-sticky-wxs/tui-sticky-wxs.vue
new file mode 100644
index 0000000..c770b10
--- /dev/null
+++ b/components/thorui/tui-sticky-wxs/tui-sticky-wxs.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-sticky-wxs/tui-sticky.wxs b/components/thorui/tui-sticky-wxs/tui-sticky.wxs
new file mode 100644
index 0000000..0a04563
--- /dev/null
+++ b/components/thorui/tui-sticky-wxs/tui-sticky.wxs
@@ -0,0 +1,44 @@
+var stickyChange = function(scrollTop, oldScrollTop, ownerInstance, ins) {
+ if (!oldScrollTop && scrollTop === 0) return false;
+ var dataset = ins.getDataset()
+ var top = +dataset.top;
+ var height = +dataset.height;
+ var stickyTop = +dataset.stickytop;
+ var isNativeHeader = dataset.isnativeheader;
+ var isFixed = false;
+ var distance = stickyTop
+ // #ifdef H5
+ if (isNativeHeader) {
+ distance = distance - 44
+ distance = distance < 0 ? 0 : distance
+ }
+ // #endif
+ if (dataset.container) {
+ isFixed = (scrollTop + distance >= top && scrollTop + distance < top + height) ? true : false
+ } else {
+ isFixed = scrollTop + distance >= top ? true : false
+ }
+ if (isFixed) {
+ ownerInstance.selectComponent('.tui-sticky-bar').setStyle({
+ "top": stickyTop + 'px'
+ }).addClass('tui-sticky-fixed')
+ ownerInstance.selectComponent('.tui-sticky-seat').setStyle({
+ "display": 'block'
+ })
+ } else {
+ ownerInstance.selectComponent('.tui-sticky-bar').setStyle({
+ "top": 'auto'
+ }).removeClass('tui-sticky-fixed')
+ ownerInstance.selectComponent('.tui-sticky-seat').setStyle({
+ "display": 'none'
+ })
+ }
+ ownerInstance.triggerEvent("sticky", [{
+ isFixed: isFixed,
+ index: parseInt(dataset.index)
+ }])
+}
+
+module.exports = {
+ stickyChange: stickyChange
+}
diff --git a/components/thorui/tui-sticky/tui-sticky.vue b/components/thorui/tui-sticky/tui-sticky.vue
new file mode 100644
index 0000000..a7e8e91
--- /dev/null
+++ b/components/thorui/tui-sticky/tui-sticky.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-tag/tui-tag.vue b/components/thorui/tui-tag/tui-tag.vue
new file mode 100644
index 0000000..89c8a9a
--- /dev/null
+++ b/components/thorui/tui-tag/tui-tag.vue
@@ -0,0 +1,360 @@
+
+
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-tips/tui-tips.vue b/components/thorui/tui-tips/tui-tips.vue
new file mode 100644
index 0000000..bd6900a
--- /dev/null
+++ b/components/thorui/tui-tips/tui-tips.vue
@@ -0,0 +1,129 @@
+
+
+ {{ msg }}
+
+
+
+ {{ msg }}
+
+
+
+
+
+
+
diff --git a/components/thorui/tui-toast/tui-toast.vue b/components/thorui/tui-toast/tui-toast.vue
new file mode 100644
index 0000000..31b6f8f
--- /dev/null
+++ b/components/thorui/tui-toast/tui-toast.vue
@@ -0,0 +1,121 @@
+
+
+
+ {{title}}
+ {{content}}
+
+
+
+
+
+
diff --git a/components/wakary-input/bottom.jpeg b/components/wakary-input/bottom.jpeg
new file mode 100644
index 0000000..8fb55ab
Binary files /dev/null and b/components/wakary-input/bottom.jpeg differ
diff --git a/components/wakary-input/box.jpeg b/components/wakary-input/box.jpeg
new file mode 100644
index 0000000..255de9f
Binary files /dev/null and b/components/wakary-input/box.jpeg differ
diff --git a/components/wakary-input/components/wakary-input/wakary-input.vue b/components/wakary-input/components/wakary-input/wakary-input.vue
new file mode 100644
index 0000000..692d898
--- /dev/null
+++ b/components/wakary-input/components/wakary-input/wakary-input.vue
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
+
+
+ .
+
+ {{ codeArr[index] ? codeArr[index] : ''}}
+
+
+
+
+
+
+
+
+
diff --git a/components/wakary-input/middle.jpeg b/components/wakary-input/middle.jpeg
new file mode 100644
index 0000000..2f5de3f
Binary files /dev/null and b/components/wakary-input/middle.jpeg differ
diff --git a/components/wakary-input/readme.md b/components/wakary-input/readme.md
new file mode 100644
index 0000000..1495009
--- /dev/null
+++ b/components/wakary-input/readme.md
@@ -0,0 +1,172 @@
+# 使用
+下载下来直接引入,然后使用。也可以直接复制下面的源码内容。无任何依赖。
+
+`type`可以控制是 中间划线(middle) 下划线(bottom) 方宽(box) 样式。
+
+# 源码
+```vue
+
+
+
+
+
+
+
+
+
+ .
+
+ {{ codeArr[index] ? codeArr[index] : ''}}
+
+
+
+
+
+
+
+
+
+```
diff --git a/components/wakary-input/wakary-input.zip b/components/wakary-input/wakary-input.zip
new file mode 100644
index 0000000..9df8bea
Binary files /dev/null and b/components/wakary-input/wakary-input.zip differ
diff --git a/jsFile/base64-src.js b/jsFile/base64-src.js
new file mode 100644
index 0000000..fb3cb64
--- /dev/null
+++ b/jsFile/base64-src.js
@@ -0,0 +1,201 @@
+function getLocalFilePath(path) {
+ if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path.indexOf(
+ '_downloads') === 0) {
+ return path
+ }
+ if (path.indexOf('file://') === 0) {
+ return path
+ }
+ if (path.indexOf('/storage/emulated/0/') === 0) {
+ return path
+ }
+ if (path.indexOf('/') === 0) {
+ var localFilePath = plus.io.convertAbsoluteFileSystem(path)
+ if (localFilePath !== path) {
+ return localFilePath
+ } else {
+ path = path.substr(1)
+ }
+ }
+ return '_www/' + path
+}
+
+function dataUrlToBase64(str) {
+ var array = str.split(',')
+ return array[array.length - 1]
+}
+
+var index = 0
+
+function getNewFileId() {
+ return Date.now() + String(index++)
+}
+
+function biggerThan(v1, v2) {
+ var v1Array = v1.split('.')
+ var v2Array = v2.split('.')
+ var update = false
+ for (var index = 0; index < v2Array.length; index++) {
+ var diff = v1Array[index] - v2Array[index]
+ if (diff !== 0) {
+ update = diff > 0
+ break
+ }
+ }
+ return update
+}
+
+export function pathToBase64(path) {
+ return new Promise(function(resolve, reject) {
+ if (typeof window === 'object' && 'document' in window) {
+ if (typeof FileReader === 'function') {
+ var xhr = new XMLHttpRequest()
+ xhr.open('GET', path, true)
+ xhr.responseType = 'blob'
+ xhr.onload = function() {
+ if (this.status === 200) {
+ let fileReader = new FileReader()
+ fileReader.onload = function(e) {
+ resolve(e.target.result)
+ }
+ fileReader.onerror = reject
+ fileReader.readAsDataURL(this.response)
+ }
+ }
+ xhr.onerror = reject
+ xhr.send()
+ return
+ }
+ var canvas = document.createElement('canvas')
+ var c2x = canvas.getContext('2d')
+ var img = new Image
+ img.onload = function() {
+ canvas.width = img.width
+ canvas.height = img.height
+ c2x.drawImage(img, 0, 0)
+ resolve(canvas.toDataURL())
+ canvas.height = canvas.width = 0
+ }
+ img.onerror = reject
+ img.src = path
+ return
+ }
+ if (typeof plus === 'object') {
+ plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function(entry) {
+ entry.file(function(file) {
+ var fileReader = new plus.io.FileReader()
+ fileReader.onload = function(data) {
+ resolve(data.target.result)
+ }
+ fileReader.onerror = function(error) {
+ reject(error)
+ }
+ fileReader.readAsDataURL(file)
+ }, function(error) {
+ reject(error)
+ })
+ }, function(error) {
+ reject(error)
+ })
+ return
+ }
+ if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
+ wx.getFileSystemManager().readFile({
+ filePath: path,
+ encoding: 'base64',
+ success: function(res) {
+ resolve('data:image/png;base64,' + res.data)
+ },
+ fail: function(error) {
+ reject(error)
+ }
+ })
+ return
+ }
+ reject(new Error('not support'))
+ })
+}
+
+export function base64ToPath(base64) {
+ return new Promise(function(resolve, reject) {
+ if (typeof window === 'object' && 'document' in window) {
+ base64 = base64.split(',')
+ var type = base64[0].match(/:(.*?);/)[1]
+ var str = atob(base64[1])
+ var n = str.length
+ var array = new Uint8Array(n)
+ while (n--) {
+ array[n] = str.charCodeAt(n)
+ }
+ return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], {
+ type: type
+ })))
+ }
+ var extName = base64.split(',')[0].match(/data\:\S+\/(\S+);/)
+ if (extName) {
+ extName = extName[1]
+ } else {
+ reject(new Error('base64 error'))
+ }
+ var fileName = getNewFileId() + '.' + extName
+ if (typeof plus === 'object') {
+ var basePath = '_doc'
+ var dirPath = 'uniapp_temp'
+ var filePath = basePath + '/' + dirPath + '/' + fileName
+ if (!biggerThan(plus.os.name === 'Android' ? '1.9.9.80627' : '1.9.9.80472', plus.runtime
+ .innerVersion)) {
+ plus.io.resolveLocalFileSystemURL(basePath, function(entry) {
+ entry.getDirectory(dirPath, {
+ create: true,
+ exclusive: false,
+ }, function(entry) {
+ entry.getFile(fileName, {
+ create: true,
+ exclusive: false,
+ }, function(entry) {
+ entry.createWriter(function(writer) {
+ writer.onwrite = function() {
+ resolve(filePath)
+ }
+ writer.onerror = reject
+ writer.seek(0)
+ writer.writeAsBinary(dataUrlToBase64(base64))
+ }, reject)
+ }, reject)
+ }, reject)
+ }, reject)
+ return
+ }
+ var bitmap = new plus.nativeObj.Bitmap(fileName)
+ bitmap.loadBase64Data(base64, function() {
+ bitmap.save(filePath, {}, function() {
+ bitmap.clear()
+ resolve(filePath)
+ }, function(error) {
+ bitmap.clear()
+ reject(error)
+ })
+ }, function(error) {
+ bitmap.clear()
+ reject(error)
+ })
+ return
+ }
+ if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
+ var filePath = wx.env.USER_DATA_PATH + '/' + fileName
+ wx.getFileSystemManager().writeFile({
+ filePath: filePath,
+ data: dataUrlToBase64(base64),
+ encoding: 'base64',
+ success: function() {
+ resolve(filePath)
+ },
+ fail: function(error) {
+ reject(error)
+ }
+ })
+ return
+ }
+ reject(new Error('not support'))
+ })
+}
diff --git a/jsFile/map/qqmap-wx-jssdk.min.js b/jsFile/map/qqmap-wx-jssdk.min.js
new file mode 100644
index 0000000..4922185
--- /dev/null
+++ b/jsFile/map/qqmap-wx-jssdk.min.js
@@ -0,0 +1,891 @@
+var ERROR_CONF = {
+ KEY_ERR: 311,
+ KEY_ERR_MSG: 'key格式错误',
+ PARAM_ERR: 310,
+ PARAM_ERR_MSG: '请求参数信息有误',
+ SYSTEM_ERR: 600,
+ SYSTEM_ERR_MSG: '系统错误',
+ WX_ERR_CODE: 1000,
+ WX_OK_CODE: 200
+};
+var BASE_URL = 'https://apis.map.qq.com/ws/';
+var URL_SEARCH = BASE_URL + 'place/v1/search';
+var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion';
+var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/';
+var URL_CITY_LIST = BASE_URL + 'district/v1/list';
+var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren';
+var URL_DISTANCE = BASE_URL + 'distance/v1/';
+var URL_DIRECTION = BASE_URL + 'direction/v1/';
+var MODE = {
+ driving: 'driving',
+ transit: 'transit'
+};
+var EARTH_RADIUS = 6378136.49;
+var Utils = {
+ safeAdd(x, y) {
+ var lsw = (x & 0xffff) + (y & 0xffff);
+ var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ return (msw << 16) | (lsw & 0xffff)
+ },
+ bitRotateLeft(num, cnt) {
+ return (num << cnt) | (num >>> (32 - cnt))
+ },
+ md5cmn(q, a, b, x, s, t) {
+ return this.safeAdd(this.bitRotateLeft(this.safeAdd(this.safeAdd(a, q), this.safeAdd(x, t)), s), b)
+ },
+ md5ff(a, b, c, d, x, s, t) {
+ return this.md5cmn((b & c) | (~b & d), a, b, x, s, t)
+ },
+ md5gg(a, b, c, d, x, s, t) {
+ return this.md5cmn((b & d) | (c & ~d), a, b, x, s, t)
+ },
+ md5hh(a, b, c, d, x, s, t) {
+ return this.md5cmn(b ^ c ^ d, a, b, x, s, t)
+ },
+ md5ii(a, b, c, d, x, s, t) {
+ return this.md5cmn(c ^ (b | ~d), a, b, x, s, t)
+ },
+ binlMD5(x, len) {
+ x[len >> 5] |= 0x80 << (len % 32);
+ x[((len + 64) >>> 9 << 4) + 14] = len;
+ var i;
+ var olda;
+ var oldb;
+ var oldc;
+ var oldd;
+ var a = 1732584193;
+ var b = -271733879;
+ var c = -1732584194;
+ var d = 271733878;
+ for (i = 0; i < x.length; i += 16) {
+ olda = a;
+ oldb = b;
+ oldc = c;
+ oldd = d;
+ a = this.md5ff(a, b, c, d, x[i], 7, -680876936);
+ d = this.md5ff(d, a, b, c, x[i + 1], 12, -389564586);
+ c = this.md5ff(c, d, a, b, x[i + 2], 17, 606105819);
+ b = this.md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
+ a = this.md5ff(a, b, c, d, x[i + 4], 7, -176418897);
+ d = this.md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
+ c = this.md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
+ b = this.md5ff(b, c, d, a, x[i + 7], 22, -45705983);
+ a = this.md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
+ d = this.md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
+ c = this.md5ff(c, d, a, b, x[i + 10], 17, -42063);
+ b = this.md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
+ a = this.md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
+ d = this.md5ff(d, a, b, c, x[i + 13], 12, -40341101);
+ c = this.md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
+ b = this.md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
+ a = this.md5gg(a, b, c, d, x[i + 1], 5, -165796510);
+ d = this.md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
+ c = this.md5gg(c, d, a, b, x[i + 11], 14, 643717713);
+ b = this.md5gg(b, c, d, a, x[i], 20, -373897302);
+ a = this.md5gg(a, b, c, d, x[i + 5], 5, -701558691);
+ d = this.md5gg(d, a, b, c, x[i + 10], 9, 38016083);
+ c = this.md5gg(c, d, a, b, x[i + 15], 14, -660478335);
+ b = this.md5gg(b, c, d, a, x[i + 4], 20, -405537848);
+ a = this.md5gg(a, b, c, d, x[i + 9], 5, 568446438);
+ d = this.md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
+ c = this.md5gg(c, d, a, b, x[i + 3], 14, -187363961);
+ b = this.md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
+ a = this.md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
+ d = this.md5gg(d, a, b, c, x[i + 2], 9, -51403784);
+ c = this.md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
+ b = this.md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
+ a = this.md5hh(a, b, c, d, x[i + 5], 4, -378558);
+ d = this.md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
+ c = this.md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
+ b = this.md5hh(b, c, d, a, x[i + 14], 23, -35309556);
+ a = this.md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
+ d = this.md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
+ c = this.md5hh(c, d, a, b, x[i + 7], 16, -155497632);
+ b = this.md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
+ a = this.md5hh(a, b, c, d, x[i + 13], 4, 681279174);
+ d = this.md5hh(d, a, b, c, x[i], 11, -358537222);
+ c = this.md5hh(c, d, a, b, x[i + 3], 16, -722521979);
+ b = this.md5hh(b, c, d, a, x[i + 6], 23, 76029189);
+ a = this.md5hh(a, b, c, d, x[i + 9], 4, -640364487);
+ d = this.md5hh(d, a, b, c, x[i + 12], 11, -421815835);
+ c = this.md5hh(c, d, a, b, x[i + 15], 16, 530742520);
+ b = this.md5hh(b, c, d, a, x[i + 2], 23, -995338651);
+ a = this.md5ii(a, b, c, d, x[i], 6, -198630844);
+ d = this.md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
+ c = this.md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
+ b = this.md5ii(b, c, d, a, x[i + 5], 21, -57434055);
+ a = this.md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
+ d = this.md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
+ c = this.md5ii(c, d, a, b, x[i + 10], 15, -1051523);
+ b = this.md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
+ a = this.md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
+ d = this.md5ii(d, a, b, c, x[i + 15], 10, -30611744);
+ c = this.md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
+ b = this.md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
+ a = this.md5ii(a, b, c, d, x[i + 4], 6, -145523070);
+ d = this.md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
+ c = this.md5ii(c, d, a, b, x[i + 2], 15, 718787259);
+ b = this.md5ii(b, c, d, a, x[i + 9], 21, -343485551);
+ a = this.safeAdd(a, olda);
+ b = this.safeAdd(b, oldb);
+ c = this.safeAdd(c, oldc);
+ d = this.safeAdd(d, oldd)
+ }
+ return [a, b, c, d]
+ },
+ binl2rstr(input) {
+ var i;
+ var output = '';
+ var length32 = input.length * 32;
+ for (i = 0; i < length32; i += 8) {
+ output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff)
+ }
+ return output
+ },
+ rstr2binl(input) {
+ var i;
+ var output = [];
+ output[(input.length >> 2) - 1] = undefined;
+ for (i = 0; i < output.length; i += 1) {
+ output[i] = 0
+ }
+ var length8 = input.length * 8;
+ for (i = 0; i < length8; i += 8) {
+ output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32)
+ }
+ return output
+ },
+ rstrMD5(s) {
+ return this.binl2rstr(this.binlMD5(this.rstr2binl(s), s.length * 8))
+ },
+ rstrHMACMD5(key, data) {
+ var i;
+ var bkey = this.rstr2binl(key);
+ var ipad = [];
+ var opad = [];
+ var hash;
+ ipad[15] = opad[15] = undefined;
+ if (bkey.length > 16) {
+ bkey = this.binlMD5(bkey, key.length * 8)
+ }
+ for (i = 0; i < 16; i += 1) {
+ ipad[i] = bkey[i] ^ 0x36363636;
+ opad[i] = bkey[i] ^ 0x5c5c5c5c
+ }
+ hash = this.binlMD5(ipad.concat(this.rstr2binl(data)), 512 + data.length * 8);
+ return this.binl2rstr(this.binlMD5(opad.concat(hash), 512 + 128))
+ },
+ rstr2hex(input) {
+ var hexTab = '0123456789abcdef';
+ var output = '';
+ var x;
+ var i;
+ for (i = 0; i < input.length; i += 1) {
+ x = input.charCodeAt(i);
+ output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f)
+ }
+ return output
+ },
+ str2rstrUTF8(input) {
+ return unescape(encodeURIComponent(input))
+ },
+ rawMD5(s) {
+ return this.rstrMD5(this.str2rstrUTF8(s))
+ },
+ hexMD5(s) {
+ return this.rstr2hex(this.rawMD5(s))
+ },
+ rawHMACMD5(k, d) {
+ return this.rstrHMACMD5(this.str2rstrUTF8(k), str2rstrUTF8(d))
+ },
+ hexHMACMD5(k, d) {
+ return this.rstr2hex(this.rawHMACMD5(k, d))
+ },
+ md5(string, key, raw) {
+ if (!key) {
+ if (!raw) {
+ return this.hexMD5(string)
+ }
+ return this.rawMD5(string)
+ }
+ if (!raw) {
+ return this.hexHMACMD5(key, string)
+ }
+ return this.rawHMACMD5(key, string)
+ },
+ getSig(requestParam, sk, feature, mode) {
+ var sig = null;
+ var requestArr = [];
+ Object.keys(requestParam).sort().forEach(function(key) {
+ requestArr.push(key + '=' + requestParam[key])
+ });
+ if (feature == 'search') {
+ sig = '/ws/place/v1/search?' + requestArr.join('&') + sk
+ }
+ if (feature == 'suggest') {
+ sig = '/ws/place/v1/suggestion?' + requestArr.join('&') + sk
+ }
+ if (feature == 'reverseGeocoder') {
+ sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk
+ }
+ if (feature == 'geocoder') {
+ sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk
+ }
+ if (feature == 'getCityList') {
+ sig = '/ws/district/v1/list?' + requestArr.join('&') + sk
+ }
+ if (feature == 'getDistrictByCityId') {
+ sig = '/ws/district/v1/getchildren?' + requestArr.join('&') + sk
+ }
+ if (feature == 'calculateDistance') {
+ sig = '/ws/distance/v1/?' + requestArr.join('&') + sk
+ }
+ if (feature == 'direction') {
+ sig = '/ws/direction/v1/' + mode + '?' + requestArr.join('&') + sk
+ }
+ sig = this.md5(sig);
+ return sig
+ },
+ location2query(data) {
+ if (typeof data == 'string') {
+ return data
+ }
+ var query = '';
+ for (var i = 0; i < data.length; i++) {
+ var d = data[i];
+ if (!!query) {
+ query += ';'
+ }
+ if (d.location) {
+ query = query + d.location.lat + ',' + d.location.lng
+ }
+ if (d.latitude && d.longitude) {
+ query = query + d.latitude + ',' + d.longitude
+ }
+ }
+ return query
+ },
+ rad(d) {
+ return d * Math.PI / 180.0
+ },
+ getEndLocation(location) {
+ var to = location.split(';');
+ var endLocation = [];
+ for (var i = 0; i < to.length; i++) {
+ endLocation.push({
+ lat: parseFloat(to[i].split(',')[0]),
+ lng: parseFloat(to[i].split(',')[1])
+ })
+ }
+ return endLocation
+ },
+ getDistance(latFrom, lngFrom, latTo, lngTo) {
+ var radLatFrom = this.rad(latFrom);
+ var radLatTo = this.rad(latTo);
+ var a = radLatFrom - radLatTo;
+ var b = this.rad(lngFrom) - this.rad(lngTo);
+ var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(
+ radLatTo) * Math.pow(Math.sin(b / 2), 2)));
+ distance = distance * EARTH_RADIUS;
+ distance = Math.round(distance * 10000) / 10000;
+ return parseFloat(distance.toFixed(0))
+ },
+ getWXLocation(success, fail, complete) {
+ wx.getLocation({
+ type: 'gcj02',
+ success: success,
+ fail: fail,
+ complete: complete
+ })
+ },
+ getLocationParam(location) {
+ if (typeof location == 'string') {
+ var locationArr = location.split(',');
+ if (locationArr.length === 2) {
+ location = {
+ latitude: location.split(',')[0],
+ longitude: location.split(',')[1]
+ }
+ } else {
+ location = {}
+ }
+ }
+ return location
+ },
+ polyfillParam(param) {
+ param.success = param.success || function() {};
+ param.fail = param.fail || function() {};
+ param.complete = param.complete || function() {}
+ },
+ checkParamKeyEmpty(param, key) {
+ if (!param[key]) {
+ var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key + '参数格式有误');
+ param.fail(errconf);
+ param.complete(errconf);
+ return true
+ }
+ return false
+ },
+ checkKeyword(param) {
+ return !this.checkParamKeyEmpty(param, 'keyword')
+ },
+ checkLocation(param) {
+ var location = this.getLocationParam(param.location);
+ if (!location || !location.latitude || !location.longitude) {
+ var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误');
+ param.fail(errconf);
+ param.complete(errconf);
+ return false
+ }
+ return true
+ },
+ buildErrorConfig(errCode, errMsg) {
+ return {
+ status: errCode,
+ message: errMsg
+ }
+ },
+ handleData(param, data, feature) {
+ if (feature == 'search') {
+ var searchResult = data.data;
+ var searchSimplify = [];
+ for (var i = 0; i < searchResult.length; i++) {
+ searchSimplify.push({
+ id: searchResult[i].id || null,
+ title: searchResult[i].title || null,
+ latitude: searchResult[i].location && searchResult[i].location.lat || null,
+ longitude: searchResult[i].location && searchResult[i].location.lng || null,
+ address: searchResult[i].address || null,
+ category: searchResult[i].category || null,
+ tel: searchResult[i].tel || null,
+ adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null,
+ city: searchResult[i].ad_info && searchResult[i].ad_info.city || null,
+ district: searchResult[i].ad_info && searchResult[i].ad_info.district || null,
+ province: searchResult[i].ad_info && searchResult[i].ad_info.province || null
+ })
+ }
+ param.success(data, {
+ searchResult: searchResult,
+ searchSimplify: searchSimplify
+ })
+ } else if (feature == 'suggest') {
+ var suggestResult = data.data;
+ var suggestSimplify = [];
+ for (var i = 0; i < suggestResult.length; i++) {
+ suggestSimplify.push({
+ adcode: suggestResult[i].adcode || null,
+ address: suggestResult[i].address || null,
+ category: suggestResult[i].category || null,
+ city: suggestResult[i].city || null,
+ district: suggestResult[i].district || null,
+ id: suggestResult[i].id || null,
+ latitude: suggestResult[i].location && suggestResult[i].location.lat || null,
+ longitude: suggestResult[i].location && suggestResult[i].location.lng || null,
+ province: suggestResult[i].province || null,
+ title: suggestResult[i].title || null,
+ type: suggestResult[i].type || null
+ })
+ }
+ param.success(data, {
+ suggestResult: suggestResult,
+ suggestSimplify: suggestSimplify
+ })
+ } else if (feature == 'reverseGeocoder') {
+ var reverseGeocoderResult = data.result;
+ var reverseGeocoderSimplify = {
+ address: reverseGeocoderResult.address || null,
+ latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null,
+ longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null,
+ adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null,
+ city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city ||
+ null,
+ district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component
+ .district || null,
+ nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component
+ .nation || null,
+ province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component
+ .province || null,
+ street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component
+ .street || null,
+ street_number: reverseGeocoderResult.address_component && reverseGeocoderResult
+ .address_component.street_number || null,
+ recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult
+ .formatted_addresses.recommend || null,
+ rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses
+ .rough || null
+ };
+ if (reverseGeocoderResult.pois) {
+ var pois = reverseGeocoderResult.pois;
+ var poisSimplify = [];
+ for (var i = 0; i < pois.length; i++) {
+ poisSimplify.push({
+ id: pois[i].id || null,
+ title: pois[i].title || null,
+ latitude: pois[i].location && pois[i].location.lat || null,
+ longitude: pois[i].location && pois[i].location.lng || null,
+ address: pois[i].address || null,
+ category: pois[i].category || null,
+ adcode: pois[i].ad_info && pois[i].ad_info.adcode || null,
+ city: pois[i].ad_info && pois[i].ad_info.city || null,
+ district: pois[i].ad_info && pois[i].ad_info.district || null,
+ province: pois[i].ad_info && pois[i].ad_info.province || null
+ })
+ }
+ param.success(data, {
+ reverseGeocoderResult: reverseGeocoderResult,
+ reverseGeocoderSimplify: reverseGeocoderSimplify,
+ pois: pois,
+ poisSimplify: poisSimplify
+ })
+ } else {
+ param.success(data, {
+ reverseGeocoderResult: reverseGeocoderResult,
+ reverseGeocoderSimplify: reverseGeocoderSimplify
+ })
+ }
+ } else if (feature == 'geocoder') {
+ var geocoderResult = data.result;
+ var geocoderSimplify = {
+ title: geocoderResult.title || null,
+ latitude: geocoderResult.location && geocoderResult.location.lat || null,
+ longitude: geocoderResult.location && geocoderResult.location.lng || null,
+ adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null,
+ province: geocoderResult.address_components && geocoderResult.address_components.province ||
+ null,
+ city: geocoderResult.address_components && geocoderResult.address_components.city || null,
+ district: geocoderResult.address_components && geocoderResult.address_components.district ||
+ null,
+ street: geocoderResult.address_components && geocoderResult.address_components.street || null,
+ street_number: geocoderResult.address_components && geocoderResult.address_components
+ .street_number || null,
+ level: geocoderResult.level || null
+ };
+ param.success(data, {
+ geocoderResult: geocoderResult,
+ geocoderSimplify: geocoderSimplify
+ })
+ } else if (feature == 'getCityList') {
+ var provinceResult = data.result[0];
+ var cityResult = data.result[1];
+ var districtResult = data.result[2];
+ param.success(data, {
+ provinceResult: provinceResult,
+ cityResult: cityResult,
+ districtResult: districtResult
+ })
+ } else if (feature == 'getDistrictByCityId') {
+ var districtByCity = data.result[0];
+ param.success(data, districtByCity)
+ } else if (feature == 'calculateDistance') {
+ var calculateDistanceResult = data.result.elements;
+ var distance = [];
+ for (var i = 0; i < calculateDistanceResult.length; i++) {
+ distance.push(calculateDistanceResult[i].distance)
+ }
+ param.success(data, {
+ calculateDistanceResult: calculateDistanceResult,
+ distance: distance
+ })
+ } else if (feature == 'direction') {
+ var direction = data.result.routes;
+ param.success(data, direction)
+ } else {
+ param.success(data)
+ }
+ },
+ buildWxRequestConfig(param, options, feature) {
+ var that = this;
+ options.header = {
+ "content-type": "application/json"
+ };
+ options.method = 'GET';
+ options.success = function(res) {
+ var data = res.data;
+ if (data.status === 0) {
+ that.handleData(param, data, feature)
+ } else {
+ param.fail(data)
+ }
+ };
+ options.fail = function(res) {
+ res.statusCode = ERROR_CONF.WX_ERR_CODE;
+ param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg))
+ };
+ options.complete = function(res) {
+ var statusCode = +res.statusCode;
+ switch (statusCode) {
+ case ERROR_CONF.WX_ERR_CODE: {
+ param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
+ break
+ }
+ case ERROR_CONF.WX_OK_CODE: {
+ var data = res.data;
+ if (data.status === 0) {
+ param.complete(data)
+ } else {
+ param.complete(that.buildErrorConfig(data.status, data.message))
+ }
+ break
+ }
+ default: {
+ param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG))
+ }
+ }
+ };
+ return options
+ },
+ locationProcess(param, locationsuccess, locationfail, locationcomplete) {
+ var that = this;
+ locationfail = locationfail || function(res) {
+ res.statusCode = ERROR_CONF.WX_ERR_CODE;
+ param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg))
+ };
+ locationcomplete = locationcomplete || function(res) {
+ if (res.statusCode == ERROR_CONF.WX_ERR_CODE) {
+ param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg))
+ }
+ };
+ if (!param.location) {
+ that.getWXLocation(locationsuccess, locationfail, locationcomplete)
+ } else if (that.checkLocation(param)) {
+ var location = Utils.getLocationParam(param.location);
+ locationsuccess(location)
+ }
+ }
+};
+class QQMapWX {
+ constructor(options) {
+ if (!options.key) {
+ throw Error('key值不能为空')
+ }
+ this.key = options.key
+ };
+ search(options) {
+ var that = this;
+ options = options || {};
+ Utils.polyfillParam(options);
+ if (!Utils.checkKeyword(options)) {
+ return
+ }
+ var requestParam = {
+ keyword: options.keyword,
+ orderby: options.orderby || '_distance',
+ page_size: options.page_size || 10,
+ page_index: options.page_index || 1,
+ output: 'json',
+ key: that.key
+ };
+ if (options.address_format) {
+ requestParam.address_format = options.address_format
+ }
+ if (options.filter) {
+ requestParam.filter = options.filter
+ }
+ var distance = options.distance || "1000";
+ var auto_extend = options.auto_extend || 1;
+ var region = null;
+ var rectangle = null;
+ if (options.region) {
+ region = options.region
+ }
+ if (options.rectangle) {
+ rectangle = options.rectangle
+ }
+ var locationsuccess = function(result) {
+ if (region && !rectangle) {
+ requestParam.boundary = "region(" + region + "," + auto_extend + "," + result.latitude + "," +
+ result.longitude + ")";
+ if (options.sig) {
+ requestParam.sig = Utils.getSig(requestParam, options.sig, 'search')
+ }
+ } else if (rectangle && !region) {
+ requestParam.boundary = "rectangle(" + rectangle + ")";
+ if (options.sig) {
+ requestParam.sig = Utils.getSig(requestParam, options.sig, 'search')
+ }
+ } else {
+ requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance +
+ "," + auto_extend + ")";
+ if (options.sig) {
+ requestParam.sig = Utils.getSig(requestParam, options.sig, 'search')
+ }
+ }
+ wx.request(Utils.buildWxRequestConfig(options, {
+ url: URL_SEARCH,
+ data: requestParam
+ }, 'search'))
+ };
+ Utils.locationProcess(options, locationsuccess)
+ };
+ getSuggestion(options) {
+ var that = this;
+ options = options || {};
+ Utils.polyfillParam(options);
+ if (!Utils.checkKeyword(options)) {
+ return
+ }
+ var requestParam = {
+ keyword: options.keyword,
+ region: options.region || '全国',
+ region_fix: options.region_fix || 0,
+ policy: options.policy || 0,
+ page_size: options.page_size || 10,
+ page_index: options.page_index || 1,
+ get_subpois: options.get_subpois || 0,
+ output: 'json',
+ key: that.key
+ };
+ if (options.address_format) {
+ requestParam.address_format = options.address_format
+ }
+ if (options.filter) {
+ requestParam.filter = options.filter
+ }
+ if (options.location) {
+ var locationsuccess = function(result) {
+ requestParam.location = result.latitude + ',' + result.longitude;
+ if (options.sig) {
+ requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest')
+ }
+ wx.request(Utils.buildWxRequestConfig(options, {
+ url: URL_SUGGESTION,
+ data: requestParam
+ }, "suggest"))
+ };
+ Utils.locationProcess(options, locationsuccess)
+ } else {
+ if (options.sig) {
+ requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest')
+ }
+ wx.request(Utils.buildWxRequestConfig(options, {
+ url: URL_SUGGESTION,
+ data: requestParam
+ }, "suggest"))
+ }
+ };
+ reverseGeocoder(options) {
+ var that = this;
+ options = options || {};
+ Utils.polyfillParam(options);
+ var requestParam = {
+ coord_type: options.coord_type || 5,
+ get_poi: options.get_poi || 0,
+ output: 'json',
+ key: that.key
+ };
+ if (options.poi_options) {
+ requestParam.poi_options = options.poi_options
+ }
+ var locationsuccess = function(result) {
+ requestParam.location = result.latitude + ',' + result.longitude;
+ if (options.sig) {
+ requestParam.sig = Utils.getSig(requestParam, options.sig, 'reverseGeocoder')
+ }
+ wx.request(Utils.buildWxRequestConfig(options, {
+ url: URL_GET_GEOCODER,
+ data: requestParam
+ }, 'reverseGeocoder'))
+ };
+ Utils.locationProcess(options, locationsuccess)
+ };
+ geocoder(options) {
+ var that = this;
+ options = options || {};
+ Utils.polyfillParam(options);
+ if (Utils.checkParamKeyEmpty(options, 'address')) {
+ return
+ }
+ var requestParam = {
+ address: options.address,
+ output: 'json',
+ key: that.key
+ };
+ if (options.region) {
+ requestParam.region = options.region
+ }
+ if (options.sig) {
+ requestParam.sig = Utils.getSig(requestParam, options.sig, 'geocoder')
+ }
+ wx.request(Utils.buildWxRequestConfig(options, {
+ url: URL_GET_GEOCODER,
+ data: requestParam
+ }, 'geocoder'))
+ };
+ getCityList(options) {
+ var that = this;
+ options = options || {};
+ Utils.polyfillParam(options);
+ var requestParam = {
+ output: 'json',
+ key: that.key
+ };
+ if (options.sig) {
+ requestParam.sig = Utils.getSig(requestParam, options.sig, 'getCityList')
+ }
+ wx.request(Utils.buildWxRequestConfig(options, {
+ url: URL_CITY_LIST,
+ data: requestParam
+ }, 'getCityList'))
+ };
+ getDistrictByCityId(options) {
+ var that = this;
+ options = options || {};
+ Utils.polyfillParam(options);
+ if (Utils.checkParamKeyEmpty(options, 'id')) {
+ return
+ }
+ var requestParam = {
+ id: options.id || '',
+ output: 'json',
+ key: that.key
+ };
+ if (options.sig) {
+ requestParam.sig = Utils.getSig(requestParam, options.sig, 'getDistrictByCityId')
+ }
+ wx.request(Utils.buildWxRequestConfig(options, {
+ url: URL_AREA_LIST,
+ data: requestParam
+ }, 'getDistrictByCityId'))
+ };
+ calculateDistance(options) {
+ var that = this;
+ options = options || {};
+ Utils.polyfillParam(options);
+ if (Utils.checkParamKeyEmpty(options, 'to')) {
+ return
+ }
+ var requestParam = {
+ mode: options.mode || 'walking',
+ to: Utils.location2query(options.to),
+ output: 'json',
+ key: that.key
+ };
+ if (options.from) {
+ options.location = options.from
+ }
+ if (requestParam.mode == 'straight') {
+ var locationsuccess = function(result) {
+ var locationTo = Utils.getEndLocation(requestParam.to);
+ var data = {
+ message: "query ok",
+ result: {
+ elements: []
+ },
+ status: 0
+ };
+ for (var i = 0; i < locationTo.length; i++) {
+ data.result.elements.push({
+ distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i]
+ .lat, locationTo[i].lng),
+ duration: 0,
+ from: {
+ lat: result.latitude,
+ lng: result.longitude
+ },
+ to: {
+ lat: locationTo[i].lat,
+ lng: locationTo[i].lng
+ }
+ })
+ }
+ var calculateResult = data.result.elements;
+ var distanceResult = [];
+ for (var i = 0; i < calculateResult.length; i++) {
+ distanceResult.push(calculateResult[i].distance)
+ }
+ return options.success(data, {
+ calculateResult: calculateResult,
+ distanceResult: distanceResult
+ })
+ };
+ Utils.locationProcess(options, locationsuccess)
+ } else {
+ var locationsuccess = function(result) {
+ requestParam.from = result.latitude + ',' + result.longitude;
+ if (options.sig) {
+ requestParam.sig = Utils.getSig(requestParam, options.sig, 'calculateDistance')
+ }
+ wx.request(Utils.buildWxRequestConfig(options, {
+ url: URL_DISTANCE,
+ data: requestParam
+ }, 'calculateDistance'))
+ };
+ Utils.locationProcess(options, locationsuccess)
+ }
+ };
+ direction(options) {
+ var that = this;
+ options = options || {};
+ Utils.polyfillParam(options);
+ if (Utils.checkParamKeyEmpty(options, 'to')) {
+ return
+ }
+ var requestParam = {
+ output: 'json',
+ key: that.key
+ };
+ if (typeof options.to == 'string') {
+ requestParam.to = options.to
+ } else {
+ requestParam.to = options.to.latitude + ',' + options.to.longitude
+ }
+ var SET_URL_DIRECTION = null;
+ options.mode = options.mode || MODE.driving;
+ SET_URL_DIRECTION = URL_DIRECTION + options.mode;
+ if (options.from) {
+ options.location = options.from
+ }
+ if (options.mode == MODE.driving) {
+ if (options.from_poi) {
+ requestParam.from_poi = options.from_poi
+ }
+ if (options.heading) {
+ requestParam.heading = options.heading
+ }
+ if (options.speed) {
+ requestParam.speed = options.speed
+ }
+ if (options.accuracy) {
+ requestParam.accuracy = options.accuracy
+ }
+ if (options.road_type) {
+ requestParam.road_type = options.road_type
+ }
+ if (options.to_poi) {
+ requestParam.to_poi = options.to_poi
+ }
+ if (options.from_track) {
+ requestParam.from_track = options.from_track
+ }
+ if (options.waypoints) {
+ requestParam.waypoints = options.waypoints
+ }
+ if (options.policy) {
+ requestParam.policy = options.policy
+ }
+ if (options.plate_number) {
+ requestParam.plate_number = options.plate_number
+ }
+ }
+ if (options.mode == MODE.transit) {
+ if (options.departure_time) {
+ requestParam.departure_time = options.departure_time
+ }
+ if (options.policy) {
+ requestParam.policy = options.policy
+ }
+ }
+ var locationsuccess = function(result) {
+ requestParam.from = result.latitude + ',' + result.longitude;
+ if (options.sig) {
+ requestParam.sig = Utils.getSig(requestParam, options.sig, 'direction', options.mode)
+ }
+ wx.request(Utils.buildWxRequestConfig(options, {
+ url: SET_URL_DIRECTION,
+ data: requestParam
+ }, 'direction'))
+ };
+ Utils.locationProcess(options, locationsuccess)
+ }
+};
+module.exports = QQMapWX;
diff --git a/jsFile/public-api.js b/jsFile/public-api.js
new file mode 100644
index 0000000..93cd087
--- /dev/null
+++ b/jsFile/public-api.js
@@ -0,0 +1,19 @@
+import requst from './requst.js';
+import store from '@/store/index.js'
+
+// 查询轮播位置
+export function slidePosition(data) {
+ return requst.get("/api/common/slide-positions");
+}
+
+// 查询购物车信息
+export function getCartInfo(){
+ return requst.post('/api/index/indexGetShoppingCartInformation').then(res=>{
+ if(res.code==0){
+ console.log(res,'首页购物车信息')
+ let cartObj = res.data;
+ store.commit('setNum', cartObj.count)
+ store.commit('setPrice', cartObj.price)
+ }
+ })
+}
\ No newline at end of file
diff --git a/jsFile/requst.js b/jsFile/requst.js
new file mode 100644
index 0000000..c34ab33
--- /dev/null
+++ b/jsFile/requst.js
@@ -0,0 +1,152 @@
+// 清理所有缓存并前往登录授权页
+const goLogin = () => {
+ uni.clearStorageSync();
+ uni.navigateTo({
+ url: '/pagesA/login/login'
+ })
+}
+
+// 请求错误处理
+const checkError = (e) => {
+ console.log('500接口错误');
+ // 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验证失败或已失效');
+ // 调用到登录页
+ goLogin();
+ 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) {
+ resolve(res.data);
+ if(res.data.code !== 0){
+ // 接口返回错误信息
+ 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..b5fa3b6
--- /dev/null
+++ b/jsFile/tools.js
@@ -0,0 +1,622 @@
+const tools = {
+ /**
+ * @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
+ },
+
+ /**
+ * @description 获取字符串中的数字
+ */
+ obtainCount(str) {
+ return parseInt(str.replace(/[^0-9]/ig,""))
+ },
+
+ /**
+ * @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://guofu.scdxtc.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.reLaunch({url:'/pagesA/login/login'});
+ },1000)
+ } else {
+ auth = true;
+ }
+ return auth;
+ },
+
+ /**
+ * @description 禁止小程序使用右上角分享
+ */
+ disableShareEv(){
+ // #ifdef MP-WEIXIN
+ wx.hideShareMenu({
+ menus: ['shareAppMessage', 'shareTimeline']
+ })
+ // #endif
+ },
+ /**
+ * @description 获取当前页面完整url
+ */
+ obtainPagePath(){
+ let pages = getCurrentPages();
+ // 获取纯页面路径
+ let route = pages[pages.length - 1].route;
+ // 获取当前页面url,带参数
+ let routeParam = pages[pages.length - 1].$page.fullPath;
+ // console.log(routeParam.options,'获取当前url参数');
+ if(routeParam.indexOf('/pagesA/login')==-1 && routeParam.indexOf('/pagesB/register')==-1 && routeParam.indexOf('/pagesB/password')==-1){
+ uni.setStorageSync('url',route);
+ uni.setStorageSync('page-path-options',routeParam);
+ }
+ },
+ /**
+ * @description 拨打电话
+ * @param {Number} phone
+ */
+ countCustomer(phone){
+ const res = uni.getSystemInfoSync();
+ let phoneList = [];
+ if(phone!==''){
+ phoneList.push(phone);
+ }
+ uni.showActionSheet({
+ itemList:phoneList,
+ itemColor:'#1981ff',
+ success: (res) => {
+ uni.makePhoneCall({
+ phoneNumber:phoneList[res.tapIndex]
+ })
+ }
+ })
+ },
+ /**
+ * @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,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),//要去的经度-地址
+ address: address,
+ fail:err=>{
+ tools.showToast('地址信息错误');
+ }
+ })
+ }
+ })
+ // #endif
+
+ // #ifdef APP-PLUS || H5
+ uni.openLocation({
+ latitude: parseFloat(latitude),
+ longitude: parseFloat(longitude),
+ 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: ()=> {
+ uni.showToast({title:'保存成功',icon:'error'})
+ },
+ fail: () => {
+ uni.showToast({title:'保存失败',icon:'error'})
+ }
+ });
+ }
+ })
+ } else {
+ wx.saveFile({
+ tempFilePath: src,
+ success:(wximg)=> {}
+ })
+ }
+ // #endif
+ },
+
+ /**
+ * @description 把base64转换成图片
+ * @param {String} data
+ */
+
+ getBase64ImageUrl(data) {
+ /// 获取到base64Data
+ var base64Data = data;
+ /// 通过微信小程序自带方法将base64转为二进制去除特殊符号,再转回base64
+ base64Data = wx.arrayBufferToBase64(wx.base64ToArrayBuffer(base64Data));
+ /// 拼接请求头,data格式可以为image/png或者image/jpeg等,看需求
+ const base64ImgUrl = "data:image/png;base64," + base64Data;
+ /// 刷新数据
+ return base64ImgUrl;
+ },
+
+
+ /**
+ * @description 小程序二维码解析
+ */
+ analysis(val) {
+ // #ifdef MP-WEIXIN
+ let str = unescape(val);
+ str = str.split('invite_code=')[1];
+ uni.setStorageSync('invite_code_Other',str);
+ this.loginEv();// 调用登录事件
+ // #endif
+ },
+
+ timeToken:null,
+ // 开启一个半小时刷新token
+ refreshToken(){
+ clearInterval(this.timeToken);
+ // 调用登录事件
+ this.loginEv();
+ this.timeToken = setInterval(()=>{
+ // 调用登录事件
+ this.loginEv();
+ },600000*9)
+ },
+ // 登录事件
+ loginEv(){
+ let invite_code = uni.getStorageSync('invite_code_Other');
+ uni.login({
+ provider: 'weixin',
+ success: (res)=> {
+ var params = {code:res.code,invite_code:invite_code}
+ uni.request({
+ url: `${getApp().globalData.hostapi}/api/user/get-openid`,
+ method: 'post',
+ data: params,
+ success: result => {
+ if(result.data.data.openid!=''){
+ console.log('刷新了token');
+ uni.setStorageSync('token',result.data.data.token); // 缓存token
+ uni.setStorageSync('openid',result.data.data.openid)//缓存openid
+ uni.setStorageSync('expire',result.data.data.expire); // 缓存失效时间(时间戳格式)
+ uni.setStorageSync('phone_active',result.data.data.phone_active); // 是否绑定手机号
+ uni.setStorageSync('is_active',result.data.data.is_active)//是否第一次授权
+ uni.setStorageSync('invite_code',result.data.data.invite_code)//缓存用户邀请码
+ }
+ }
+ })
+ },
+ });
+ },
+
+}
+
+
+
+
+
+
+
+
+
+
+export default {
+ tools
+}
\ No newline at end of file
diff --git a/jsFile/uqrcode.js b/jsFile/uqrcode.js
new file mode 100644
index 0000000..2290ab3
--- /dev/null
+++ b/jsFile/uqrcode.js
@@ -0,0 +1,34 @@
+//---------------------------------------------------------------------
+// uQRCode二维码生成插件 v4.0.6
+//
+// uQRCode是一款基于Javascript环境开发的二维码生成插件,适用所有Javascript运行环境的前端应用和Node.js。
+//
+// Copyright (c) Sansnn uQRCode All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0.
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// github地址:
+// https://github.com/Sansnn/uQRCode
+//
+// npm地址:
+// https://www.npmjs.com/package/uqrcodejs
+//
+// uni-app插件市场地址:
+// https://ext.dcloud.net.cn/plugin?id=1287
+//
+// 复制使用请保留本段注释,感谢支持开源!
+//
+//---------------------------------------------------------------------
+
+//---------------------------------------------------------------------
+// 当前文件格式为 es,将 bundle 保留为 ES 模块文件,适用于其他打包工具以及支持
+
diff --git a/pagesA/login/login.vue b/pagesA/login/login.vue
new file mode 100644
index 0000000..b54c702
--- /dev/null
+++ b/pagesA/login/login.vue
@@ -0,0 +1,360 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{appletName}}
+
+ 邀请您补全个人信息
+ (昵称、头像)
+
+
+
+
+
+ 头像
+
+
+
+ 昵称
+
+
+
+
+ 拒绝
+ 授权
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/static/foot-bar/cart-active.png b/static/foot-bar/cart-active.png
new file mode 100644
index 0000000..0fa0093
Binary files /dev/null and b/static/foot-bar/cart-active.png differ
diff --git a/static/foot-bar/cart.png b/static/foot-bar/cart.png
new file mode 100644
index 0000000..bf8a003
Binary files /dev/null and b/static/foot-bar/cart.png differ
diff --git a/static/foot-bar/cate-active.png b/static/foot-bar/cate-active.png
new file mode 100644
index 0000000..e8b0bf0
Binary files /dev/null and b/static/foot-bar/cate-active.png differ
diff --git a/static/foot-bar/cate.png b/static/foot-bar/cate.png
new file mode 100644
index 0000000..37e0c11
Binary files /dev/null and b/static/foot-bar/cate.png differ
diff --git a/static/foot-bar/index-active.png b/static/foot-bar/index-active.png
new file mode 100644
index 0000000..7fdc297
Binary files /dev/null and b/static/foot-bar/index-active.png differ
diff --git a/static/foot-bar/index.png b/static/foot-bar/index.png
new file mode 100644
index 0000000..313bf6f
Binary files /dev/null and b/static/foot-bar/index.png differ
diff --git a/static/foot-bar/my-active.png b/static/foot-bar/my-active.png
new file mode 100644
index 0000000..7db5715
Binary files /dev/null and b/static/foot-bar/my-active.png differ
diff --git a/static/foot-bar/my.png b/static/foot-bar/my.png
new file mode 100644
index 0000000..9b7c4f7
Binary files /dev/null and b/static/foot-bar/my.png differ
diff --git a/static/public/blue-bg.jpg b/static/public/blue-bg.jpg
new file mode 100644
index 0000000..02089a7
Binary files /dev/null and b/static/public/blue-bg.jpg differ
diff --git a/static/public/img_nodata.png b/static/public/img_nodata.png
new file mode 100644
index 0000000..489b5e4
Binary files /dev/null and b/static/public/img_nodata.png differ
diff --git a/static/public/ling-icon.png b/static/public/ling-icon.png
new file mode 100644
index 0000000..68086cb
Binary files /dev/null and b/static/public/ling-icon.png differ
diff --git a/static/public/logo-avatar.png b/static/public/logo-avatar.png
new file mode 100644
index 0000000..ce5e893
Binary files /dev/null and b/static/public/logo-avatar.png differ
diff --git a/static/public/logo.png b/static/public/logo.png
new file mode 100644
index 0000000..9bab0e6
Binary files /dev/null and b/static/public/logo.png differ
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..0e42e60
--- /dev/null
+++ b/store/modules/moduleA.js
@@ -0,0 +1,112 @@
+// 购物车模块
+export default {
+ state:{//存放状态
+ // 底部导航的高
+ footHeight:'',
+ token:'token已生成',
+ userInfo:{},
+ count:0,
+ publicColor:'',
+ todos: [{
+ id: 1,
+ text: '我是内容一',
+ done: true
+ },
+ {
+ id: 2,
+ text: '我是内容二',
+ done: false
+ }
+ ],
+ obj:{
+ a:'吃鸡腿',
+ b:'吃自助餐'
+ },
+ titleList:[],
+ imgList:[],
+ onLineList:[],
+ cartNum:0,
+ cartPrice:0,
+ geList:[],
+ changeBusiness:false,
+ },
+ // Vuex中store数据改变的唯一方法就是mutations 不适合异步方法
+ mutations: {
+ setNum(state,num){
+ state.cartNum = num;
+ },
+ setPrice(state,price){
+ state.cartPrice = price;
+ },
+ setGe(state,payload){
+ state.geList = payload.geList;
+ },
+ 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 };
+ },
+ updateState(state, payload) {
+ state.onLineList = payload.list;
+ }
+ },
+ // 可以执行任意的同步和异步操作
+ 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/unpackage/dist/build/.automator/mp-weixin/.automator.json b/unpackage/dist/build/.automator/mp-weixin/.automator.json
new file mode 100644
index 0000000..e69de29
diff --git a/unpackage/dist/build/mp-weixin/app.js b/unpackage/dist/build/mp-weixin/app.js
new file mode 100644
index 0000000..2bb776e
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/app.js
@@ -0,0 +1,4 @@
+
+require('./common/runtime.js')
+require('./common/vendor.js')
+require('./common/main.js')
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/app.json b/unpackage/dist/build/mp-weixin/app.json
new file mode 100644
index 0000000..022d41c
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/app.json
@@ -0,0 +1,34 @@
+{
+ "pages": [
+ "pages/index/index",
+ "pages/my/my"
+ ],
+ "subPackages": [
+ {
+ "root": "pagesA",
+ "pages": [
+ "login/login"
+ ]
+ }
+ ],
+ "window": {
+ "navigationBarTextStyle": "black",
+ "navigationBarBackgroundColor": "#FFFFFF",
+ "navigationStyle": "custom",
+ "backgroundColor": "#FFFFFF",
+ "backgroundTextStyle": "light"
+ },
+ "permission": {
+ "scope.userLocation": {
+ "desc": "将用于查询当前位置是否有货以及配送情况!"
+ }
+ },
+ "requiredPrivateInfos": [
+ "getLocation"
+ ],
+ "usingComponents": {
+ "nothing-page": "/components/nothing/nothing-page",
+ "status-nav": "/components/status-nav/status-nav",
+ "foot-bar": "/components/foot-bar/foot-bar"
+ }
+}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/app.wxss b/unpackage/dist/build/mp-weixin/app.wxss
new file mode 100644
index 0000000..705b297
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/app.wxss
@@ -0,0 +1,3 @@
+@import './common/main.wxss';
+
+[data-custom-hidden="true"],[bind-data-custom-hidden="true"]{display: none !important;}
\ No newline at end of file
diff --git a/unpackage/dist/build/mp-weixin/common/main.js b/unpackage/dist/build/mp-weixin/common/main.js
new file mode 100644
index 0000000..9228d11
--- /dev/null
+++ b/unpackage/dist/build/mp-weixin/common/main.js
@@ -0,0 +1 @@
+(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["common/main"],{"10fe":function(t,e,n){"use strict";var o=n("551e"),c=n.n(o);c.a},"551e":function(t,e,n){},"792b":function(t,e,n){"use strict";n.r(e);var o=n("847d"),c=n.n(o);for(var r in o)["default"].indexOf(r)<0&&function(t){n.d(e,t,(function(){return o[t]}))}(r);e["default"]=c.a},"847d":function(t,e,n){"use strict";(function(t){var o=n("4ea4");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;o(n("8d0a"));var c={globalData:{projectname:"",lat:"",lng:"",hostapi:"https://votenew.scdxtc.cn"},onLaunch:function(){console.log=function(){},this.globalData.hostapi="https://www.guofuyunhuigou.com";t.getAccountInfoSync()},onShow:function(){},onHide:function(){}};e.default=c}).call(this,n("bc2e")["default"])},bced:function(t,e,n){"use strict";n.r(e);var o=n("792b");for(var c in o)["default"].indexOf(c)<0&&function(t){n.d(e,t,(function(){return o[t]}))}(c);n("10fe");var r=n("f0c5"),u=Object(r["a"])(o["default"],void 0,void 0,!1,null,null,null,!1,void 0,void 0);e["default"]=u.exports},be41:function(t,e,n){"use strict";(function(t,e,o){var c=n("4ea4"),r=c(n("9523"));n("cd27");var u=c(n("66fd")),a=c(n("bced")),f=c(n("6440")),l=c(n("8d0a")),i=c(n("2ddd"));function d(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}t.__webpack_require_UNI_MP_PLUGIN__=n,u.default.prototype.$store=f.default;u.default.component("nothing-page",(function(){n.e("components/nothing/nothing-page").then(function(){return resolve(n("d63d"))}.bind(null,n)).catch(n.oe)}));u.default.component("status-nav",(function(){n.e("components/status-nav/status-nav").then(function(){return resolve(n("ea47"))}.bind(null,n)).catch(n.oe)}));u.default.component("foot-bar",(function(){n.e("components/foot-bar/foot-bar").then(function(){return resolve(n("bb0a"))}.bind(null,n)).catch(n.oe)})),u.default.prototype.$toolAll=l.default,u.default.prototype.$requst=i.default,"devtools"!==e.getSystemInfoSync().platform&&(console.log=function(){}),a.default.mpType="app";var s=new u.default(function(t){for(var e=1;e-1&&e.splice(n,1)}}function h(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;g(t,n,[],t._modules.root,!0),v(t,n,e)}function v(t,e,n){var r=t._vm;t.getters={},t._makeLocalGettersCache=Object.create(null);var o=t._wrappedGetters,a={};i(o,(function(e,n){a[n]=function(t,e){return function(){return t(e)}}(e,t),Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})}));var s=l.config.silent;l.config.silent=!0,t._vm=new l({data:{$$state:e},computed:a}),l.config.silent=s,t.strict&&function(t){t._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}(t),r&&(n&&t._withCommit((function(){r._data.$$state=null})),l.nextTick((function(){return r.$destroy()})))}function g(t,e,n,r,o){var i=!n.length,a=t._modules.getNamespace(n);if(r.namespaced&&(t._modulesNamespaceMap[a],t._modulesNamespaceMap[a]=r),!i&&!o){var s=y(e,n.slice(0,-1)),c=n[n.length-1];t._withCommit((function(){l.set(s,c,r.state)}))}var u=r.context=function(t,e,n){var r=""===e,o={dispatch:r?t.dispatch:function(n,r,o){var i=m(n,r,o),a=i.payload,s=i.options,c=i.type;return s&&s.root||(c=e+c),t.dispatch(c,a)},commit:r?t.commit:function(n,r,o){var i=m(n,r,o),a=i.payload,s=i.options,c=i.type;s&&s.root||(c=e+c),t.commit(c,a,s)}};return Object.defineProperties(o,{getters:{get:r?function(){return t.getters}:function(){return function(t,e){if(!t._makeLocalGettersCache[e]){var n={},r=e.length;Object.keys(t.getters).forEach((function(o){if(o.slice(0,r)===e){var i=o.slice(r);Object.defineProperty(n,i,{get:function(){return t.getters[o]},enumerable:!0})}})),t._makeLocalGettersCache[e]=n}return t._makeLocalGettersCache[e]}(t,e)}},state:{get:function(){return y(t.state,n)}}}),o}(t,a,n);r.forEachMutation((function(e,n){var r=a+n;(function(t,e,n,r){var o=t._mutations[e]||(t._mutations[e]=[]);o.push((function(e){n.call(t,r.state,e)}))})(t,r,e,u)})),r.forEachAction((function(e,n){var r=e.root?n:a+n,o=e.handler||e;(function(t,e,n,r){var o=t._actions[e]||(t._actions[e]=[]);o.push((function(e){var o=n.call(t,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e);return function(t){return t&&"function"===typeof t.then}(o)||(o=Promise.resolve(o)),t._devtoolHook?o.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):o}))})(t,r,o,u)})),r.forEachGetter((function(e,n){var r=a+n;(function(t,e,n,r){if(t._wrappedGetters[e])return void 0;t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)}})(t,r,e,u)})),r.forEachChild((function(r,i){g(t,e,n.concat(i),r,o)}))}function y(t,e){return e.reduce((function(t,e){return t[e]}),t)}function m(t,e,n){return a(t)&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}function _(t){l&&t===l||(l=t,
+/*!
+ * vuex v3.6.2
+ * (c) 2021 Evan You
+ * @license MIT
+ */
+function(t){var e=Number(t.version.split(".")[0]);if(e>=2)t.mixin({beforeCreate:r});else{var n=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[r].concat(t.init):r,n.call(this,t)}}function r(){var t=this.$options;t.store?this.$store="function"===typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}}(l))}p.state.get=function(){return this._vm._data.$$state},p.state.set=function(t){0},f.prototype.commit=function(t,e,n){var r=this,o=m(t,e,n),i=o.type,a=o.payload,s=(o.options,{type:i,payload:a}),c=this._mutations[i];c&&(this._withCommit((function(){c.forEach((function(t){t(a)}))})),this._subscribers.slice().forEach((function(t){return t(s,r.state)})))},f.prototype.dispatch=function(t,e){var n=this,r=m(t,e),o=r.type,i=r.payload,a={type:o,payload:i},s=this._actions[o];if(s){try{this._actionSubscribers.slice().filter((function(t){return t.before})).forEach((function(t){return t.before(a,n.state)}))}catch(u){0}var c=s.length>1?Promise.all(s.map((function(t){return t(i)}))):s[0](i);return new Promise((function(t,e){c.then((function(e){try{n._actionSubscribers.filter((function(t){return t.after})).forEach((function(t){return t.after(a,n.state)}))}catch(u){0}t(e)}),(function(t){try{n._actionSubscribers.filter((function(t){return t.error})).forEach((function(e){return e.error(a,n.state,t)}))}catch(u){0}e(t)}))}))}},f.prototype.subscribe=function(t,e){return d(t,this._subscribers,e)},f.prototype.subscribeAction=function(t,e){var n="function"===typeof t?{before:t}:t;return d(n,this._actionSubscribers,e)},f.prototype.watch=function(t,e,n){var r=this;return this._watcherVM.$watch((function(){return t(r.state,r.getters)}),e,n)},f.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._vm._data.$$state=t}))},f.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"===typeof t&&(t=[t]),this._modules.register(t,e),g(this,this.state,t,this._modules.get(t),n.preserveState),v(this,this.state)},f.prototype.unregisterModule=function(t){var e=this;"string"===typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit((function(){var n=y(e.state,t.slice(0,-1));l.delete(n,t[t.length-1])})),h(this)},f.prototype.hasModule=function(t){return"string"===typeof t&&(t=[t]),this._modules.isRegistered(t)},f.prototype[[104,111,116,85,112,100,97,116,101].map((function(t){return String.fromCharCode(t)})).join("")]=function(t){this._modules.update(t),h(this,!0)},f.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(f.prototype,p);var b=$((function(t,e){var n={};return x(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var r=k(this.$store,"mapState",t);if(!r)return;e=r.context.state,n=r.context.getters}return"function"===typeof o?o.call(this,e,n):e[o]},n[r].vuex=!0})),n})),w=$((function(t,e){var n={};return x(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=[],n=arguments.length;while(n--)e[n]=arguments[n];var r=this.$store.commit;if(t){var i=k(this.$store,"mapMutations",t);if(!i)return;r=i.context.commit}return"function"===typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n})),O=$((function(t,e){var n={};return x(e).forEach((function(e){var r=e.key,o=e.val;o=t+o,n[r]=function(){if(!t||k(this.$store,"mapGetters",t))return this.$store.getters[o]},n[r].vuex=!0})),n})),A=$((function(t,e){var n={};return x(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=[],n=arguments.length;while(n--)e[n]=arguments[n];var r=this.$store.dispatch;if(t){var i=k(this.$store,"mapActions",t);if(!i)return;r=i.context.dispatch}return"function"===typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n}));function x(t){return function(t){return Array.isArray(t)||a(t)}(t)?Array.isArray(t)?t.map((function(t){return{key:t,val:t}})):Object.keys(t).map((function(e){return{key:e,val:t[e]}})):[]}function $(t){return function(e,n){return"string"!==typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function k(t,e,n){var r=t._modulesNamespaceMap[n];return r}function S(t,e,n){var r=n?t.groupCollapsed:t.group;try{r.call(t,e)}catch(o){t.log(e)}}function j(t){try{t.groupEnd()}catch(e){t.log("—— log end ——")}}function E(){var t=new Date;return" @ "+C(t.getHours(),2)+":"+C(t.getMinutes(),2)+":"+C(t.getSeconds(),2)+"."+C(t.getMilliseconds(),3)}function C(t,e){return function(t,e){return new Array(e+1).join(t)}("0",e-t.toString().length)+t}var P={Store:f,install:_,version:"3.6.2",mapState:b,mapMutations:w,mapGetters:O,mapActions:A,createNamespacedHelpers:function(t){return{mapState:b.bind(null,t),mapGetters:O.bind(null,t),mapMutations:w.bind(null,t),mapActions:A.bind(null,t)}},createLogger:function(t){void 0===t&&(t={});var e=t.collapsed;void 0===e&&(e=!0);var n=t.filter;void 0===n&&(n=function(t,e,n){return!0});var r=t.transformer;void 0===r&&(r=function(t){return t});var i=t.mutationTransformer;void 0===i&&(i=function(t){return t});var a=t.actionFilter;void 0===a&&(a=function(t,e){return!0});var s=t.actionTransformer;void 0===s&&(s=function(t){return t});var c=t.logMutations;void 0===c&&(c=!0);var u=t.logActions;void 0===u&&(u=!0);var l=t.logger;return void 0===l&&(l=console),function(t){var f=o(t.state);"undefined"!==typeof l&&(c&&t.subscribe((function(t,a){var s=o(a);if(n(t,f,s)){var c=E(),u=i(t),p="mutation "+t.type+c;S(l,p,e),l.log("%c prev state","color: #9E9E9E; font-weight: bold",r(f)),l.log("%c mutation","color: #03A9F4; font-weight: bold",u),l.log("%c next state","color: #4CAF50; font-weight: bold",r(s)),j(l)}f=s})),u&&t.subscribeAction((function(t,n){if(a(t,n)){var r=E(),o=s(t),i="action "+t.type+r;S(l,i,e),l.log("%c action","color: #03A9F4; font-weight: bold",o),j(l)}})))}}};t.exports=P}).call(this,n("c8ba"))},"278c":function(t,e,n){var r=n("c135"),o=n("9b42"),i=n("6613"),a=n("c240");t.exports=function(t,e){return r(t)||o(t,e)||i(t,e)||a()},t.exports.__esModule=!0,t.exports["default"]=t.exports},"2ddd":function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=function(){t.clearStorageSync(),t.navigateTo({url:"/pagesA/login/login"})},r=function(t){if(console.log("500接口错误"),t.data&&t.data.code)switch(Number(t.data.code)){case 500:console.log("500接口错误");case 4003:console.log("4003参数错误");break;case 4004:console.log("4004记录不存在");break;case 5001:console.log("5001xxx错误");break;case 5050:console.log("5050服务器错误,请稍后重试"),n();break;case 5051:console.log("5051未知错误");break;case 6001:console.log("6001token验证失败或已失效"),n();break}},o=function(e,n,o){var i="",a={};switch(e){case"get":i="GET",a={"Content-Type":"application/json; charset=UTF-8",Authorization:"Bearer "+t.getStorageSync("token")||!1};break;case"post":i="POST",a={"Content-Type":"application/json; charset=UTF-8",Authorization:"Bearer "+t.getStorageSync("token")||!1};break;case"postForm":i="POST",a={"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",Authorization:"Bearer "+t.getStorageSync("token")||!1};break}return new Promise((function(e,s){t.request({url:"".concat(getApp().globalData.hostapi).concat(n),method:i,data:o,header:a,success:function(t){console.log("".concat(n,"返的结果===>"),t),200==t.statusCode?(e(t.data),0!==t.data.code&&r(t)):r(t)},fail:function(t){r(t)},complete:function(t){console.log(t,100)}})}))},i={get:function(t,e){return o("get",t,e)},post:function(t,e){return o("post",t,e)},postForm:function(t,e){return o("postForm",t,e)},upload:function(e,n){return function(e,n){var r=n||{};return new Promise((function(n,o){t.uploadFile({url:"".concat(getApp().globalData.hostapi).concat(e),filePath:r.path,name:"image",fileType:"image",formData:r,header:{"Content-Type":"multipart/form-data;charset=UTF-8",Authorization:"Bearer "+t.getStorageSync("token")||!1},success:function(t){if(200==t.statusCode){var e=JSON.parse(t.data);0==e.code&&n(e)}}})}))}(e,n)}};e.default=i}).call(this,n("543d")["default"])},"37dc":function(t,e,n){"use strict";(function(t,r){var o=n("4ea4");Object.defineProperty(e,"__esModule",{value:!0}),e.LOCALE_ZH_HANT=e.LOCALE_ZH_HANS=e.LOCALE_FR=e.LOCALE_ES=e.LOCALE_EN=e.I18n=e.Formatter=void 0,e.compileI18nJsonStr=function(t,e){var n=e.locale,r=e.locales,o=e.delimiters;if(!k(t,o))return t;x||(x=new p);var i=[];Object.keys(r).forEach((function(t){t!==n&&i.push({locale:t,values:r[t]})})),i.unshift({locale:n,values:r[n]});try{return JSON.stringify(j(JSON.parse(t),i,o),null,2)}catch(a){}return t},e.hasI18nJson=function t(e,n){x||(x=new p);return E(e,(function(e,r){var o=e[r];return $(o)?!!k(o,n)||void 0:t(o,n)}))},e.initVueI18n=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0;if("string"!==typeof t){var o=[e,t];t=o[0],e=o[1]}"string"!==typeof t&&(t=A());"string"!==typeof n&&(n="undefined"!==typeof __uniConfig&&__uniConfig.fallbackLocale||"en");var i=new w({locale:t,fallbackLocale:n,messages:e,watcher:r}),a=function(t,e){if("function"!==typeof getApp)a=function(t,e){return i.t(t,e)};else{var n=!1;a=function(t,e){var r=getApp().$vm;return r&&(r.$locale,n||(n=!0,O(r,i))),i.t(t,e)}}return a(t,e)};return{i18n:i,f:function(t,e,n){return i.f(t,e,n)},t:function(t,e){return a(t,e)},add:function(t,e){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return i.add(t,e,n)},watch:function(t){return i.watchLocale(t)},getLocale:function(){return i.getLocale()},setLocale:function(t){return i.setLocale(t)}}},e.isI18nStr=k,e.isString=void 0,e.normalizeLocale=b,e.parseI18nJson=function t(e,n,r){x||(x=new p);return E(e,(function(e,o){var i=e[o];$(i)?k(i,r)&&(e[o]=S(i,n,r)):t(i,n,r)})),e},e.resolveLocale=function(t){return function(e){return e?(e=b(e)||e,function(t){var e=[],n=t.split("-");while(n.length)e.push(n.join("-")),n.pop();return e}(e).find((function(e){return t.indexOf(e)>-1}))):e}};var i=o(n("278c")),a=o(n("970b")),s=o(n("5bc3")),c=o(n("7037")),u=Array.isArray,l=function(t){return null!==t&&"object"===(0,c.default)(t)},f=["{","}"],p=function(){function t(){(0,a.default)(this,t),this._caches=Object.create(null)}return(0,s.default)(t,[{key:"interpolate",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:f;if(!e)return[t];var r=this._caches[t];return r||(r=v(t,n),this._caches[t]=r),g(r,e)}}]),t}();e.Formatter=p;var d=/^(?:\d)+/,h=/^(?:\w)+/;function v(t,e){var n=(0,i.default)(e,2),r=n[0],o=n[1],a=[],s=0,c="";while(s-1?"zh-Hans":t.indexOf("-hant")>-1||function(t,e){return!!e.find((function(e){return-1!==t.indexOf(e)}))}(t,["-tw","-hk","-mo","-cht"])?"zh-Hant":"zh-Hans";var n=function(t,e){return e.find((function(e){return 0===t.indexOf(e)}))}(t,["en","fr","es"]);return n||void 0}}var w=function(){function t(e){var n=e.locale,r=e.fallbackLocale,o=e.messages,i=e.watcher,s=e.formater;(0,a.default)(this,t),this.locale="en",this.fallbackLocale="en",this.message={},this.messages={},this.watchers=[],r&&(this.fallbackLocale=r),this.formater=s||_,this.messages=o||{},this.setLocale(n||"en"),i&&this.watchLocale(i)}return(0,s.default)(t,[{key:"setLocale",value:function(t){var e=this,n=this.locale;this.locale=b(t,this.messages)||this.fallbackLocale,this.messages[this.locale]||(this.messages[this.locale]={}),this.message=this.messages[this.locale],n!==this.locale&&this.watchers.forEach((function(t){t(e.locale,n)}))}},{key:"getLocale",value:function(){return this.locale}},{key:"watchLocale",value:function(t){var e=this,n=this.watchers.push(t)-1;return function(){e.watchers.splice(n,1)}}},{key:"add",value:function(t,e){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=this.messages[t];r?n?Object.assign(r,e):Object.keys(e).forEach((function(t){m(r,t)||(r[t]=e[t])})):this.messages[t]=e}},{key:"f",value:function(t,e,n){return this.formater.interpolate(t,e,n).join("")}},{key:"t",value:function(t,e,n){var r=this.message;return"string"===typeof e?(e=b(e,this.messages),e&&(r=this.messages[e])):n=e,m(r,t)?this.formater.interpolate(r[t],n).join(""):(console.warn("Cannot translate the value of keypath ".concat(t,". Use the value of keypath as default.")),t)}}]),t}();function O(t,e){t.$watchLocale?t.$watchLocale((function(t){e.setLocale(t)})):t.$watch((function(){return t.$locale}),(function(t){e.setLocale(t)}))}function A(){return"undefined"!==typeof t&&t.getLocale?t.getLocale():"undefined"!==typeof r&&r.getLocale?r.getLocale():"en"}e.I18n=w;var x,$=function(t){return"string"===typeof t};function k(t,e){return t.indexOf(e[0])>-1}function S(t,e,n){return x.interpolate(t,e,n).join("")}function j(t,e,n){return E(t,(function(t,r){(function(t,e,n,r){var o=t[e];if($(o)){if(k(o,r)&&(t[e]=S(o,n[0].values,r),n.length>1)){var i=t[e+"Locales"]={};n.forEach((function(t){i[t.locale]=S(o,t.values,r)}))}}else j(o,n,r)})(t,r,e,n)})),t}function E(t,e){if(u(t)){for(var n=0;n>16&255):64===r?String.fromCharCode(e>>16&255,e>>8&255):String.fromCharCode(e>>16&255,e>>8&255,255&e);return o}:atob;var m=Object.prototype.toString,_=Object.prototype.hasOwnProperty;function b(t){return"function"===typeof t}function w(t){return"string"===typeof t}function O(t){return"[object Object]"===m.call(t)}function A(t,e){return _.call(t,e)}function x(){}function $(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var k=/-(\w)/g,S=$((function(t){return t.replace(k,(function(t,e){return e?e.toUpperCase():""}))}));function j(t){var e={};return O(t)&&Object.keys(t).sort().forEach((function(n){e[n]=t[n]})),Object.keys(e)?e:t}var E=["invoke","success","fail","complete","returnValue"],C={},P={};function M(t,e){Object.keys(e).forEach((function(n){-1!==E.indexOf(n)&&b(e[n])&&(t[n]=function(t,e){var n=e?t?t.concat(e):Array.isArray(e)?e:[e]:t;return n?function(t){for(var e=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return["success","fail","complete"].forEach((function(n){if(Array.isArray(t[n])){var r=e[n];e[n]=function(e){L(t[n],e).then((function(t){return b(r)&&r(t)||t}))}}})),e}function N(t,e){var n=[];Array.isArray(C.returnValue)&&n.push.apply(n,(0,u.default)(C.returnValue));var r=P[t];return r&&Array.isArray(r.returnValue)&&n.push.apply(n,(0,u.default)(r.returnValue)),n.forEach((function(t){e=t(e)||e})),e}function U(t){var e=Object.create(null);Object.keys(C).forEach((function(t){"returnValue"!==t&&(e[t]=C[t].slice())}));var n=P[t];return n&&Object.keys(n).forEach((function(t){"returnValue"!==t&&(e[t]=(e[t]||[]).concat(n[t]))})),e}function V(t,e,n){for(var r=arguments.length,o=new Array(r>3?r-3:0),i=3;i0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length,o=new Array(r>1?r-1:0),i=1;i-1?"zh-Hans":t.indexOf("-hant")>-1||function(t,e){return!!e.find((function(e){return-1!==t.indexOf(e)}))}(t,["-tw","-hk","-mo","-cht"])?"zh-Hant":"zh-Hans";var n=function(t,e){return e.find((function(e){return 0===t.indexOf(e)}))}(t,["en","fr","es"]);return n||void 0}}function at(){if(b(getApp)){var e=getApp({allowDefault:!0});if(e&&e.$vm)return e.$vm.$locale}return it(t.getSystemInfoSync().language)||"en"}var st=[];"undefined"!==typeof r&&(r.getLocale=at);var ct={promiseInterceptor:F},ut=Object.freeze({__proto__:null,upx2px:function(e,n){if(0===Q&&function(){var e=t.getSystemInfoSync(),n=e.platform,r=e.pixelRatio,o=e.windowWidth;Q=o,tt=r,Y="ios"===n}(),e=Number(e),0===e)return 0;var r=e/750*(n||Q);return r<0&&(r=-r),r=Math.floor(r+1e-4),0===r&&(r=1!==tt&&Y?.5:1),e<0?-r:r},getLocale:at,setLocale:function(t){var e=!!b(getApp)&&getApp();if(!e)return!1;var n=e.$vm.$locale;return n!==t&&(e.$vm.$locale=t,st.forEach((function(e){return e({locale:t})})),!0)},onLocaleChange:function(t){-1===st.indexOf(t)&&st.push(t)},addInterceptor:function(t,e){"string"===typeof t&&O(e)?M(P[t]||(P[t]={}),e):O(t)&&M(C,t)},removeInterceptor:function(t,e){"string"===typeof t?O(e)?D(P[t],e):delete P[t]:O(t)&&D(C,t)},interceptors:ct});var lt,ft={name:function(t){return"back"===t.exists&&t.delta?"navigateBack":"redirectTo"},args:function(t){if("back"===t.exists&&t.url){var e=function(t){var e=getCurrentPages(),n=e.length;while(n--){var r=e[n];if(r.$page&&r.$page.fullPath===t)return n}return-1}(t.url);if(-1!==e){var n=getCurrentPages().length-1-e;n>0&&(t.delta=n)}}}},pt={args:function(t){var e=parseInt(t.current);if(!isNaN(e)){var n=t.urls;if(Array.isArray(n)){var r=n.length;if(r)return e<0?e=0:e>=r&&(e=r-1),e>0?(t.current=n[e],t.urls=n.filter((function(t,r){return!(r2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(O(e)){var i=!0===o?e:{};for(var a in b(n)&&(n=n(e,i)||{}),e)if(A(n,a)){var s=n[a];b(s)&&(s=s(e[a],e,i)),s?w(s)?i[s]=e[a]:O(s)&&(i[s.name?s.name:a]=s.value):console.warn("The '".concat(t,"' method of platform '微信小程序' does not support option '").concat(a,"'"))}else-1!==$t.indexOf(a)?b(e[a])&&(i[a]=kt(t,e[a],r)):o||(i[a]=e[a]);return i}return b(e)&&(e=kt(t,e,r)),e}function jt(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return b(xt.returnValue)&&(e=xt.returnValue(t,e)),St(t,e,n,{},r)}function Et(e,n){if(A(xt,e)){var r=xt[e];return r?function(n,o){var i=r;b(r)&&(i=r(n)),n=St(e,n,i.args,i.returnValue);var a=[n];"undefined"!==typeof o&&a.push(o),b(i.name)?e=i.name(n):w(i.name)&&(e=i.name);var s=t[e].apply(t,a);return K(e)?jt(e,s,i.returnValue,W(e)):s}:function(){console.error("Platform '微信小程序' does not support '".concat(e,"'."))}}return n}var Ct=Object.create(null);["onTabBarMidButtonTap","subscribePush","unsubscribePush","onPush","offPush","share"].forEach((function(t){Ct[t]=function(t){return function(e){var n=e.fail,r=e.complete,o={errMsg:"".concat(t,":fail method '").concat(t,"' not supported")};b(n)&&n(o),b(r)&&r(o)}}(t)}));var Pt={oauth:["weixin"],share:["weixin"],payment:["wxpay"],push:["weixin"]};var Mt=Object.freeze({__proto__:null,getProvider:function(t){var e=t.service,n=t.success,r=t.fail,o=t.complete,i=!1;Pt[e]?(i={errMsg:"getProvider:ok",service:e,provider:Pt[e]},b(n)&&n(i)):(i={errMsg:"getProvider:fail service not found"},b(r)&&r(i)),b(o)&&o(i)}}),Dt=function(){var t;return function(){return t||(t=new p.default),t}}();function Tt(t,e,n){return t[e].apply(t,n)}var It,Lt,Rt,Nt=Object.freeze({__proto__:null,$on:function(){return Tt(Dt(),"$on",Array.prototype.slice.call(arguments))},$off:function(){return Tt(Dt(),"$off",Array.prototype.slice.call(arguments))},$once:function(){return Tt(Dt(),"$once",Array.prototype.slice.call(arguments))},$emit:function(){return Tt(Dt(),"$emit",Array.prototype.slice.call(arguments))}});function Ut(t){return function(){try{return t.apply(t,arguments)}catch(e){console.error(e)}}}function Vt(t){try{return JSON.parse(t)}catch(e){}return t}var Ft=[];function Bt(t,e){Ft.forEach((function(n){n(t,e)})),Ft.length=0}var Ht=[],zt=t.getAppBaseInfo&&t.getAppBaseInfo();zt||(zt=t.getSystemInfoSync());var qt=zt?zt.host:null,Gt=qt&&"SAAASDK"===qt.env?t.miniapp.shareVideoMessage:t.shareVideoMessage,Wt=Object.freeze({__proto__:null,shareVideoMessage:Gt,getPushClientId:function(t){O(t)||(t={});var e=function(t){var e={};for(var n in t){var r=t[n];b(r)&&(e[n]=Ut(r),delete t[n])}return e}(t),n=e.success,r=e.fail,o=e.complete,i=b(n),a=b(r),s=b(o);Promise.resolve().then((function(){"undefined"===typeof Rt&&(Rt=!1,It="",Lt="uniPush is not enabled"),Ft.push((function(t,e){var c;t?(c={errMsg:"getPushClientId:ok",cid:t},i&&n(c)):(c={errMsg:"getPushClientId:fail"+(e?" "+e:"")},a&&r(c)),s&&o(c)})),"undefined"!==typeof It&&Bt(It,Lt)}))},onPushMessage:function(t){-1===Ht.indexOf(t)&&Ht.push(t)},offPushMessage:function(t){if(t){var e=Ht.indexOf(t);e>-1&&Ht.splice(e,1)}else Ht.length=0},invokePushCallback:function(t){if("enabled"===t.type)Rt=!0;else if("clientId"===t.type)It=t.cid,Lt=t.errMsg,Bt(It,t.errMsg);else if("pushMsg"===t.type)for(var e={type:"receive",data:Vt(t.message)},n=0;n=0;i--){var a=o[i];if(a.$scope._$vueId===n)return a}for(var s=o.length-1;s>=0;s--)if(r=t(o[s],n),r)return r}(this.$vm,r)),e||(e=this.$vm),o.parent=e}function te(t){return Object.defineProperty(t,"__v_isMPComponent",{configurable:!0,enumerable:!1,value:!0}),t}function ee(t){return function(t){return null!==t&&"object"===(0,l.default)(t)}(t)&&Object.isExtensible(t)&&Object.defineProperty(t,"__ob__",{configurable:!0,enumerable:!1,value:(0,s.default)({},"__v_skip",!0)}),t}var ne=/_(.*)_worklet_factory_/;var re=Page,oe=Component,ie=/:/g,ae=$((function(t){return S(t.replace(ie,"-"))}));function se(t){var e=t.triggerEvent,n=function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:{};return ce("onLoad",t),re(t)},Page.after=re.after,Component=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return ce("created",t),oe(t)});function ue(t,e,n){e.forEach((function(e){(function t(e,n){if(!n)return!0;if(p.default.options&&Array.isArray(p.default.options[e]))return!0;if(n=n.default||n,b(n))return!!b(n.extendOptions[e])||!!(n.super&&n.super.options&&Array.isArray(n.super.options[e]));if(b(n[e])||Array.isArray(n[e]))return!0;var r=n.mixins;return Array.isArray(r)?!!r.find((function(n){return t(e,n)})):void 0})(e,n)&&(t[e]=function(t){return this.$vm&&this.$vm.__call_hook(e,t)})}))}function le(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];fe(e).forEach((function(e){return pe(t,e,n)}))}function fe(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return t&&Object.keys(t).forEach((function(n){0===n.indexOf("on")&&b(t[n])&&e.push(n)})),e}function pe(t,e,n){-1!==n.indexOf(e)||A(t,e)||(t[e]=function(t){return this.$vm&&this.$vm.__call_hook(e,t)})}function de(t,e){var n;return e=e.default||e,n=b(e)?e:t.extend(e),e=n.options,[n,e]}function he(t,e){if(Array.isArray(e)&&e.length){var n=Object.create(null);e.forEach((function(t){n[t]=!0})),t.$scopedSlots=t.$slots=n}}function ve(t,e){t=(t||"").split(",");var n=t.length;1===n?e._$vueId=t[0]:2===n&&(e._$vueId=t[0],e._$vuePid=t[1])}function ge(t,e){var n=t.data||{},r=t.methods||{};if("function"===typeof n)try{n=n.call(e)}catch(o){Object({VUE_APP_DARK_MODE:"false",VUE_APP_NAME:"翼笑倾成",VUE_APP_PLATFORM:"mp-weixin",NODE_ENV:"production",BASE_URL:"/"}).VUE_APP_DEBUG&&console.warn("根据 Vue 的 data 函数初始化小程序 data 失败,请尽量确保 data 函数中不访问 vm 对象,否则可能影响首次数据渲染速度。",n)}else try{n=JSON.parse(JSON.stringify(n))}catch(o){}return O(n)||(n={}),Object.keys(r).forEach((function(t){-1!==e.__lifecycle_hooks__.indexOf(t)||A(n,t)||(n[t]=r[t])})),n}var ye=[String,Number,Boolean,Object,Array,null];function me(t){return function(e,n){this.$vm&&(this.$vm[t]=e)}}function _e(t,e){var n=t.behaviors,r=t.extends,o=t.mixins,i=t.props;i||(t.props=i=[]);var a=[];return Array.isArray(n)&&n.forEach((function(t){a.push(t.replace("uni://","wx".concat("://"))),"uni://form-field"===t&&(Array.isArray(i)?(i.push("name"),i.push("value")):(i.name={type:String,default:""},i.value={type:[String,Number,Boolean,Array,Object,Date],default:""}))})),O(r)&&r.props&&a.push(e({properties:we(r.props,!0)})),Array.isArray(o)&&o.forEach((function(t){O(t)&&t.props&&a.push(e({properties:we(t.props,!0)}))})),a}function be(t,e,n,r){return Array.isArray(e)&&1===e.length?e[0]:e}function we(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>3?arguments[3]:void 0,r={};return e||(r.vueId={type:String,value:""},n.virtualHost&&(r.virtualHostStyle={type:null,value:""},r.virtualHostClass={type:null,value:""}),r.scopedSlotsCompiler={type:String,value:""},r.vueSlots={type:null,value:[],observer:function(t,e){var n=Object.create(null);t.forEach((function(t){n[t]=!0})),this.setData({$slots:n})}}),Array.isArray(t)?t.forEach((function(t){r[t]={type:null,observer:me(t)}})):O(t)&&Object.keys(t).forEach((function(e){var n=t[e];if(O(n)){var o=n.default;b(o)&&(o=o()),n.type=be(0,n.type),r[e]={type:-1!==ye.indexOf(n.type)?n.type:null,value:o,observer:me(e)}}else{var i=be(0,n);r[e]={type:-1!==ye.indexOf(i)?i:null,observer:me(e)}}})),r}function Oe(t,e,n,r){var o={};return Array.isArray(e)&&e.length&&e.forEach((function(e,i){"string"===typeof e?e?"$event"===e?o["$"+i]=n:"arguments"===e?o["$"+i]=n.detail&&n.detail.__args__||r:0===e.indexOf("$event.")?o["$"+i]=t.__get_value(e.replace("$event.",""),n):o["$"+i]=t.__get_value(e):o["$"+i]=t:o["$"+i]=function(t,e){var n=t;return e.forEach((function(e){var r=e[0],o=e[2];if(r||"undefined"!==typeof o){var i,a=e[1],s=e[3];Number.isInteger(r)?i=r:r?"string"===typeof r&&r&&(i=0===r.indexOf("#s#")?r.substr(3):t.__get_value(r,n)):i=n,Number.isInteger(i)?n=o:a?Array.isArray(i)?n=i.find((function(e){return t.__get_value(a,e)===o})):O(i)?n=Object.keys(i).find((function(e){return t.__get_value(a,i[e])===o})):console.error("v-for 暂不支持循环数据:",i):n=i[o],s&&(n=t.__get_value(s,n))}})),n}(t,e)})),o}function Ae(t){for(var e={},n=1;n2&&void 0!==arguments[2]?arguments[2]:[],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],o=arguments.length>4?arguments[4]:void 0,i=arguments.length>5?arguments[5]:void 0,a=!1,s=O(e.detail)&&e.detail.__args__||[e.detail];if(o&&(a=e.currentTarget&&e.currentTarget.dataset&&"wx"===e.currentTarget.dataset.comType,!n.length))return a?[e]:s;var c=Oe(t,r,e,s),u=[];return n.forEach((function(t){"$event"===t?"__set_model"!==i||o?o&&!a?u.push(s[0]):u.push(e):u.push(e.target.value):Array.isArray(t)&&"o"===t[0]?u.push(Ae(t)):"string"===typeof t&&A(c,t)?u.push(c[t]):u.push(t)})),u}function $e(t){var e=this;t=function(t){try{t.mp=JSON.parse(JSON.stringify(t))}catch(e){}return t.stopPropagation=x,t.preventDefault=x,t.target=t.target||{},A(t,"detail")||(t.detail={}),A(t,"markerId")&&(t.detail="object"===(0,l.default)(t.detail)?t.detail:{},t.detail.markerId=t.markerId),O(t.detail)&&(t.target=Object.assign({},t.target,t.detail)),t}(t);var n=(t.currentTarget||t.target).dataset;if(!n)return console.warn("事件信息不存在");var r=n.eventOpts||n["event-opts"];if(!r)return console.warn("事件信息不存在");var o=t.type,i=[];return r.forEach((function(n){var r=n[0],a=n[1],s="^"===r.charAt(0);r=s?r.slice(1):r;var c="~"===r.charAt(0);r=c?r.slice(1):r,a&&function(t,e){return t===e||"regionchange"===e&&("begin"===t||"end"===t)}(o,r)&&a.forEach((function(n){var r=n[0];if(r){var o=e.$vm;if(o.$options.generic&&(o=function(t){var e=t.$parent;while(e&&e.$parent&&(e.$options.generic||e.$parent.$options.generic||e.$scope._$vuePid))e=e.$parent;return e&&e.$parent}(o)||o),"$emit"===r)return void o.$emit.apply(o,xe(e.$vm,t,n[1],n[2],s,r));var a=o[r];if(!b(a)){var u="page"===e.$vm.mpType?"Page":"Component",l=e.route||e.is;throw new Error("".concat(u,' "').concat(l,'" does not have a method "').concat(r,'"'))}if(c){if(a.once)return;a.once=!0}var f=xe(e.$vm,t,n[1],n[2],s,r);f=Array.isArray(f)?f:[],/=\s*\S+\.eventParams\s*\|\|\s*\S+\[['"]event-params['"]\]/.test(a.toString())&&(f=f.concat([,,,,,,,,,,t])),i.push(a.apply(o,f))}}))})),"input"===o&&1===i.length&&"undefined"!==typeof i[0]?i[0]:void 0}var ke={},Se=[];var je=["onShow","onHide","onError","onPageNotFound","onThemeChange","onUnhandledRejection"];function Ee(){p.default.prototype.getOpenerEventChannel=function(){return this.$scope.getOpenerEventChannel()};var t=p.default.prototype.__call_hook;p.default.prototype.__call_hook=function(e,n){return"onLoad"===e&&n&&n.__id__&&(this.__eventChannel__=function(t){if(t){var e=ke[t];return delete ke[t],e}return Se.shift()}(n.__id__),delete n.__id__),t.call(this,e,n)}}function Ce(e,n){var r=n.mocks,o=n.initRefs;Ee(),function(){var t={},e={};p.default.prototype.$hasScopedSlotsParams=function(n){var r=t[n];return r||(e[n]=this,this.$on("hook:destroyed",(function(){delete e[n]}))),r},p.default.prototype.$getScopedSlotsParams=function(n,r,o){var i=t[n];if(i){var a=i[r]||{};return o?a[o]:a}e[n]=this,this.$on("hook:destroyed",(function(){delete e[n]}))},p.default.prototype.$setScopedSlotsParams=function(n,r){var o=this.$options.propsData.vueId;if(o){var i=o.split(",")[0],a=t[i]=t[i]||{};a[n]=r,e[i]&&e[i].$forceUpdate()}},p.default.mixin({destroyed:function(){var n=this.$options.propsData,r=n&&n.vueId;r&&(delete t[r],delete e[r])}})}(),e.$options.store&&(p.default.prototype.$store=e.$options.store),function(t){t.prototype.uniIDHasRole=function(t){var e=y(),n=e.role;return n.indexOf(t)>-1},t.prototype.uniIDHasPermission=function(t){var e=y(),n=e.permission;return this.uniIDHasRole("admin")||n.indexOf(t)>-1},t.prototype.uniIDTokenValid=function(){var t=y(),e=t.tokenExpired;return e>Date.now()}}(p.default),p.default.prototype.mpHost="mp-weixin",p.default.mixin({beforeCreate:function(){if(this.$options.mpType){if(this.mpType=this.$options.mpType,this.$mp=(0,s.default)({data:{}},this.mpType,this.$options.mpInstance),this.$scope=this.$options.mpInstance,delete this.$options.mpType,delete this.$options.mpInstance,"page"===this.mpType&&"function"===typeof getApp){var t=getApp();t.$vm&&t.$vm.$i18n&&(this._i18n=t.$vm.$i18n)}"app"!==this.mpType&&(o(this),function(t,e){var n=t.$mp[t.mpType];e.forEach((function(e){A(n,e)&&(t[e]=n[e])}))}(this,r))}}});var i={onLaunch:function(n){this.$vm||(t.canIUse&&!t.canIUse("nextTick")&&console.error("当前微信基础库版本过低,请将 微信开发者工具-详情-项目设置-调试基础库版本 更换为`2.3.0`以上"),this.$vm=e,this.$vm.$mp={app:this},this.$vm.$scope=this,this.$vm.globalData=this.globalData,this.$vm._isMounted=!0,this.$vm.__call_hook("mounted",n),this.$vm.__call_hook("onLaunch",n))}};i.globalData=e.$options.globalData||{};var a=e.$options.methods;return a&&Object.keys(a).forEach((function(t){i[t]=a[t]})),function(t,e,n){var r=t.observable({locale:n||rt.getLocale()}),o=[];e.$watchLocale=function(t){o.push(t)},Object.defineProperty(e,"$locale",{get:function(){return r.locale},set:function(t){r.locale=t,o.forEach((function(e){return e(t)}))}})}(p.default,e,it(t.getSystemInfoSync().language)||"en"),ue(i,je),le(i,e.$options),i}function Pe(t){return Ce(t,{mocks:Kt,initRefs:Yt})}function Me(t){return App(Pe(t)),t}var De=/[!'()*]/g,Te=function(t){return"%"+t.charCodeAt(0).toString(16)},Ie=/%2C/g,Le=function(t){return encodeURIComponent(t).replace(De,Te).replace(Ie,",")};function Re(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Le,n=t?Object.keys(t).map((function(n){var r=t[n];if(void 0===r)return"";if(null===r)return e(n);if(Array.isArray(r)){var o=[];return r.forEach((function(t){void 0!==t&&(null===t?o.push(e(n)):o.push(e(n)+"="+e(t)))})),o.join("&")}return e(n)+"="+e(r)})).filter((function(t){return t.length>0})).join("&"):null;return n?"?".concat(n):""}function Ne(t,e){return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.isPage,r=e.initRelation,o=arguments.length>2?arguments[2]:void 0,i=de(p.default,t),s=(0,a.default)(i,2),c=s[0],u=s[1],l=h({multipleSlots:!0,addGlobalClass:!0},u.options||{});u["mp-weixin"]&&u["mp-weixin"].options&&Object.assign(l,u["mp-weixin"].options);var f={options:l,data:ge(u,p.default.prototype),behaviors:_e(u,Xt),properties:we(u.props,!1,u.__file,l),lifetimes:{attached:function(){var t=this.properties,e={mpType:n.call(this)?"page":"component",mpInstance:this,propsData:t};ve(t.vueId,this),r.call(this,{vuePid:this._$vuePid,vueOptions:e}),this.$vm=new c(e),he(this.$vm,t.vueSlots),this.$vm.$mount()},ready:function(){this.$vm&&(this.$vm._isMounted=!0,this.$vm.__call_hook("mounted"),this.$vm.__call_hook("onReady"))},detached:function(){this.$vm&&this.$vm.$destroy()}},pageLifetimes:{show:function(t){this.$vm&&this.$vm.__call_hook("onPageShow",t)},hide:function(){this.$vm&&this.$vm.__call_hook("onPageHide")},resize:function(t){this.$vm&&this.$vm.__call_hook("onPageResize",t)}},methods:{__l:Qt,__e:$e}};return u.externalClasses&&(f.externalClasses=u.externalClasses),Array.isArray(u.wxsCallMethods)&&u.wxsCallMethods.forEach((function(t){f.methods[t]=function(e){return this.$vm[t](e)}})),o?[f,u,c]:n?f:[f,c]}(t,{isPage:Jt,initRelation:Zt},e)}var Ue=["onShow","onHide","onUnload"];function Ve(t){var e=Ne(t,!0),n=(0,a.default)(e,2),r=n[0],o=n[1];return ue(r.methods,Ue,o),r.methods.onLoad=function(t){this.options=t;var e=Object.assign({},t);delete e.__id__,this.$page={fullPath:"/"+(this.route||this.is)+Re(e)},this.$vm.$mp.query=t,this.$vm.__call_hook("onLoad",t)},le(r.methods,t,["onReady"]),function(t,e){e&&Object.keys(e).forEach((function(n){var r=n.match(ne);if(r){var o=r[1];t[n]=e[n],t[o]=e[o]}}))}(r.methods,o.methods),r}function Fe(t){return Component(function(t){return Ve(t)}(t))}function Be(t){return Component(Ne(t))}function He(e){var n=Pe(e),r=getApp({allowDefault:!0});e.$scope=r;var o=r.globalData;if(o&&Object.keys(n.globalData).forEach((function(t){A(o,t)||(o[t]=n.globalData[t])})),Object.keys(n).forEach((function(t){A(r,t)||(r[t]=n[t])})),b(n.onShow)&&t.onAppShow&&t.onAppShow((function(){for(var t=arguments.length,n=new Array(t),r=0;rt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0&&Math.floor(e)===e&&isFinite(t)}function f(t){return o(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function p(t){return null==t?"":Array.isArray(t)||u(t)&&t.toString===c?JSON.stringify(t,null,2):String(t)}function d(t){var e=parseFloat(t);return isNaN(e)?t:e}function h(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}var y=Object.prototype.hasOwnProperty;function m(t,e){return y.call(t,e)}function _(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var b=/-(\w)/g,w=_((function(t){return t.replace(b,(function(t,e){return e?e.toUpperCase():""}))})),O=_((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),A=/\B([A-Z])/g,x=_((function(t){return t.replace(A,"-$1").toLowerCase()}));var $=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function k(t,e){e=e||0;var n=t.length-e,r=new Array(n);while(n--)r[n]=t[n+e];return r}function S(t,e){for(var n in e)t[n]=e[n];return t}function j(t){for(var e={},n=0;n0),J=(W&&W.indexOf("android"),W&&/iphone|ipad|ipod|ios/.test(W)||"ios"===G),Z=(W&&/chrome\/\d+/.test(W),W&&/phantomjs/.test(W),W&&W.match(/firefox\/(\d+)/),{}.watch);if(z)try{var Y={};Object.defineProperty(Y,"passive",{get:function(){}}),window.addEventListener("test-passive",null,Y)}catch(Rn){}var Q=function(){return void 0===B&&(B=!z&&!q&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),B},tt=z&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function et(t){return"function"===typeof t&&/native code/.test(t.toString())}var nt,rt="undefined"!==typeof Symbol&&et(Symbol)&&"undefined"!==typeof Reflect&&et(Reflect.ownKeys);nt="undefined"!==typeof Set&&et(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ot=E,it=0,at=function(){this.id=it++,this.subs=[]};function st(t){at.SharedObject.targetStack.push(t),at.SharedObject.target=t,at.target=t}function ct(){at.SharedObject.targetStack.pop(),at.SharedObject.target=at.SharedObject.targetStack[at.SharedObject.targetStack.length-1],at.target=at.SharedObject.target}at.prototype.addSub=function(t){this.subs.push(t)},at.prototype.removeSub=function(t){g(this.subs,t)},at.prototype.depend=function(){at.SharedObject.target&&at.SharedObject.target.addDep(this)},at.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(i&&!m(o,"default"))a=!1;else if(""===a||a===x(t)){var c=Lt(String,o.type);(c<0||s0&&(c=t(c,(n||"")+"_"+s),re(c[0])&&re(l)&&(f[u]=pt(l.text+c[0].text),c.shift()),f.push.apply(f,c)):a(c)?re(l)?f[u]=pt(l.text+c):""!==c&&f.push(pt(c)):re(c)&&re(l)?f[u]=pt(l.text+c.text):(i(e._isVList)&&o(c.tag)&&r(c.key)&&o(n)&&(c.key="__vlist"+n+"_"+s+"__"),f.push(c)));return f}(t):void 0}function re(t){return o(t)&&o(t.text)&&function(t){return!1===t}(t.isComment)}function oe(t){var e=t.$options.provide;e&&(t._provided="function"===typeof e?e.call(t):e)}function ie(t){var e=ae(t.$options.inject,t);e&&(yt(!1),Object.keys(e).forEach((function(n){wt(t,n,e[n])})),yt(!0))}function ae(t,e){if(t){for(var n=Object.create(null),r=rt?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!i,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&r&&r!==n&&s===r.$key&&!i&&!r.$hasNormal)return r;for(var c in o={},t)t[c]&&"$"!==c[0]&&(o[c]=le(e,c,t[c]))}else o={};for(var u in e)u in o||(o[u]=fe(e,u));return t&&Object.isExtensible(t)&&(t._normalized=o),V(o,"$stable",a),V(o,"$key",s),V(o,"$hasNormal",i),o}function le(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return t=t&&"object"===typeof t&&!Array.isArray(t)?[t]:ne(t),t&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function fe(t,e){return function(){return t[e]}}function pe(t,e){var n,r,i,a,c;if(Array.isArray(t)||"string"===typeof t)for(n=new Array(t.length),r=0,i=t.length;rdocument.createEvent("Event").timeStamp&&(Qe=function(){return tn.now()})}function en(){var t,e;for(Qe(),Ze=!0,We.sort((function(t,e){return t.id-e.id})),Ye=0;YeYe&&We[n].id>t.id)n--;We.splice(n+1,0,t)}else We.push(t);Je||(Je=!0,Xt(en))}}(this)},rn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||s(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(Rn){Rt(Rn,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},rn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},rn.prototype.depend=function(){var t=this.deps.length;while(t--)this.deps[t].depend()},rn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||g(this.vm._watchers,this);var t=this.deps.length;while(t--)this.deps[t].removeSub(this);this.active=!1}};var on={enumerable:!0,configurable:!0,get:E,set:E};function an(t,e,n){on.get=function(){return this[e][n]},on.set=function(t){this[e][n]=t},Object.defineProperty(t,n,on)}function sn(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[],i=!t.$parent;i||yt(!1);var a=function(i){o.push(i);var a=Dt(i,e,n,t);wt(r,i,a),i in t||an(t,"_props",i)};for(var s in e)a(s);yt(!0)}(t,e.props),e.methods&&function(t,e){t.$options.props;for(var n in e)t[n]="function"!==typeof e[n]?E:$(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;e=t._data="function"===typeof e?function(t,e){st();try{return t.call(e,e)}catch(Rn){return Rt(Rn,e,"data()"),{}}finally{ct()}}(e,t):e||{},u(e)||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);while(o--){var i=n[o];0,r&&m(r,i)||U(i)||an(t,"_data",i)}bt(e,!0)}(t):bt(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),r=Q();for(var o in e){var i=e[o],a="function"===typeof i?i:i.get;0,r||(n[o]=new rn(t,a||E,E,cn)),o in t||un(t,o,i)}}(t,e.computed),e.watch&&e.watch!==Z&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o-1:"string"===typeof t?t.split(",").indexOf(e)>-1:!!function(t){return"[object RegExp]"===c.call(t)}(t)&&t.test(e)}function _n(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=yn(a.componentOptions);s&&!e(s)&&bn(n,i,r,o)}}}function bn(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,g(n,e)}(function(t){t.prototype._init=function(t){var e=this;e._uid=dn++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Pt(hn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){while(n.$options.abstract&&n.$parent)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Be(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,r=t.$vnode=e._parentVnode,o=r&&r.context;t.$slots=se(e._renderChildren,o),t.$scopedSlots=n,t._c=function(e,n,r,o){return Te(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return Te(t,e,n,r,o,!0)};var i=r&&r.data;wt(t,"$attrs",i&&i.attrs||n,null,!0),wt(t,"$listeners",e._parentListeners||n,null,!0)}(e),Ge(e,"beforeCreate"),!e._$fallback&&ie(e),sn(e),!e._$fallback&&oe(e),!e._$fallback&&Ge(e,"created"),e.$options.el&&e.$mount(e.$options.el)}})(vn),function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=Ot,t.prototype.$delete=At,t.prototype.$watch=function(t,e,n){if(u(e))return pn(this,t,e,n);n=n||{},n.user=!0;var r=new rn(this,t,e,n);if(n.immediate)try{e.call(this,r.value)}catch(o){Rt(o,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}}}(vn),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var r=this;if(Array.isArray(t))for(var o=0,i=t.length;o1?k(n):n;for(var r=k(arguments,1),o='event handler for "'+t+'"',i=0,a=n.length;iparseInt(this.max)&&bn(s,c[0],c,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}},An={KeepAlive:On};(function(t){var e={get:function(){return R}};Object.defineProperty(t,"config",e),t.util={warn:ot,extend:S,mergeOptions:Pt,defineReactive:wt},t.set=Ot,t.delete=At,t.nextTick=Xt,t.observable=function(t){return bt(t),t},t.options=Object.create(null),I.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,S(t.options.components,An),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=k(arguments,1);return n.unshift(this),"function"===typeof t.install?t.install.apply(t,n):"function"===typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Pt(this.options,t),this}}(t),gn(t),function(t){I.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&u(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"===typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)})(vn),Object.defineProperty(vn.prototype,"$isServer",{get:Q}),Object.defineProperty(vn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(vn,"FunctionalRenderContext",{value:Se}),vn.version="2.6.11";var xn="[object Array]",$n="[object Object]";function kn(t,e){var n={};return function t(e,n){if(e===n)return;var r=jn(e),o=jn(n);if(r==$n&&o==$n){if(Object.keys(e).length>=Object.keys(n).length)for(var i in n){var a=e[i];void 0===a?e[i]=null:t(a,n[i])}}else r==xn&&o==xn&&e.length>=n.length&&n.forEach((function(n,r){t(e[r],n)}))}(t,e),function t(e,n,r,o){if(e===n)return;var i=jn(e),a=jn(n);if(i==$n)if(a!=$n||Object.keys(e).length1&&(e[r[0].trim()]=r[1].trim())}})),e}));var In=["createSelectorQuery","createIntersectionObserver","selectAllComponents","selectComponent"];var Ln=["onLaunch","onShow","onHide","onUniNViewMessage","onPageNotFound","onThemeChange","onError","onUnhandledRejection","onInit","onLoad","onReady","onUnload","onPullDownRefresh","onReachBottom","onTabItemTap","onAddToFavorites","onShareTimeline","onShareAppMessage","onResize","onPageScroll","onNavigationBarButtonTap","onBackPress","onNavigationBarSearchInputChanged","onNavigationBarSearchInputConfirmed","onNavigationBarSearchInputClicked","onPageShow","onPageHide","onPageResize","onUploadDouyinVideo"];vn.prototype.__patch__=function(t,e){var n=this;if(null!==e&&("page"===this.mpType||"component"===this.mpType)){var r=this.$scope,o=Object.create(null);try{o=function(t){var e=Object.create(null),n=[].concat(Object.keys(t._data||{}),Object.keys(t._computedWatchers||{}));n.reduce((function(e,n){return e[n]=t[n],e}),e);var r=t.__composition_api_state__||t.__secret_vfa_state__,o=r&&r.rawBindings;return o&&Object.keys(o).forEach((function(n){e[n]=t[n]})),Object.assign(e,t.$mp.data||{}),Array.isArray(t.$options.behaviors)&&-1!==t.$options.behaviors.indexOf("uni://form-field")&&(e["name"]=t.name,e["value"]=t.value),JSON.parse(JSON.stringify(e,Pn))}(this)}catch(s){console.error(s)}o.__webviewId__=r.data.__webviewId__;var i=Object.create(null);Object.keys(o).forEach((function(t){i[t]=r.data[t]}));var a=!1===this.$shouldDiffData?o:kn(o,i);Object.keys(a).length?(Object({VUE_APP_DARK_MODE:"false",VUE_APP_NAME:"翼笑倾成",VUE_APP_PLATFORM:"mp-weixin",NODE_ENV:"production",BASE_URL:"/"}).VUE_APP_DEBUG&&console.log("["+ +new Date+"]["+(r.is||r.route)+"]["+this._uid+"]差量更新",JSON.stringify(a)),this.__next_tick_pending=!0,r.setData(a,(function(){n.__next_tick_pending=!1,En(n)}))):En(this)}},vn.prototype.$mount=function(t,e){return function(t,e,n){return t.mpType?("app"===t.mpType&&(t.$options.render=Mn),t.$options.render||(t.$options.render=Mn),!t._$fallback&&Ge(t,"beforeMount"),new rn(t,(function(){t._update(t._render(),n)}),E,{before:function(){t._isMounted&&!t._isDestroyed&&Ge(t,"beforeUpdate")}},!0),n=!1,t):t}(this,0,e)},function(t){var e=t.extend;t.extend=function(t){t=t||{};var n=t.methods;return n&&Object.keys(n).forEach((function(e){-1!==Ln.indexOf(e)&&(t[e]=n[e],delete n[e])})),e.call(this,t)};var n=t.config.optionMergeStrategies,r=n.created;Ln.forEach((function(t){n[t]=r})),t.prototype.__lifecycle_hooks__=Ln}(vn),function(t){t.config.errorHandler=function(e,n,r){t.util.warn("Error in "+r+': "'+e.toString()+'"',n),console.error(e);var o="function"===typeof getApp&&getApp();o&&o.onError&&o.onError(e)};var e=t.prototype.$emit;t.prototype.$emit=function(t){if(this.$scope&&t){var n=this.$scope["_triggerEvent"]||this.$scope["triggerEvent"];if(n)try{n.call(this.$scope,t,{__args__:k(arguments,1)})}catch(r){}}return e.apply(this,arguments)},t.prototype.$nextTick=function(t){return Cn(this,t)},In.forEach((function(e){t.prototype[e]=function(t){return this.$scope&&this.$scope[e]?this.$scope[e](t):"undefined"!==typeof my?"createSelectorQuery"===e?my.createSelectorQuery(t):"createIntersectionObserver"===e?my.createIntersectionObserver(t):void 0:void 0}})),t.prototype.__init_provide=oe,t.prototype.__init_injections=ie,t.prototype.__call_hook=function(t,e){var n=this;st();var r,o=n.$options[t],i=t+" hook";if(o)for(var a=0,s=o.length;a1&&void 0!==arguments[1]?arguments[1]:3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:7,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:" ",o=t;o=o.replace(/\s*/g,"");for(var i=[],a=0;a3&&void 0!==arguments[3]?arguments[3]:0;t=t.toString(),e=e.toString();var o=t.indexOf("."),i=e.indexOf("."),a=0,s=0;-1!=o&&(a=t.split(".")[1].length),-1!=i&&(s=e.split(".")[1].length);var c=a>s?a:s,u=a1*e&&(n.val=e)):n={len:e.length,val:e},n},showToast:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"none",r=arguments.length>2?arguments[2]:void 0,o=2e3;return r&&(o=r),t.showToast({title:e,icon:n,duration:o})},escape2Html:function(t){var e={lt:"<",gt:">",nbsp:" ",amp:"&",quot:'"'};return t.replace(/&(lt|gt|nbsp|amp|quot|src);/gi,(function(t,n){return e[n]})).replace("]*src=['"]([^'"]+)[^>]*>/gi,(function(t,e){return'-1?e:"https://guofu.scdxtc.cn"+e,"' />")}))},networkStatus:function(){var e=this;t.getNetworkType({success:function(n){console.log("当前网络状态:",n.networkType),"none"==n.networkType?t.setStorageSync("isNet",!1):(t.setStorageSync("isNet",!0),e.checkUpdate())}})},checkUpdate:function(){var e=this;if(n.canIUse("getUpdateManager")){var r=n.getUpdateManager();r.onCheckForUpdate((function(o){o.hasUpdate&&n.showModal({title:"更新提示",content:"检测到新版本,是否下载新版本并重启小程序?",success:function(o){o.confirm?(e.downLoadAndUpdate(r),t.clearStorage(),t.clearStorageSync()):o.cancel&&n.showModal({title:"温馨提示~",content:"本次版本更新涉及到新的功能添加,旧版本无法正常访问的哦~",showCancel:!1,confirmText:"确定更新",success:function(t){t.confirm&&e.downLoadAndUpdate(r)}})}})}))}else n.showModal({title:"提示",content:"当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。"})},downLoadAndUpdate:function(e){n.showLoading(),e.onUpdateReady((function(){n.hideLoading(),e.applyUpdate(),t.clearStorageSync(),t.clearStorage()})),e.onUpdateFailed((function(){n.showModal({title:"已经有新版本了哟~",content:"新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~"})}))},clickCopy:function(e){t.setClipboardData({data:e,success:function(){t.showToast({title:"复制成功",duration:2e3,icon:"none"})}})},authTimer:null,judgeAuth:function(){var e=!1;return clearTimeout(this.authTimer),t.getStorageSync("token")&&0!=t.getStorageSync("is_active")?e=!0:(this.showToast("请授权登录"),this.authTimer=setTimeout((function(){t.reLaunch({url:"/pagesA/login/login"})}),1500)),e},disableShareEv:function(){n.hideShareMenu({menus:["shareAppMessage","shareTimeline"]})},obtainPagePath:function(){var e=getCurrentPages(),n=e[e.length-1].route,r=e[e.length-1].$page.fullPath;-1==r.indexOf("/pagesA/login")&&-1==r.indexOf("/pagesB/register")&&-1==r.indexOf("/pagesB/password")&&(t.setStorageSync("url",n),t.setStorageSync("page-path-options",r))},countCustomer:function(e){t.getSystemInfoSync();var n=[];""!==e&&n.push(e),t.showActionSheet({itemList:n,itemColor:"#1981ff",success:function(e){t.makePhoneCall({phoneNumber:n[e.tapIndex]})}})},uploadImg:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=[];return t.chooseImage({count:e,sizeType:["compressed"],sourceType:["album","camera"],success:function(t){var e=t.tempFilePaths;console.log(e),e.forEach((function(t){n.push(t)}))}}),n},wxOpenSet:function(){t.authorize({scope:"scope.userInfo",success:function(t){},fail:function(e){t.showModal({content:"检测到您没打开获取信息功能权限,是否去设置打开?",confirmText:"确认",cancelText:"取消",success:function(e){e.confirm?t.openSetting({success:function(t){console.log(t)}}):console.log("取消")}})}})},goFlag:!0,goThere:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:30.656693,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:104.136425,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"四川省成都市成华区双店路B口";this.goFlag?(this.goFlag=!1,n.getLocation({type:"wgs84",success:function(t){n.openLocation({latitude:parseFloat(e),longitude:parseFloat(o),address:i,fail:function(t){r.showToast("地址信息错误")}})}}),setTimeout((function(){t.goFlag=!0}),2e3)):r.showToast("请勿多次点击")},saveImg:function(e){var r=e.slice(0,4);"http"==r?t.downloadFile({url:e,success:function(e){t.saveImageToPhotosAlbum({filePath:e.tempFilePath,success:function(){t.showToast({title:"保存成功",icon:"error"})},fail:function(){t.showToast({title:"保存失败",icon:"error"})}})}}):n.saveFile({tempFilePath:e,success:function(t){}})},getBase64ImageUrl:function(t){var e=t;e=n.arrayBufferToBase64(n.base64ToArrayBuffer(e));var r="data:image/png;base64,"+e;return r},analysis:function(e){var n=unescape(e);n=n.split("invite_code=")[1],t.setStorageSync("invite_code_Other",n),n&&!t.getStorageSync("openid")&&this.loginEv()},timeToken:null,refreshToken:function(){var t=this;clearInterval(this.timeToken),this.loginEv(),this.timeToken=setInterval((function(){t.loginEv()}),54e5)},loginEv:function(){var e=t.getStorageSync("invite_code_Other");t.login({provider:"weixin",success:function(n){var r={code:n.code,invite_code:e};t.request({url:"".concat(getApp().globalData.hostapi,"/index/getOpenId"),method:"post",data:r,success:function(e){""!=e.data.data.token&&(console.log("刷新了token"),t.setStorageSync("token",e.data.data.token),t.setStorageSync("openid",e.data.data.openid),t.setStorageSync("expire",e.data.data.expire),t.setStorageSync("phone_active",e.data.data.phone_active),t.setStorageSync("is_active",e.data.data.is_active),t.setStorageSync("invite_code",e.data.data.invite_code))}})}})}},o={tools:r};e.default=o}).call(this,n("543d")["default"],n("bc2e")["default"])},9523:function(t,e,n){var r=n("a395");t.exports=function(t,e,n){return e=r(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},t.exports.__esModule=!0,t.exports["default"]=t.exports},"970b":function(t,e){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.__esModule=!0,t.exports["default"]=t.exports},"9b42":function(t,e){t.exports=function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i,a,s=[],c=!0,u=!1;try{if(i=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(s.push(r.value),s.length!==e);c=!0);}catch(l){u=!0,o=l}finally{try{if(!c&&null!=n["return"]&&(a=n["return"](),Object(a)!==a))return}finally{if(u)throw o}}return s}},t.exports.__esModule=!0,t.exports["default"]=t.exports},a395:function(t,e,n){var r=n("7037")["default"],o=n("e50d");t.exports=function(t){var e=o(t,"string");return"symbol"===r(e)?e:String(e)},t.exports.__esModule=!0,t.exports["default"]=t.exports},b0dd:function(t,e,n){"use strict";var r=n("4ea4");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=r(n("9523"));function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function a(t){for(var e=1;e-1||"function"===typeof s[t])}i[a]=function(){var t={};for(var e in s)u(e)&&(t[e]=s[e]);return t}();var l=i[a];e.default=l},c135:function(t,e){t.exports=function(t){if(Array.isArray(t))return t},t.exports.__esModule=!0,t.exports["default"]=t.exports},c240:function(t,e){t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.__esModule=!0,t.exports["default"]=t.exports},c424:function(t,e,n){(function(e){var r=n("970b"),o=n("5bc3"),i={KEY_ERR:311,KEY_ERR_MSG:"key格式错误",PARAM_ERR:310,PARAM_ERR_MSG:"请求参数信息有误",SYSTEM_ERR:600,SYSTEM_ERR_MSG:"系统错误",WX_ERR_CODE:1e3,WX_OK_CODE:200},a="https://apis.map.qq.com/ws/",s=a+"place/v1/suggestion",c={driving:"driving",transit:"transit"},u={safeAdd:function(t,e){var n=(65535&t)+(65535&e),r=(t>>16)+(e>>16)+(n>>16);return r<<16|65535&n},bitRotateLeft:function(t,e){return t<>>32-e},md5cmn:function(t,e,n,r,o,i){return this.safeAdd(this.bitRotateLeft(this.safeAdd(this.safeAdd(e,t),this.safeAdd(r,i)),o),n)},md5ff:function(t,e,n,r,o,i,a){return this.md5cmn(e&n|~e&r,t,e,o,i,a)},md5gg:function(t,e,n,r,o,i,a){return this.md5cmn(e&r|n&~r,t,e,o,i,a)},md5hh:function(t,e,n,r,o,i,a){return this.md5cmn(e^n^r,t,e,o,i,a)},md5ii:function(t,e,n,r,o,i,a){return this.md5cmn(n^(e|~r),t,e,o,i,a)},binlMD5:function(t,e){var n,r,o,i,a;t[e>>5]|=128<>>9<<4)]=e;var s=1732584193,c=-271733879,u=-1732584194,l=271733878;for(n=0;n>5]>>>e%32&255);return n},rstr2binl:function(t){var e,n=[];for(n[(t.length>>2)-1]=void 0,e=0;e>5]|=(255&t.charCodeAt(e/8))<16&&(o=this.binlMD5(o,8*t.length)),n=0;n<16;n+=1)i[n]=909522486^o[n],a[n]=1549556828^o[n];return r=this.binlMD5(i.concat(this.rstr2binl(e)),512+8*e.length),this.binl2rstr(this.binlMD5(a.concat(r),640))},rstr2hex:function(t){var e,n,r="";for(n=0;n>>4&15)+"0123456789abcdef".charAt(15&e);return r},str2rstrUTF8:function(t){return unescape(encodeURIComponent(t))},rawMD5:function(t){return this.rstrMD5(this.str2rstrUTF8(t))},hexMD5:function(t){return this.rstr2hex(this.rawMD5(t))},rawHMACMD5:function(t,e){return this.rstrHMACMD5(this.str2rstrUTF8(t),str2rstrUTF8(e))},hexHMACMD5:function(t,e){return this.rstr2hex(this.rawHMACMD5(t,e))},md5:function(t,e,n){return e?n?this.rawHMACMD5(e,t):this.hexHMACMD5(e,t):n?this.rawMD5(t):this.hexMD5(t)},getSig:function(t,e,n,r){var o=null,i=[];return Object.keys(t).sort().forEach((function(e){i.push(e+"="+t[e])})),"search"==n&&(o="/ws/place/v1/search?"+i.join("&")+e),"suggest"==n&&(o="/ws/place/v1/suggestion?"+i.join("&")+e),"reverseGeocoder"==n&&(o="/ws/geocoder/v1/?"+i.join("&")+e),"geocoder"==n&&(o="/ws/geocoder/v1/?"+i.join("&")+e),"getCityList"==n&&(o="/ws/district/v1/list?"+i.join("&")+e),"getDistrictByCityId"==n&&(o="/ws/district/v1/getchildren?"+i.join("&")+e),"calculateDistance"==n&&(o="/ws/distance/v1/?"+i.join("&")+e),"direction"==n&&(o="/ws/direction/v1/"+r+"?"+i.join("&")+e),o=this.md5(o),o},location2query:function(t){if("string"==typeof t)return t;for(var e="",n=0;n