panhui hace 6 años
padre
commit
1fd31b1039

+ 169 - 101
package-lock.json

@@ -896,7 +896,6 @@
       "version": "7.8.4",
       "resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.8.4.tgz",
       "integrity": "sha1-159aIED3yqJNU+VjqtScvAVYEwg=",
-      "dev": true,
       "requires": {
         "regenerator-runtime": "^0.13.2"
       }
@@ -1106,11 +1105,15 @@
       "integrity": "sha1-aQoUdbhPKohP0HzXl8APXzE1bqg=",
       "dev": true
     },
+    "@vant/icons": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npm.taobao.org/@vant/icons/download/@vant/icons-1.2.1.tgz",
+      "integrity": "sha1-MJ/suXpJiYZvBFzmdrVFxFRwHI8="
+    },
     "@vue/babel-helper-vue-jsx-merge-props": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.0.0.tgz",
-      "integrity": "sha1-BI/leZWNpAj7eosqPsBQtQpmEEA=",
-      "dev": true
+      "integrity": "sha1-BI/leZWNpAj7eosqPsBQtQpmEEA="
     },
     "@vue/babel-plugin-transform-vue-jsx": {
       "version": "1.1.2",
@@ -1758,7 +1761,6 @@
       "version": "6.11.0",
       "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.11.0.tgz",
       "integrity": "sha1-w2B8vIrjktilpTbyWyH45fP4f+k=",
-      "dev": true,
       "requires": {
         "fast-deep-equal": "^3.1.1",
         "fast-json-stable-stringify": "^2.0.0",
@@ -1904,11 +1906,16 @@
       "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
       "dev": true
     },
+    "asap": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npm.taobao.org/asap/download/asap-2.0.6.tgz",
+      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
+      "optional": true
+    },
     "asn1": {
       "version": "0.2.4",
       "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz",
       "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=",
-      "dev": true,
       "requires": {
         "safer-buffer": "~2.1.0"
       }
@@ -1954,8 +1961,7 @@
     "assert-plus": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz",
-      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-      "dev": true
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
     },
     "assign-symbols": {
       "version": "1.0.0",
@@ -1987,8 +1993,7 @@
     "asynckit": {
       "version": "0.4.0",
       "resolved": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz",
-      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
-      "dev": true
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
     },
     "atob": {
       "version": "2.1.2",
@@ -2022,14 +2027,43 @@
     "aws-sign2": {
       "version": "0.7.0",
       "resolved": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz",
-      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
-      "dev": true
+      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
     },
     "aws4": {
       "version": "1.9.1",
       "resolved": "https://registry.npm.taobao.org/aws4/download/aws4-1.9.1.tgz?cache=0&sync_timestamp=1578958189607&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faws4%2Fdownload%2Faws4-1.9.1.tgz",
-      "integrity": "sha1-fjPY99RJs/ZzzXLeuavcVS2+Uo4=",
-      "dev": true
+      "integrity": "sha1-fjPY99RJs/ZzzXLeuavcVS2+Uo4="
+    },
+    "axios": {
+      "version": "0.19.2",
+      "resolved": "https://registry.npm.taobao.org/axios/download/axios-0.19.2.tgz",
+      "integrity": "sha1-PqNsXYgY0NX4qKl6bTa4bNwAyyc=",
+      "requires": {
+        "follow-redirects": "1.5.10"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
+          "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "follow-redirects": {
+          "version": "1.5.10",
+          "resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.5.10.tgz",
+          "integrity": "sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio=",
+          "requires": {
+            "debug": "=3.1.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+        }
+      }
     },
     "babel-loader": {
       "version": "8.0.6",
@@ -2129,7 +2163,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz",
       "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
-      "dev": true,
       "requires": {
         "tweetnacl": "^0.14.3"
       }
@@ -2149,8 +2182,7 @@
     "big.js": {
       "version": "5.2.2",
       "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz",
-      "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=",
-      "dev": true
+      "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg="
     },
     "binary-extensions": {
       "version": "1.13.1",
@@ -2621,8 +2653,7 @@
     "caseless": {
       "version": "0.12.0",
       "resolved": "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz",
-      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
-      "dev": true
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
     },
     "chalk": {
       "version": "2.4.2",
@@ -2945,7 +2976,6 @@
       "version": "1.0.8",
       "resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz",
       "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=",
-      "dev": true,
       "requires": {
         "delayed-stream": "~1.0.0"
       }
@@ -3195,8 +3225,7 @@
     "core-util-is": {
       "version": "1.0.2",
       "resolved": "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz",
-      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
-      "dev": true
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
     },
     "cosmiconfig": {
       "version": "5.2.1",
@@ -3485,11 +3514,15 @@
       "version": "1.14.1",
       "resolved": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz",
       "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
-      "dev": true,
       "requires": {
         "assert-plus": "^1.0.0"
       }
     },
+    "date-fns": {
+      "version": "2.9.0",
+      "resolved": "https://registry.npm.taobao.org/date-fns/download/date-fns-2.9.0.tgz",
+      "integrity": "sha1-0LF1pcN+1fF7l+InK7wfpa7Gd9I="
+    },
     "de-indent": {
       "version": "1.0.2",
       "resolved": "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz",
@@ -3758,8 +3791,7 @@
     "delayed-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz",
-      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
-      "dev": true
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
     },
     "depd": {
       "version": "1.1.2",
@@ -3941,7 +3973,6 @@
       "version": "0.1.2",
       "resolved": "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz",
       "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
-      "dev": true,
       "requires": {
         "jsbn": "~0.1.0",
         "safer-buffer": "^2.1.0"
@@ -3989,8 +4020,7 @@
     "emojis-list": {
       "version": "2.1.0",
       "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz",
-      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
-      "dev": true
+      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
     },
     "encodeurl": {
       "version": "1.0.2",
@@ -4040,7 +4070,6 @@
       "version": "0.1.7",
       "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz",
       "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=",
-      "dev": true,
       "requires": {
         "prr": "~1.0.1"
       }
@@ -4314,8 +4343,7 @@
     "extend": {
       "version": "3.0.2",
       "resolved": "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz",
-      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=",
-      "dev": true
+      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo="
     },
     "extend-shallow": {
       "version": "3.0.2",
@@ -4406,14 +4434,12 @@
     "extsprintf": {
       "version": "1.3.0",
       "resolved": "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz",
-      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
-      "dev": true
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
     },
     "fast-deep-equal": {
       "version": "3.1.1",
       "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.1.tgz",
-      "integrity": "sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ=",
-      "dev": true
+      "integrity": "sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ="
     },
     "fast-glob": {
       "version": "2.2.7",
@@ -4432,8 +4458,7 @@
     "fast-json-stable-stringify": {
       "version": "2.1.0",
       "resolved": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=",
-      "dev": true
+      "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM="
     },
     "faye-websocket": {
       "version": "0.10.0",
@@ -4587,14 +4612,12 @@
     "forever-agent": {
       "version": "0.6.1",
       "resolved": "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz",
-      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
-      "dev": true
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
     },
     "form-data": {
       "version": "2.3.3",
       "resolved": "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz",
       "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=",
-      "dev": true,
       "requires": {
         "asynckit": "^0.4.0",
         "combined-stream": "^1.0.6",
@@ -5265,7 +5288,6 @@
       "version": "0.1.7",
       "resolved": "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz",
       "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
-      "dev": true,
       "requires": {
         "assert-plus": "^1.0.0"
       }
@@ -5350,8 +5372,7 @@
     "graceful-fs": {
       "version": "4.2.3",
       "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.3.tgz?cache=0&sync_timestamp=1571871306808&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgraceful-fs%2Fdownload%2Fgraceful-fs-4.2.3.tgz",
-      "integrity": "sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM=",
-      "dev": true
+      "integrity": "sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM="
     },
     "gzip-size": {
       "version": "5.1.1",
@@ -5372,14 +5393,12 @@
     "har-schema": {
       "version": "2.0.0",
       "resolved": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz",
-      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
-      "dev": true
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
     },
     "har-validator": {
       "version": "5.1.3",
       "resolved": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz",
       "integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=",
-      "dev": true,
       "requires": {
         "ajv": "^6.5.5",
         "har-schema": "^2.0.0"
@@ -5731,7 +5750,6 @@
       "version": "1.2.0",
       "resolved": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz",
       "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
-      "dev": true,
       "requires": {
         "assert-plus": "^1.0.0",
         "jsprim": "^1.2.2",
@@ -5786,6 +5804,12 @@
       "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=",
       "dev": true
     },
+    "image-size": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz",
+      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+      "optional": true
+    },
     "import-cwd": {
       "version": "2.1.0",
       "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz",
@@ -6177,8 +6201,7 @@
     "is-typedarray": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz",
-      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
-      "dev": true
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
     },
     "is-windows": {
       "version": "1.0.2",
@@ -6213,8 +6236,7 @@
     "isstream": {
       "version": "0.1.2",
       "resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
-      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
-      "dev": true
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
     },
     "javascript-stringify": {
       "version": "2.0.1",
@@ -6283,8 +6305,7 @@
     "jsbn": {
       "version": "0.1.1",
       "resolved": "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz",
-      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
-      "dev": true
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
     },
     "jsesc": {
       "version": "2.5.2",
@@ -6301,20 +6322,17 @@
     "json-schema": {
       "version": "0.2.3",
       "resolved": "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz?cache=0&sync_timestamp=1567740732347&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-schema%2Fdownload%2Fjson-schema-0.2.3.tgz",
-      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
-      "dev": true
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
     },
     "json-schema-traverse": {
       "version": "0.4.1",
       "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=",
-      "dev": true
+      "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA="
     },
     "json-stringify-safe": {
       "version": "5.0.1",
       "resolved": "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz",
-      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
-      "dev": true
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
     },
     "json3": {
       "version": "3.3.3",
@@ -6344,7 +6362,6 @@
       "version": "1.4.1",
       "resolved": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz",
       "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
-      "dev": true,
       "requires": {
         "assert-plus": "1.0.0",
         "extsprintf": "1.3.0",
@@ -6392,6 +6409,58 @@
         "invert-kv": "^2.0.0"
       }
     },
+    "less": {
+      "version": "3.10.3",
+      "resolved": "https://registry.npm.taobao.org/less/download/less-3.10.3.tgz",
+      "integrity": "sha1-QXoJddXu7MUs/0vPo8CdNXgeZ5I=",
+      "requires": {
+        "clone": "^2.1.2",
+        "errno": "^0.1.1",
+        "graceful-fs": "^4.1.2",
+        "image-size": "~0.5.0",
+        "mime": "^1.4.1",
+        "mkdirp": "^0.5.0",
+        "promise": "^7.1.1",
+        "request": "^2.83.0",
+        "source-map": "~0.6.0"
+      },
+      "dependencies": {
+        "clone": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz",
+          "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+        },
+        "mime": {
+          "version": "1.6.0",
+          "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz",
+          "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=",
+          "optional": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "optional": true
+        }
+      }
+    },
+    "less-loader": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npm.taobao.org/less-loader/download/less-loader-5.0.0.tgz",
+      "integrity": "sha1-SY3eOmxsT4h0WO6e0/CGoSrRtGY=",
+      "requires": {
+        "clone": "^2.1.1",
+        "loader-utils": "^1.1.0",
+        "pify": "^4.0.1"
+      },
+      "dependencies": {
+        "clone": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz",
+          "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+        }
+      }
+    },
     "leven": {
       "version": "3.1.0",
       "resolved": "https://registry.npm.taobao.org/leven/download/leven-3.1.0.tgz",
@@ -6423,7 +6492,6 @@
       "version": "1.2.3",
       "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.2.3.tgz",
       "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=",
-      "dev": true,
       "requires": {
         "big.js": "^5.2.2",
         "emojis-list": "^2.0.0",
@@ -6434,7 +6502,6 @@
           "version": "1.0.1",
           "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz",
           "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=",
-          "dev": true,
           "requires": {
             "minimist": "^1.2.0"
           }
@@ -6705,14 +6772,12 @@
     "mime-db": {
       "version": "1.43.0",
       "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.43.0.tgz?cache=0&sync_timestamp=1578281193492&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.43.0.tgz",
-      "integrity": "sha1-ChLgUCZQ5HPXNVNQUOfI9OtPrlg=",
-      "dev": true
+      "integrity": "sha1-ChLgUCZQ5HPXNVNQUOfI9OtPrlg="
     },
     "mime-types": {
       "version": "2.1.26",
       "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.26.tgz?cache=0&sync_timestamp=1578282566609&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-types%2Fdownload%2Fmime-types-2.1.26.tgz",
       "integrity": "sha1-nJIfwJt+FJpl39wNpNIJlyALCgY=",
-      "dev": true,
       "requires": {
         "mime-db": "1.43.0"
       }
@@ -6784,8 +6849,7 @@
     "minimist": {
       "version": "1.2.0",
       "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz",
-      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-      "dev": true
+      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
     },
     "minipass": {
       "version": "3.1.1",
@@ -6874,7 +6938,6 @@
       "version": "0.5.1",
       "resolved": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmkdirp%2Fdownload%2Fmkdirp-0.5.1.tgz",
       "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
-      "dev": true,
       "requires": {
         "minimist": "0.0.8"
       },
@@ -6882,8 +6945,7 @@
         "minimist": {
           "version": "0.0.8",
           "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz",
-          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
-          "dev": true
+          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
         }
       }
     },
@@ -7123,8 +7185,7 @@
     "oauth-sign": {
       "version": "0.9.0",
       "resolved": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz",
-      "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=",
-      "dev": true
+      "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU="
     },
     "object-assign": {
       "version": "4.1.1",
@@ -7565,14 +7626,12 @@
     "performance-now": {
       "version": "2.1.0",
       "resolved": "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz",
-      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
-      "dev": true
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
     },
     "pify": {
       "version": "4.0.1",
       "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz",
-      "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=",
-      "dev": true
+      "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE="
     },
     "pinkie": {
       "version": "2.0.4",
@@ -8159,6 +8218,15 @@
       "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=",
       "dev": true
     },
+    "promise": {
+      "version": "7.3.1",
+      "resolved": "https://registry.npm.taobao.org/promise/download/promise-7.3.1.tgz",
+      "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=",
+      "optional": true,
+      "requires": {
+        "asap": "~2.0.3"
+      }
+    },
     "promise-inflight": {
       "version": "1.0.1",
       "resolved": "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz",
@@ -8178,8 +8246,7 @@
     "prr": {
       "version": "1.0.1",
       "resolved": "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz",
-      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
-      "dev": true
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
     },
     "pseudomap": {
       "version": "1.0.2",
@@ -8190,8 +8257,7 @@
     "psl": {
       "version": "1.7.0",
       "resolved": "https://registry.npm.taobao.org/psl/download/psl-1.7.0.tgz",
-      "integrity": "sha1-8cTEeo75cWfepda79IFtc26ISjw=",
-      "dev": true
+      "integrity": "sha1-8cTEeo75cWfepda79IFtc26ISjw="
     },
     "public-encrypt": {
       "version": "4.0.3",
@@ -8243,8 +8309,7 @@
     "punycode": {
       "version": "2.1.1",
       "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz",
-      "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=",
-      "dev": true
+      "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew="
     },
     "q": {
       "version": "1.5.1",
@@ -8255,8 +8320,7 @@
     "qs": {
       "version": "6.5.2",
       "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
-      "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=",
-      "dev": true
+      "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY="
     },
     "query-string": {
       "version": "4.3.4",
@@ -8393,8 +8457,7 @@
     "regenerator-runtime": {
       "version": "0.13.3",
       "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.3.tgz",
-      "integrity": "sha1-fPanfY9cb2Drc8X8GVWyzrAea/U=",
-      "dev": true
+      "integrity": "sha1-fPanfY9cb2Drc8X8GVWyzrAea/U="
     },
     "regenerator-transform": {
       "version": "0.14.1",
@@ -8548,7 +8611,6 @@
       "version": "2.88.0",
       "resolved": "https://registry.npm.taobao.org/request/download/request-2.88.0.tgz",
       "integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=",
-      "dev": true,
       "requires": {
         "aws-sign2": "~0.7.0",
         "aws4": "^1.8.0",
@@ -8705,8 +8767,7 @@
     "safe-buffer": {
       "version": "5.1.2",
       "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
-      "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=",
-      "dev": true
+      "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
     },
     "safe-regex": {
       "version": "1.1.0",
@@ -8720,8 +8781,7 @@
     "safer-buffer": {
       "version": "2.1.2",
       "resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz",
-      "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=",
-      "dev": true
+      "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
     },
     "sax": {
       "version": "1.2.4",
@@ -9302,7 +9362,6 @@
       "version": "1.16.1",
       "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
       "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=",
-      "dev": true,
       "requires": {
         "asn1": "~0.2.3",
         "assert-plus": "^1.0.0",
@@ -9750,7 +9809,6 @@
       "version": "2.4.3",
       "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.4.3.tgz",
       "integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=",
-      "dev": true,
       "requires": {
         "psl": "^1.1.24",
         "punycode": "^1.4.1"
@@ -9759,8 +9817,7 @@
         "punycode": {
           "version": "1.4.1",
           "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz",
-          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-          "dev": true
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
         }
       }
     },
@@ -9786,7 +9843,6 @@
       "version": "0.6.0",
       "resolved": "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz",
       "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
-      "dev": true,
       "requires": {
         "safe-buffer": "^5.0.1"
       }
@@ -9794,8 +9850,7 @@
     "tweetnacl": {
       "version": "0.14.5",
       "resolved": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz",
-      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
-      "dev": true
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
     },
     "type-fest": {
       "version": "0.6.0",
@@ -9987,7 +10042,6 @@
       "version": "4.2.2",
       "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz",
       "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=",
-      "dev": true,
       "requires": {
         "punycode": "^2.1.0"
       }
@@ -10093,8 +10147,7 @@
     "uuid": {
       "version": "3.4.0",
       "resolved": "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuuid%2Fdownload%2Fuuid-3.4.0.tgz",
-      "integrity": "sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=",
-      "dev": true
+      "integrity": "sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4="
     },
     "validate-npm-package-license": {
       "version": "3.0.4",
@@ -10106,6 +10159,17 @@
         "spdx-expression-parse": "^3.0.0"
       }
     },
+    "vant": {
+      "version": "2.4.6",
+      "resolved": "https://registry.npm.taobao.org/vant/download/vant-2.4.6.tgz?cache=0&sync_timestamp=1580805748194&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvant%2Fdownload%2Fvant-2.4.6.tgz",
+      "integrity": "sha1-PHqhe9i2kTiBXTV9n7u6aZ3IWfQ=",
+      "requires": {
+        "@babel/runtime": "7.x",
+        "@vant/icons": "1.2.1",
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
+        "vue-lazyload": "1.2.3"
+      }
+    },
     "vary": {
       "version": "1.1.2",
       "resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
@@ -10122,7 +10186,6 @@
       "version": "1.10.0",
       "resolved": "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz",
       "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
-      "dev": true,
       "requires": {
         "assert-plus": "^1.0.0",
         "core-util-is": "1.0.2",
@@ -10146,6 +10209,11 @@
       "integrity": "sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=",
       "dev": true
     },
+    "vue-lazyload": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npm.taobao.org/vue-lazyload/download/vue-lazyload-1.2.3.tgz?cache=0&sync_timestamp=1568801872621&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-lazyload%2Fdownload%2Fvue-lazyload-1.2.3.tgz",
+      "integrity": "sha1-kB+ewVx+bKeHgaK65KNDaGve2yw="
+    },
     "vue-loader": {
       "version": "15.8.3",
       "resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-15.8.3.tgz?cache=0&sync_timestamp=1580888394754&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-15.8.3.tgz",

+ 25 - 20
package.json

@@ -1,22 +1,27 @@
 {
-  "name": "maskmall",
-  "version": "0.1.0",
-  "private": true,
-  "scripts": {
-    "serve": "vue-cli-service serve",
-    "build": "vue-cli-service build"
-  },
-  "dependencies": {
-    "core-js": "^3.4.4",
-    "vue": "^2.6.10",
-    "vue-router": "^3.1.3",
-    "vuex": "^3.1.2"
-  },
-  "devDependencies": {
-    "@vue/cli-plugin-babel": "^4.1.0",
-    "@vue/cli-plugin-router": "^4.1.0",
-    "@vue/cli-plugin-vuex": "^4.1.0",
-    "@vue/cli-service": "^4.1.0",
-    "vue-template-compiler": "^2.6.10"
-  }
+    "name": "maskmall",
+    "version": "0.1.0",
+    "private": true,
+    "scripts": {
+        "serve": "vue-cli-service serve",
+        "build": "vue-cli-service build"
+    },
+    "dependencies": {
+        "axios": "^0.19.0",
+        "core-js": "^3.4.3",
+        "date-fns": "^2.8.1",
+        "less": "^3.10.3",
+        "less-loader": "^5.0.0",
+        "vant": "^2.4.6",
+        "vue": "^2.6.10",
+        "vue-router": "^3.1.3",
+        "vuex": "^3.1.2"
+    },
+    "devDependencies": {
+        "@vue/cli-plugin-babel": "^4.1.0",
+        "@vue/cli-plugin-router": "^4.1.0",
+        "@vue/cli-plugin-vuex": "^4.1.0",
+        "@vue/cli-service": "^4.1.0",
+        "vue-template-compiler": "^2.6.10"
+    }
 }

+ 103 - 20
src/App.vue

@@ -1,32 +1,115 @@
 <template>
-  <div id="app">
-    <div id="nav">
-      <router-link to="/">Home</router-link> |
-      <router-link to="/about">About</router-link>
+    <div id="app">
+        <div class="container" id="container">
+            <van-nav-bar :title="title" v-if="!isWeixin" @click-left="onClickLeft" style="min-height:46px">
+                <img class="back" v-if="canBack" src="./assets/nav_icon_return.png" slot="left" alt />
+            </van-nav-bar>
+            <transition :name="'van-slide-' + (direction === 'forward' ? 'left' : 'right')">
+                <router-view
+                    class="router-view"
+                    ref="child"
+                    :minHeight="minHeight"
+                    :style="{ minHeight: minHeight + 'px', height: minHeight + 'px' }"
+                ></router-view>
+            </transition>
+        </div>
     </div>
-    <router-view/>
-  </div>
 </template>
+<script>
+import { mapState } from 'vuex';
+export default {
+    name: 'app',
+    data() {
+        return {
+            isLoading: false,
+            minHeight: 0
+        };
+    },
+    watch: {
+        $route() {
+            document.getElementById('container').scrollTop = 0;
+        }
+    },
+    computed: {
+        ...mapState(['direction', 'isWeixin', 'title']),
+        canBack() {
+            var name = this.$route.name;
+            var menuList = ['home', 'distribution', 'rank', 'user', 'login'];
+            if (menuList.indexOf(name) == -1) {
+                return true;
+            } else {
+                return false;
+            }
+        }
+    },
+    mounted() {
+        setTimeout(() => {
+            this.minHeight = document.getElementById('app').offsetHeight - (this.isWeixin ? 0 : 46);
+        });
+        this.$store.commit('updateIsWeixin', this.is_weixn());
+    },
+    methods: {
+        onRefresh() {
+            setTimeout(() => {
+                this.$toast('刷新成功');
+                this.isLoading = false;
+            }, 500);
+        },
+        onClickLeft() {
+            history.back();
+        },
+        is_weixn() {
+            var ua = navigator.userAgent.toLowerCase();
+            if (ua.match(/MicroMessenger/i) == 'micromessenger') {
+                return true;
+            } else {
+                return false;
+            }
+        }
+    }
+};
+</script>
 
-<style>
+<style lang="less">
 #app {
-  font-family: 'Avenir', Helvetica, Arial, sans-serif;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  text-align: center;
-  color: #2c3e50;
+    font-family: -apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei,
+        sans-serif;
+    font-size: 14px;
+    font-weight: 400;
+    line-height: 1.6;
+    position: absolute;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    top: 0;
+    overflow: hidden;
+    width: 100%;
+    height: 100%;
+    background-color: #f2f4f5;
 }
 
-#nav {
-  padding: 30px;
+.container {
+    overflow: hidden;
+    min-height: 100%;
+    height: 100%;
+    position: relative;
+    padding-bottom: 50px;
+    z-index: 2;
+    display: flex;
+    flex-direction: column;
 }
 
-#nav a {
-  font-weight: bold;
-  color: #2c3e50;
-}
+// .van-nav-bar {
+//   min-height: 46px;
+//   position: fixed !important;
+//   top: 0;
+//   left: 0;
+//   right: 0;
+//   z-index: 3 !important;
+// }
 
-#nav a.router-link-exact-active {
-  color: #42b983;
+.back {
+    width: 28px;
+    height: 28px;
 }
 </style>

BIN
src/assets/c_home_icon_miaosha.png


BIN
src/assets/c_home_icon_pintuan.png


BIN
src/assets/c_home_icon_songli.png


BIN
src/assets/c_home_icon_xianliang.png


BIN
src/assets/home_banner_01.png


BIN
src/assets/home_baonian_01.png


BIN
src/assets/home_baonian_02.png


BIN
src/assets/home_cipian_01.png


BIN
src/assets/home_cipian_02.png


BIN
src/assets/home_icon_logo.png


BIN
src/assets/home_shangpinlist_03.png


BIN
src/assets/home_shangpinlist_04.png


BIN
src/assets/home_shangpinlist_06.png


BIN
src/assets/logo.png


BIN
src/assets/nav_icon_return.png


BIN
src/assets/nav_icon_sousuo.png


BIN
src/assets/tabbar_icon_01.png


BIN
src/assets/tabbar_icon_01_pre.png


BIN
src/assets/tabbar_icon_02.png


BIN
src/assets/tabbar_icon_02_pre.png


BIN
src/assets/tabbar_icon_03.png


BIN
src/assets/tabbar_icon_03_pre.png


BIN
src/assets/tabbar_icon_04.png


BIN
src/assets/tabbar_icon_04_pre.png


+ 5 - 0
src/assets/去.bat

@@ -0,0 +1,5 @@
+@echo off& setlocal enabledelayedexpansion
+
+for /f "delims=" %%1 in ('dir /a /b') do (set wind=%%1
+
+ren "%%~1" "!wind:@3x=!")

+ 26 - 9
src/main.js

@@ -1,12 +1,29 @@
-import Vue from 'vue'
-import App from './App.vue'
-import router from './router'
-import store from './store'
+import Vue from 'vue';
+import App from './App.vue';
+import router from './router';
+import store from './store';
+import Vant from 'vant';
+import Formatters from '@/mixins/formatters';
+import PageMethods from '@/mixins/pageMethods';
+import http from './plugins/http';
+import './van.css';
+import './main.less';
 
-Vue.config.productionTip = false
+Vue.use(Vant);
+Vue.use(http);
 
+Vue.config.productionTip = false;
+
+var scale = (window.screen.width / 375).toFixed(2);
+var meta = document.createElement('meta');
+meta.name = 'viewport';
+meta.content = 'width=375,initial-scale=' + scale + ',user-scalable=no';
+document.head.appendChild(meta);
+
+Vue.mixin(Formatters);
+Vue.mixin(PageMethods);
 new Vue({
-  router,
-  store,
-  render: h => h(App)
-}).$mount('#app')
+    router,
+    store,
+    render: h => h(App)
+}).$mount('#app');

+ 336 - 0
src/main.less

@@ -0,0 +1,336 @@
+.fade-enter-active,
+.fade-leave-active {
+  transition: opacity 0.3s;
+}
+
+.fade-enter,
+.fade-leave-active {
+  opacity: 0;
+}
+
+.vux-pop-out-enter-active,
+.vux-pop-out-leave-active,
+.vux-pop-in-enter-active,
+.vux-pop-in-leave-active {
+  will-change: transform;
+  box-sizing : border-box;
+  width      : 100%;
+  height     : 100%;
+  position   : absolute;
+  top        : 0;
+  left       : 0;
+}
+
+.vux-pop-out-enter-active {
+  animation-name: popInLeft;
+}
+
+.vux-pop-out-leave-active {
+  animation-name: popOutRight;
+}
+
+.vux-pop-in-enter-active {
+  perspective   : 1000;
+  animation-name: popInRight;
+}
+
+.vux-pop-in-leave-active {
+  animation-name: popOutLeft;
+}
+
+@keyframes popInLeft {
+  from {
+    opacity  : 0;
+    transform: translate3d(-100%, 0, 0);
+  }
+
+  to {
+    opacity  : 1;
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes popOutLeft {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity  : 0;
+    transform: translate3d(-100%, 0, 0);
+  }
+}
+
+@keyframes popInRight {
+  from {
+    opacity  : 0;
+    transform: translate3d(100%, 0, 0);
+  }
+
+  to {
+    opacity  : 1;
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes popOutRight {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity  : 0;
+    transform: translate3d(100%, 0, 0);
+  }
+}
+
+.router-view {
+  animation-duration        : 0.3s;
+  animation-fill-mode       : both;
+  backface-visibility       : hidden;
+  //   transform            : translate3d(0, 0, 0);
+  flex-grow                 : 1;
+  box-sizing                : border-box;
+  overflow-x                : hidden;
+  overflow-y                : auto;
+  -webkit-overflow-scrolling: touch;
+}
+
+.bg {
+  background-position: center center;
+  background-repeat  : no-repeat;
+  background-size    : cover;
+}
+
+.van-swipe__indicator {
+  width        : 4px;
+  height       : 3px;
+  background   : rgba(255, 255, 255, 1);
+  border-radius: 2px;
+  opacity      : 1;
+
+  &.van-swipe__indicator--active {
+    width     : 11px;
+    background: rgba(255, 143, 0, 1);
+  }
+}
+
+.van-image {
+  display: block;
+}
+
+.van-search {
+  .van-cell__value {
+    line-height: 28px;
+  }
+}
+
+.my-dropdown {
+  .van-dropdown-menu__title::after {
+    border: 0px solid;
+  }
+}
+
+.van-button--primary {
+  background-color: #ff8f00;
+  border          : 1px solid #ff8f00;
+}
+
+.van-button--small {
+  height     : 26px;
+  line-height: 26px;
+}
+
+.my-icon {
+  min-width: 85px;
+}
+
+.my-icon .van-goods-action-icon__icon {
+  margin: 0 auto;
+  width : 24px;
+}
+
+.my-button .van-button__text {
+  font-weight: bold;
+  font-size  : 16px;
+}
+
+.van-button--normal {
+  font-size: 16px;
+}
+
+.van-grid-item__text {
+  color    : #333333;
+  font-size: 12px;
+}
+
+.menu-list {
+  .van-cell {
+    padding: 18px 15px;
+  }
+}
+
+.address {
+  .van-field__control:disabled {
+    font-size              : 16px;
+    color                  : rgba(0, 0, 0, 1);
+    -webkit-text-fill-color: #000;
+  }
+
+  .van-field__control {
+    &::-webkit-input-placeholder {
+      color                  : #AAACAD;
+      -webkit-text-fill-color: #AAACAD;
+    }
+  }
+}
+
+.address-content {
+  .van-field__control {
+    font-size: 16px;
+    color    : rgba(0, 0, 0, 1);
+
+    &::-webkit-input-placeholder {
+      font-size: 13px;
+      color    : #AAACAD;
+    }
+  }
+
+  .van-field__label {
+    font-size  : 14px;
+    font-weight: bold;
+    color      : rgba(0, 0, 0, 1);
+  }
+}
+
+.van-picker__cancel,
+.van-picker__confirm {
+
+  color: #FF8F00;
+
+}
+
+.change-content,
+.bind-phone {
+
+  .van-field__label {
+    font-weight: bold;
+    width      : 58px;
+  }
+
+  .van-cell__value {
+    font-weight: normal;
+    font-size  : 16px;
+    color      : rgba(0, 0, 0, 1);
+
+    .van-field__control::-webkit-input-placeholder {
+      font-size: 13px;
+      color    : #AAACAD;
+    }
+  }
+}
+
+.bind-phone {
+  .van-field__label {
+    width: 85px;
+  }
+}
+
+.van-tabs__line {
+  background-color: #FF7900;
+}
+
+.rule-title {
+  font-size  : 16px;
+  font-weight: bold;
+  color      : rgba(0, 0, 0, 1);
+  line-height: 50px;
+}
+
+.rule {
+  .van-cell__right-icon {
+    margin-top: 15px;
+  }
+}
+
+.van-nav-bar__left {
+  display    : flex;
+  align-items: center;
+  height     : 100%;
+}
+
+.van-nav-bar__title {
+  color      : #000;
+  font-weight: bold;
+}
+
+.van-button--disabled.van-button--primary {
+  opacity   : 1;
+  background: rgba(170, 172, 173, 1);
+  border    : 1px solid rgba(170, 172, 173, 1);
+}
+
+.van-uploader__input-wrapper {
+  width: 100%;
+}
+
+.van-stepper__input {
+  margin          : 0 5px;
+  background-color: #fff;
+  border          : 1px solid #f2f4f5;
+  position        : relative;
+  font-size       : 14px;
+  font-weight     : bold;
+  color           : rgba(0, 0, 0, 1);
+  line-height     : 20px;
+
+
+}
+
+.van-stepper {
+  position: relative;
+}
+
+.van-stepper::after {
+  content    : "%";
+  font-size  : 14px;
+  font-weight: bold;
+  color      : rgba(0, 0, 0, 1);
+  line-height: 20px;
+  position   : absolute;
+  right      : 45px;
+  top        : 4px;
+}
+
+.light .van-icon {
+  background-color: #fff;
+  border-color    : #FF8F00;
+  color           : #fff !important;
+}
+
+.light .van-radio__icon--checked .van-icon {
+  background-color: #FF8F00;
+}
+
+
+.nothing {
+  img {
+    display: block;
+    width  : 130px;
+    height : 120px;
+    margin : 85px auto 0;
+  }
+
+  p {
+    font-size  : 14px;
+    color      : rgba(170, 172, 173, 1);
+    line-height: 20px;
+    text-align : center;
+    margin     : 10px auto 0;
+  }
+
+  .van-button {
+    width : 200px;
+    margin: 35px auto;
+  }
+}

+ 13 - 0
src/mixins/formatters.js

@@ -0,0 +1,13 @@
+import { format } from 'date-fns';
+import { zhCN } from 'date-fns/locale';
+export default {
+    methods: {
+        dateFormatter(value) {
+            if (value) {
+                return format(new Date(value), 'yyyy-MM-dd', {
+                    locale: zhCN
+                });
+            }
+        }
+    }
+};

+ 26 - 0
src/mixins/pageMethods.js

@@ -0,0 +1,26 @@
+export default {
+    methods: {
+        goNext(name, query, replace) {
+            var _routerJson = {
+                name: name,
+                params: {
+                    isNext: 1
+                }
+            };
+            if (query) {
+                _routerJson.query = query;
+            }
+            if (replace) {
+                _routerJson.replace = replace;
+            }
+            this.$router.push(_routerJson);
+        },
+        checkPhone(phone) {
+            if (!/^1[3-9]\d{9}$/.test(phone)) {
+                return false;
+            } else {
+                return true;
+            }
+        }
+    }
+};

+ 112 - 0
src/plugins/http.js

@@ -0,0 +1,112 @@
+import axios from 'axios';
+import router from '../router';
+import qs from 'qs';
+/* eslint-disable */
+let baseUrl = 'http://localhost:8080';
+import { Toast } from "vant";
+switch (process.env.NODE_ENV) {
+    case 'development':
+        baseUrl = 'http://localhost:8080';
+        break;
+    case 'test':
+        baseUrl = 'http://localhost:8080';
+        break;
+    case 'production':
+        baseUrl = '..';
+        break;
+}
+const axiosInstance = axios.create({ baseURL: baseUrl });
+axiosInstance.interceptors.request.use(
+    function(config) {
+        config.headers = config.headers || {};
+        let token = localStorage.getItem('token');
+        if (token) {
+            config.headers['Authorization'] = 'Bearer ' + token;
+        }
+        return config;
+    },
+    function(error) {
+        return Promise.reject(error);
+    }
+);
+
+axiosInstance.interceptors.response.use(
+    function(response) {
+        return response;
+    },
+    function(error) {
+        console.log(error);
+        if (401 === error.response.status) {
+            if (router.currentRoute.meta.type !== 'login') {
+                router.replace({
+                    name: 'login',
+                    params: {
+                        from: router.currentRoute.name
+                    }
+                });
+            } else {}
+        }
+        return Promise.reject(error.response.data);
+    }
+);
+export default {
+    axios: axiosInstance,
+    install(_Vue, options) {
+        _Vue.prototype.$baseUrl = baseUrl;
+        _Vue.prototype.$axios = axiosInstance;
+        _Vue.prototype.$http = {
+            get(url, params) {
+                params = params || {};
+                return new Promise((resolve, reject) => {
+                    // Toast.loading({
+                    //     mask: true,
+                    //     message: "加载中...",
+                    //     loadingType: 'spinner',
+                    //     duration: 0
+                    // });
+                    axiosInstance
+                        .get(
+                            url, {
+                                params: params
+                            }, { withCredentials: true }
+                        )
+                        .then(res => {
+                            // Toast.clear();
+                            resolve(res.data);
+                        })
+                        .catch(e => {
+                            // Toast.clear();
+                            reject(e);
+                        });
+                });
+            },
+            post(url, body, options) {
+                options = options || {};
+                body = body || {};
+                if (!(body instanceof FormData)) {
+                    if (options.body !== 'json') {
+                        body = qs.stringify(body);
+                    }
+                }
+                return new Promise((resolve, reject) => {
+                    Toast.loading({
+                        mask: true,
+                        message: "加载中...",
+                        loadingType: 'spinner',
+                        duration: 0
+                    });
+                    axiosInstance
+                        .post(url, body, { withCredentials: true })
+                        .then(res => {
+                            Toast.clear();
+                            resolve(res.data);
+                        })
+                        .catch(e => {
+                            Toast.clear();
+                            reject(e);
+                        });
+                });
+            }
+        };
+    }
+};

+ 89 - 21
src/router/index.js

@@ -1,27 +1,95 @@
-import Vue from 'vue'
-import VueRouter from 'vue-router'
-import Home from '../views/Home.vue'
+import Vue from 'vue';
+import VueRouter from 'vue-router';
+import { Toast } from 'vant';
+import store from '../store';
+import Index from '@/views/Index';
+import http from '../plugins/http';
 
-Vue.use(VueRouter)
+Vue.use(VueRouter);
 
-const routes = [
-  {
+const routes = [{
     path: '/',
-    name: 'home',
-    component: Home
-  },
-  {
-    path: '/about',
-    name: 'about',
-    // route level code-splitting
-    // this generates a separate chunk (about.[hash].js) for this route
-    // which is lazy-loaded when the route is visited.
-    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
-  }
-]
+    component: Index,
+    children: [{
+            path: '/',
+            redirect: 'home'
+        },
+        {
+            path: '/home',
+            name: 'home',
+            component: () =>
+                import ('../views/Home.vue'),
+            meta: {
+                title: '面膜商城'
+            }
+        }
+    ]
+}];
 
 const router = new VueRouter({
-  routes
-})
+    routes
+});
 
-export default router
+router.beforeEach((to, from, next) => {
+    if (to.meta.title) {
+        store.commit('updateTitle', to.meta.title);
+    } else {
+        store.commit('updateTitle', '');
+    }
+    if (store.state.title) {
+        document.title = store.state.title;
+    } else {
+        document.title = "面膜商城"
+    }
+
+    if (to.query.invitor) {
+        store.commit('updateInvitor', to.query.invitor);
+        sessionStorage['invitor'] = to.query.invitor;
+    }
+
+    console.log(to);
+    if (to.params.isNext) {
+        store.commit('updateDirection', 'forward');
+    } else {
+        store.commit('updateDirection', 'reverse');
+    }
+    next();
+    // if (/\/http/.test(to.path)) {
+    //     let url = to.path.split('http')[1];
+    //     window.location.href = `http${url}`;
+    // } else {
+    //     Toast.loading({
+    //         mask: true,
+    //         message: '加载中...',
+    //         loadingType: 'spinner',
+    //         duration: 0
+    //     });
+    //     console.log(to.meta.type);
+    //     console.log(store.state.userInfo);
+    //     if ((!store.state.userInfo.id && !to.meta.type) || to.meta.type === 'user') {
+    //         http.axios
+    //             .get('/user/my')
+    //             .then(res => {
+    //                 store.commit('updateUserInfo', res.data);
+    //                 next();
+    //                 return;
+    //             })
+    //             .catch(() => {
+    //                 localStorage.removeItem('token');
+    //                 Toast.clear();
+    //                 next('/login');
+    //             });
+    //     } else if (store.state.userInfo.id && to.meta.type === 'login') {
+    //         Toast.clear();
+    //         next('/home');
+    //     } else {
+    //         next();
+    //     }
+    // }
+});
+
+router.afterEach((to, from) => {
+    Toast.clear();
+});
+
+export default router;

+ 32 - 12
src/store/index.js

@@ -1,15 +1,35 @@
-import Vue from 'vue'
-import Vuex from 'vuex'
+import Vue from 'vue';
+import Vuex from 'vuex';
 
-Vue.use(Vuex)
+Vue.use(Vuex);
 
 export default new Vuex.Store({
-  state: {
-  },
-  mutations: {
-  },
-  actions: {
-  },
-  modules: {
-  }
-})
+    state: {
+        direction: '',
+        userInfo: {},
+        isWeixin: true,
+        title: '',
+        chooseAddressId: 0,
+        invitor: ''
+    },
+    mutations: {
+        updateDirection(state, direction) {
+            state.direction = direction;
+        },
+        updateUserInfo(state, userInfo) {
+            state.userInfo = userInfo;
+        },
+        updateIsWeixin(state, isWeixin) {
+            state.isWeixin = isWeixin;
+        },
+        updateTitle(state, title) {
+            state.title = title;
+        },
+        updateChooseAddressId(state, id) {
+            state.chooseAddressId = id;
+        },
+        updateInvitor(state, invitor) {
+            state.invitor = invitor;
+        }
+    }
+});

+ 5965 - 0
src/van.css

@@ -0,0 +1,5965 @@
+@-webkit-keyframes van-slide-up-enter {
+    0% {
+        -webkit-transform: translate3d(0, 100%, 0);
+        transform: translate3d(0, 100%, 0)
+    }
+}
+
+@keyframes van-slide-up-enter {
+    0% {
+        -webkit-transform: translate3d(0, 100%, 0);
+        transform: translate3d(0, 100%, 0)
+    }
+}
+
+@-webkit-keyframes van-slide-up-leave {
+    to {
+        -webkit-transform: translate3d(0, 100%, 0);
+        transform: translate3d(0, 100%, 0)
+    }
+}
+
+@keyframes van-slide-up-leave {
+    to {
+        -webkit-transform: translate3d(0, 100%, 0);
+        transform: translate3d(0, 100%, 0)
+    }
+}
+
+@-webkit-keyframes van-slide-down-enter {
+    0% {
+        -webkit-transform: translate3d(0, -100%, 0);
+        transform: translate3d(0, -100%, 0)
+    }
+}
+
+@keyframes van-slide-down-enter {
+    0% {
+        -webkit-transform: translate3d(0, -100%, 0);
+        transform: translate3d(0, -100%, 0)
+    }
+}
+
+@-webkit-keyframes van-slide-down-leave {
+    to {
+        -webkit-transform: translate3d(0, -100%, 0);
+        transform: translate3d(0, -100%, 0)
+    }
+}
+
+@keyframes van-slide-down-leave {
+    to {
+        -webkit-transform: translate3d(0, -100%, 0);
+        transform: translate3d(0, -100%, 0)
+    }
+}
+
+@-webkit-keyframes van-slide-left-enter {
+    0% {
+        -webkit-transform: translate3d(-100%, 0, 0);
+        transform: translate3d(-100%, 0, 0)
+    }
+}
+
+@keyframes van-slide-left-enter {
+    0% {
+        -webkit-transform: translate3d(-100%, 0, 0);
+        transform: translate3d(-100%, 0, 0)
+    }
+}
+
+@-webkit-keyframes van-slide-left-leave {
+    to {
+        -webkit-transform: translate3d(-100%, 0, 0);
+        transform: translate3d(-100%, 0, 0)
+    }
+}
+
+@keyframes van-slide-left-leave {
+    to {
+        -webkit-transform: translate3d(-100%, 0, 0);
+        transform: translate3d(-100%, 0, 0)
+    }
+}
+
+@-webkit-keyframes van-slide-right-enter {
+    0% {
+        -webkit-transform: translate3d(100%, 0, 0);
+        transform: translate3d(100%, 0, 0)
+    }
+}
+
+@keyframes van-slide-right-enter {
+    0% {
+        -webkit-transform: translate3d(100%, 0, 0);
+        transform: translate3d(100%, 0, 0)
+    }
+}
+
+@-webkit-keyframes van-slide-right-leave {
+    to {
+        -webkit-transform: translate3d(100%, 0, 0);
+        transform: translate3d(100%, 0, 0)
+    }
+}
+
+@keyframes van-slide-right-leave {
+    to {
+        -webkit-transform: translate3d(100%, 0, 0);
+        transform: translate3d(100%, 0, 0)
+    }
+}
+
+@-webkit-keyframes van-fade-in {
+    0% {
+        opacity: 0
+    }
+    to {
+        opacity: 1
+    }
+}
+
+@keyframes van-fade-in {
+    0% {
+        opacity: 0
+    }
+    to {
+        opacity: 1
+    }
+}
+
+@-webkit-keyframes van-fade-out {
+    0% {
+        opacity: 1
+    }
+    to {
+        opacity: 0
+    }
+}
+
+@keyframes van-fade-out {
+    0% {
+        opacity: 1
+    }
+    to {
+        opacity: 0
+    }
+}
+
+@-webkit-keyframes van-rotate {
+    0% {
+        -webkit-transform: rotate(0deg);
+        transform: rotate(0deg)
+    }
+    to {
+        -webkit-transform: rotate(360deg);
+        transform: rotate(360deg)
+    }
+}
+
+@keyframes van-rotate {
+    0% {
+        -webkit-transform: rotate(0deg);
+        transform: rotate(0deg)
+    }
+    to {
+        -webkit-transform: rotate(360deg);
+        transform: rotate(360deg)
+    }
+}
+
+@-webkit-keyframes van-circular {
+    0% {
+        stroke-dasharray: 1, 200;
+        stroke-dashoffset: 0
+    }
+    50% {
+        stroke-dasharray: 90, 150;
+        stroke-dashoffset: -40
+    }
+    to {
+        stroke-dasharray: 90, 150;
+        stroke-dashoffset: -120
+    }
+}
+
+@keyframes van-circular {
+    0% {
+        stroke-dasharray: 1, 200;
+        stroke-dashoffset: 0
+    }
+    50% {
+        stroke-dasharray: 90, 150;
+        stroke-dashoffset: -40
+    }
+    to {
+        stroke-dasharray: 90, 150;
+        stroke-dashoffset: -120
+    }
+}
+
+@-webkit-keyframes van-notice-bar-play {
+    to {
+        -webkit-transform: translate3d(-100%, 0, 0);
+        transform: translate3d(-100%, 0, 0)
+    }
+}
+
+@keyframes van-notice-bar-play {
+    to {
+        -webkit-transform: translate3d(-100%, 0, 0);
+        transform: translate3d(-100%, 0, 0)
+    }
+}
+
+@-webkit-keyframes van-notice-bar-play-infinite {
+    to {
+        -webkit-transform: translate3d(-100%, 0, 0);
+        transform: translate3d(-100%, 0, 0)
+    }
+}
+
+@keyframes van-notice-bar-play-infinite {
+    to {
+        -webkit-transform: translate3d(-100%, 0, 0);
+        transform: translate3d(-100%, 0, 0)
+    }
+}
+
+@-webkit-keyframes van-skeleton-blink {
+    50% {
+        opacity: .6
+    }
+}
+
+@keyframes van-skeleton-blink {
+    50% {
+        opacity: .6
+    }
+}
+
+@-webkit-keyframes van-cursor-flicker {
+    0%,
+    to {
+        opacity: 0
+    }
+    50% {
+        opacity: 1
+    }
+}
+
+@keyframes van-cursor-flicker {
+    0%,
+    to {
+        opacity: 0
+    }
+    50% {
+        opacity: 1
+    }
+}
+
+html {
+    -webkit-tap-highlight-color: transparent
+}
+
+body {
+    margin: 0
+}
+
+a {
+    text-decoration: none
+}
+
+[class*=van-]:focus,
+a:focus,
+button:focus,
+input:focus,
+textarea:focus {
+    outline: 0
+}
+
+ol,
+ul {
+    margin: 0;
+    padding: 0;
+    list-style: none
+}
+
+button,
+input,
+textarea {
+    color: inherit;
+    font: inherit
+}
+
+.van-ellipsis {
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis
+}
+
+.van-multi-ellipsis--l2,
+.van-multi-ellipsis--l3 {
+    display: -webkit-box;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    -webkit-line-clamp: 2;
+    -webkit-box-orient: vertical
+}
+
+.van-multi-ellipsis--l3 {
+    -webkit-line-clamp: 3
+}
+
+.van-clearfix::after {
+    display: table;
+    clear: both;
+    content: ''
+}
+
+[class*=van-hairline]::after {
+    position: absolute;
+    box-sizing: border-box;
+    content: ' ';
+    pointer-events: none;
+    top: -50%;
+    right: -50%;
+    bottom: -50%;
+    left: -50%;
+    border: 0 solid #ebedf0;
+    -webkit-transform: scale(.5);
+    transform: scale(.5)
+}
+
+.van-hairline,
+.van-hairline--bottom,
+.van-hairline--left,
+.van-hairline--right,
+.van-hairline--surround,
+.van-hairline--top,
+.van-hairline--top-bottom {
+    position: relative
+}
+
+.van-hairline--top::after {
+    border-top-width: 1px
+}
+
+.van-hairline--left::after {
+    border-left-width: 1px
+}
+
+.van-hairline--right::after {
+    border-right-width: 1px
+}
+
+.van-hairline--bottom::after {
+    border-bottom-width: 1px
+}
+
+.van-hairline--top-bottom::after,
+.van-hairline-unset--top-bottom::after {
+    border-width: 1px 0
+}
+
+.van-hairline--surround::after {
+    border-width: 1px
+}
+
+.van-fade-enter-active {
+    -webkit-animation: .3s van-fade-in;
+    animation: .3s van-fade-in
+}
+
+.van-fade-leave-active {
+    -webkit-animation: .3s van-fade-out;
+    animation: .3s van-fade-out
+}
+
+.van-slide-up-enter-active {
+    -webkit-animation: van-slide-up-enter .3s both ease;
+    animation: van-slide-up-enter .3s both ease
+}
+
+.van-slide-up-leave-active {
+    -webkit-animation: van-slide-up-leave .3s both ease;
+    animation: van-slide-up-leave .3s both ease
+}
+
+.van-slide-down-enter-active {
+    -webkit-animation: van-slide-down-enter .3s both ease;
+    animation: van-slide-down-enter .3s both ease
+}
+
+.van-slide-down-leave-active {
+    -webkit-animation: van-slide-down-leave .3s both ease;
+    animation: van-slide-down-leave .3s both ease
+}
+
+.van-slide-left-enter-active {
+    -webkit-animation: van-slide-left-enter .3s both ease;
+    animation: van-slide-left-enter .3s both ease
+}
+
+.van-slide-left-leave-active {
+    -webkit-animation: van-slide-left-leave .3s both ease;
+    animation: van-slide-left-leave .3s both ease
+}
+
+.van-slide-right-enter-active {
+    -webkit-animation: van-slide-right-enter .3s both ease;
+    animation: van-slide-right-enter .3s both ease
+}
+
+.van-slide-right-leave-active {
+    -webkit-animation: van-slide-right-leave .3s both ease;
+    animation: van-slide-right-leave .3s both ease
+}
+
+.van-info {
+    position: absolute;
+    top: 0;
+    right: 0;
+    box-sizing: border-box;
+    min-width: 16px;
+    padding: 0 3px;
+    color: #fff;
+    font-weight: 500;
+    font-size: 12px;
+    font-family: PingFang SC, Helvetica Neue, Arial, sans-serif;
+    line-height: 14px;
+    text-align: center;
+    background-color: #ee0a24;
+    border: 1px solid #fff;
+    border-radius: 16px;
+    -webkit-transform: translate(50%, -50%);
+    transform: translate(50%, -50%);
+    -webkit-transform-origin: 100%;
+    transform-origin: 100%
+}
+
+.van-info--dot {
+    width: 8px;
+    min-width: 0;
+    height: 8px;
+    background-color: #ee0a24;
+    border-radius: 100%
+}
+
+@font-face {
+    font-weight: 400;
+    font-family: 'vant-icon';
+    font-style: normal;
+    font-display: auto;
+    src: url(https://img.yzcdn.cn/vant/vant-icon-0bc654.woff2) format('woff2'), url(https://img.yzcdn.cn/vant/vant-icon-0bc654.woff) format('woff'), url(https://img.yzcdn.cn/vant/vant-icon-0bc654.ttf) format('truetype')
+}
+
+.van-icon {
+    position: relative;
+    font: 14px/1 "vant-icon";
+    font-size: inherit;
+    text-rendering: auto;
+    -webkit-font-smoothing: antialiased
+}
+
+.van-icon,
+.van-icon::before {
+    display: inline-block
+}
+
+.van-icon-add-o:before {
+    content: "\F000"
+}
+
+.van-icon-add-square:before {
+    content: "\F001"
+}
+
+.van-icon-add:before {
+    content: "\F002"
+}
+
+.van-icon-after-sale:before {
+    content: "\F003"
+}
+
+.van-icon-aim:before {
+    content: "\F004"
+}
+
+.van-icon-alipay:before {
+    content: "\F005"
+}
+
+.van-icon-apps-o:before {
+    content: "\F006"
+}
+
+.van-icon-arrow-down:before {
+    content: "\F007"
+}
+
+.van-icon-arrow-left:before {
+    content: "\F008"
+}
+
+.van-icon-arrow-up:before {
+    content: "\F009"
+}
+
+.van-icon-arrow:before {
+    content: "\F00A"
+}
+
+.van-icon-ascending:before {
+    content: "\F00B"
+}
+
+.van-icon-audio:before {
+    content: "\F00C"
+}
+
+.van-icon-award-o:before {
+    content: "\F00D"
+}
+
+.van-icon-award:before {
+    content: "\F00E"
+}
+
+.van-icon-bag-o:before {
+    content: "\F00F"
+}
+
+.van-icon-bag:before {
+    content: "\F010"
+}
+
+.van-icon-balance-list-o:before {
+    content: "\F011"
+}
+
+.van-icon-balance-list:before {
+    content: "\F012"
+}
+
+.van-icon-balance-o:before {
+    content: "\F013"
+}
+
+.van-icon-balance-pay:before {
+    content: "\F014"
+}
+
+.van-icon-bar-chart-o:before {
+    content: "\F015"
+}
+
+.van-icon-bars:before {
+    content: "\F016"
+}
+
+.van-icon-bell:before {
+    content: "\F017"
+}
+
+.van-icon-bill-o:before {
+    content: "\F018"
+}
+
+.van-icon-bill:before {
+    content: "\F019"
+}
+
+.van-icon-birthday-cake-o:before {
+    content: "\F01A"
+}
+
+.van-icon-bookmark-o:before {
+    content: "\F01B"
+}
+
+.van-icon-bookmark:before {
+    content: "\F01C"
+}
+
+.van-icon-browsing-history-o:before {
+    content: "\F01D"
+}
+
+.van-icon-browsing-history:before {
+    content: "\F01E"
+}
+
+.van-icon-brush-o:before {
+    content: "\F01F"
+}
+
+.van-icon-bulb-o:before {
+    content: "\F020"
+}
+
+.van-icon-bullhorn-o:before {
+    content: "\F021"
+}
+
+.van-icon-calender-o:before {
+    content: "\F022"
+}
+
+.van-icon-card:before {
+    content: "\F023"
+}
+
+.van-icon-cart-circle-o:before {
+    content: "\F024"
+}
+
+.van-icon-cart-circle:before {
+    content: "\F025"
+}
+
+.van-icon-cart-o:before {
+    content: "\F026"
+}
+
+.van-icon-cart:before {
+    content: "\F027"
+}
+
+.van-icon-cash-back-record:before {
+    content: "\F028"
+}
+
+.van-icon-cash-on-deliver:before {
+    content: "\F029"
+}
+
+.van-icon-cashier-o:before {
+    content: "\F02A"
+}
+
+.van-icon-certificate:before {
+    content: "\F02B"
+}
+
+.van-icon-chart-trending-o:before {
+    content: "\F02C"
+}
+
+.van-icon-chat-o:before {
+    content: "\F02D"
+}
+
+.van-icon-chat:before {
+    content: "\F02E"
+}
+
+.van-icon-checked:before {
+    content: "\F02F"
+}
+
+.van-icon-circle:before {
+    content: "\F030"
+}
+
+.van-icon-clear:before {
+    content: "\F031"
+}
+
+.van-icon-clock-o:before {
+    content: "\F032"
+}
+
+.van-icon-clock:before {
+    content: "\F033"
+}
+
+.van-icon-close:before {
+    content: "\F034"
+}
+
+.van-icon-closed-eye:before {
+    content: "\F035"
+}
+
+.van-icon-cluster-o:before {
+    content: "\F036"
+}
+
+.van-icon-cluster:before {
+    content: "\F037"
+}
+
+.van-icon-column:before {
+    content: "\F038"
+}
+
+.van-icon-comment-circle-o:before {
+    content: "\F039"
+}
+
+.van-icon-comment-circle:before {
+    content: "\F03A"
+}
+
+.van-icon-comment-o:before {
+    content: "\F03B"
+}
+
+.van-icon-comment:before {
+    content: "\F03C"
+}
+
+.van-icon-completed:before {
+    content: "\F03D"
+}
+
+.van-icon-contact:before {
+    content: "\F03E"
+}
+
+.van-icon-coupon-o:before {
+    content: "\F03F"
+}
+
+.van-icon-coupon:before {
+    content: "\F040"
+}
+
+.van-icon-credit-pay:before {
+    content: "\F041"
+}
+
+.van-icon-cross:before {
+    content: "\F042"
+}
+
+.van-icon-debit-pay:before {
+    content: "\F043"
+}
+
+.van-icon-delete:before {
+    content: "\F044"
+}
+
+.van-icon-descending:before {
+    content: "\F045"
+}
+
+.van-icon-description:before {
+    content: "\F046"
+}
+
+.van-icon-desktop-o:before {
+    content: "\F047"
+}
+
+.van-icon-diamond-o:before {
+    content: "\F048"
+}
+
+.van-icon-diamond:before {
+    content: "\F049"
+}
+
+.van-icon-discount:before {
+    content: "\F04A"
+}
+
+.van-icon-down:before {
+    content: "\F04B"
+}
+
+.van-icon-ecard-pay:before {
+    content: "\F04C"
+}
+
+.van-icon-edit:before {
+    content: "\F04D"
+}
+
+.van-icon-ellipsis:before {
+    content: "\F04E"
+}
+
+.van-icon-empty:before {
+    content: "\F04F"
+}
+
+.van-icon-envelop-o:before {
+    content: "\F050"
+}
+
+.van-icon-exchange:before {
+    content: "\F051"
+}
+
+.van-icon-expand-o:before {
+    content: "\F052"
+}
+
+.van-icon-expand:before {
+    content: "\F053"
+}
+
+.van-icon-eye-o:before {
+    content: "\F054"
+}
+
+.van-icon-eye:before {
+    content: "\F055"
+}
+
+.van-icon-fail:before {
+    content: "\F056"
+}
+
+.van-icon-failure:before {
+    content: "\F057"
+}
+
+.van-icon-filter-o:before {
+    content: "\F058"
+}
+
+.van-icon-fire-o:before {
+    content: "\F059"
+}
+
+.van-icon-fire:before {
+    content: "\F05A"
+}
+
+.van-icon-flag-o:before {
+    content: "\F05B"
+}
+
+.van-icon-flower-o:before {
+    content: "\F05C"
+}
+
+.van-icon-free-postage:before {
+    content: "\F05D"
+}
+
+.van-icon-friends-o:before {
+    content: "\F05E"
+}
+
+.van-icon-friends:before {
+    content: "\F05F"
+}
+
+.van-icon-gem-o:before {
+    content: "\F060"
+}
+
+.van-icon-gem:before {
+    content: "\F061"
+}
+
+.van-icon-gift-card-o:before {
+    content: "\F062"
+}
+
+.van-icon-gift-card:before {
+    content: "\F063"
+}
+
+.van-icon-gift-o:before {
+    content: "\F064"
+}
+
+.van-icon-gift:before {
+    content: "\F065"
+}
+
+.van-icon-gold-coin-o:before {
+    content: "\F066"
+}
+
+.van-icon-gold-coin:before {
+    content: "\F067"
+}
+
+.van-icon-good-job-o:before {
+    content: "\F068"
+}
+
+.van-icon-good-job:before {
+    content: "\F069"
+}
+
+.van-icon-goods-collect-o:before {
+    content: "\F06A"
+}
+
+.van-icon-goods-collect:before {
+    content: "\F06B"
+}
+
+.van-icon-graphic:before {
+    content: "\F06C"
+}
+
+.van-icon-home-o:before {
+    content: "\F06D"
+}
+
+.van-icon-hot-o:before {
+    content: "\F06E"
+}
+
+.van-icon-hot-sale-o:before {
+    content: "\F06F"
+}
+
+.van-icon-hot-sale:before {
+    content: "\F070"
+}
+
+.van-icon-hot:before {
+    content: "\F071"
+}
+
+.van-icon-hotel-o:before {
+    content: "\F072"
+}
+
+.van-icon-idcard:before {
+    content: "\F073"
+}
+
+.van-icon-info-o:before {
+    content: "\F074"
+}
+
+.van-icon-info:before {
+    content: "\F075"
+}
+
+.van-icon-invition:before {
+    content: "\F076"
+}
+
+.van-icon-label-o:before {
+    content: "\F077"
+}
+
+.van-icon-label:before {
+    content: "\F078"
+}
+
+.van-icon-like-o:before {
+    content: "\F079"
+}
+
+.van-icon-like:before {
+    content: "\F07A"
+}
+
+.van-icon-live:before {
+    content: "\F07B"
+}
+
+.van-icon-location-o:before {
+    content: "\F07C"
+}
+
+.van-icon-location:before {
+    content: "\F07D"
+}
+
+.van-icon-lock:before {
+    content: "\F07E"
+}
+
+.van-icon-logistics:before {
+    content: "\F07F"
+}
+
+.van-icon-manager-o:before {
+    content: "\F080"
+}
+
+.van-icon-manager:before {
+    content: "\F081"
+}
+
+.van-icon-map-marked:before {
+    content: "\F082"
+}
+
+.van-icon-medel-o:before {
+    content: "\F083"
+}
+
+.van-icon-medel:before {
+    content: "\F084"
+}
+
+.van-icon-more-o:before {
+    content: "\F085"
+}
+
+.van-icon-more:before {
+    content: "\F086"
+}
+
+.van-icon-music-o:before {
+    content: "\F087"
+}
+
+.van-icon-music:before {
+    content: "\F088"
+}
+
+.van-icon-new-arrival-o:before {
+    content: "\F089"
+}
+
+.van-icon-new-arrival:before {
+    content: "\F08A"
+}
+
+.van-icon-new-o:before {
+    content: "\F08B"
+}
+
+.van-icon-new:before {
+    content: "\F08C"
+}
+
+.van-icon-newspaper-o:before {
+    content: "\F08D"
+}
+
+.van-icon-notes-o:before {
+    content: "\F08E"
+}
+
+.van-icon-orders-o:before {
+    content: "\F08F"
+}
+
+.van-icon-other-pay:before {
+    content: "\F090"
+}
+
+.van-icon-paid:before {
+    content: "\F091"
+}
+
+.van-icon-passed:before {
+    content: "\F092"
+}
+
+.van-icon-pause-circle-o:before {
+    content: "\F093"
+}
+
+.van-icon-pause-circle:before {
+    content: "\F094"
+}
+
+.van-icon-pause:before {
+    content: "\F095"
+}
+
+.van-icon-peer-pay:before {
+    content: "\F096"
+}
+
+.van-icon-pending-payment:before {
+    content: "\F097"
+}
+
+.van-icon-phone-circle-o:before {
+    content: "\F098"
+}
+
+.van-icon-phone-circle:before {
+    content: "\F099"
+}
+
+.van-icon-phone-o:before {
+    content: "\F09A"
+}
+
+.van-icon-phone:before {
+    content: "\F09B"
+}
+
+.van-icon-photo-o:before {
+    content: "\F09C"
+}
+
+.van-icon-photo:before {
+    content: "\F09D"
+}
+
+.van-icon-photograph:before {
+    content: "\F09E"
+}
+
+.van-icon-play-circle-o:before {
+    content: "\F09F"
+}
+
+.van-icon-play-circle:before {
+    content: "\F0A0"
+}
+
+.van-icon-play:before {
+    content: "\F0A1"
+}
+
+.van-icon-plus:before {
+    content: "\F0A2"
+}
+
+.van-icon-point-gift-o:before {
+    content: "\F0A3"
+}
+
+.van-icon-point-gift:before {
+    content: "\F0A4"
+}
+
+.van-icon-points:before {
+    content: "\F0A5"
+}
+
+.van-icon-printer:before {
+    content: "\F0A6"
+}
+
+.van-icon-qr-invalid:before {
+    content: "\F0A7"
+}
+
+.van-icon-qr:before {
+    content: "\F0A8"
+}
+
+.van-icon-question-o:before {
+    content: "\F0A9"
+}
+
+.van-icon-question:before {
+    content: "\F0AA"
+}
+
+.van-icon-records:before {
+    content: "\F0AB"
+}
+
+.van-icon-refund-o:before {
+    content: "\F0AC"
+}
+
+.van-icon-replay:before {
+    content: "\F0AD"
+}
+
+.van-icon-scan:before {
+    content: "\F0AE"
+}
+
+.van-icon-search:before {
+    content: "\F0AF"
+}
+
+.van-icon-send-gift-o:before {
+    content: "\F0B0"
+}
+
+.van-icon-send-gift:before {
+    content: "\F0B1"
+}
+
+.van-icon-service-o:before {
+    content: "\F0B2"
+}
+
+.van-icon-service:before {
+    content: "\F0B3"
+}
+
+.van-icon-setting-o:before {
+    content: "\F0B4"
+}
+
+.van-icon-setting:before {
+    content: "\F0B5"
+}
+
+.van-icon-share:before {
+    content: "\F0B6"
+}
+
+.van-icon-shop-collect-o:before {
+    content: "\F0B7"
+}
+
+.van-icon-shop-collect:before {
+    content: "\F0B8"
+}
+
+.van-icon-shop-o:before {
+    content: "\F0B9"
+}
+
+.van-icon-shop:before {
+    content: "\F0BA"
+}
+
+.van-icon-shopping-cart-o:before {
+    content: "\F0BB"
+}
+
+.van-icon-shopping-cart:before {
+    content: "\F0BC"
+}
+
+.van-icon-shrink:before {
+    content: "\F0BD"
+}
+
+.van-icon-sign:before {
+    content: "\F0BE"
+}
+
+.van-icon-smile-comment-o:before {
+    content: "\F0BF"
+}
+
+.van-icon-smile-comment:before {
+    content: "\F0C0"
+}
+
+.van-icon-smile-o:before {
+    content: "\F0C1"
+}
+
+.van-icon-smile:before {
+    content: "\F0C2"
+}
+
+.van-icon-star-o:before {
+    content: "\F0C3"
+}
+
+.van-icon-star:before {
+    content: "\F0C4"
+}
+
+.van-icon-stop-circle-o:before {
+    content: "\F0C5"
+}
+
+.van-icon-stop-circle:before {
+    content: "\F0C6"
+}
+
+.van-icon-stop:before {
+    content: "\F0C7"
+}
+
+.van-icon-success:before {
+    content: "\F0C8"
+}
+
+.van-icon-thumb-circle-o:before {
+    content: "\F0C9"
+}
+
+.van-icon-thumb-circle:before {
+    content: "\F0CA"
+}
+
+.van-icon-todo-list-o:before {
+    content: "\F0CB"
+}
+
+.van-icon-todo-list:before {
+    content: "\F0CC"
+}
+
+.van-icon-tosend:before {
+    content: "\F0CD"
+}
+
+.van-icon-tv-o:before {
+    content: "\F0CE"
+}
+
+.van-icon-umbrella-circle:before {
+    content: "\F0CF"
+}
+
+.van-icon-underway-o:before {
+    content: "\F0D0"
+}
+
+.van-icon-underway:before {
+    content: "\F0D1"
+}
+
+.van-icon-upgrade:before {
+    content: "\F0D2"
+}
+
+.van-icon-user-circle-o:before {
+    content: "\F0D3"
+}
+
+.van-icon-user-o:before {
+    content: "\F0D4"
+}
+
+.van-icon-video-o:before {
+    content: "\F0D5"
+}
+
+.van-icon-video:before {
+    content: "\F0D6"
+}
+
+.van-icon-vip-card-o:before {
+    content: "\F0D7"
+}
+
+.van-icon-vip-card:before {
+    content: "\F0D8"
+}
+
+.van-icon-volume-o:before {
+    content: "\F0D9"
+}
+
+.van-icon-volume:before {
+    content: "\F0DA"
+}
+
+.van-icon-wap-home-o:before {
+    content: "\F0DB"
+}
+
+.van-icon-wap-home:before {
+    content: "\F0DC"
+}
+
+.van-icon-wap-nav:before {
+    content: "\F0DD"
+}
+
+.van-icon-warn-o:before {
+    content: "\F0DE"
+}
+
+.van-icon-warning-o:before {
+    content: "\F0DF"
+}
+
+.van-icon-warning:before {
+    content: "\F0E0"
+}
+
+.van-icon-weapp-nav:before {
+    content: "\F0E1"
+}
+
+.van-icon-wechat:before {
+    content: "\F0E2"
+}
+
+.van-icon-youzan-shield:before {
+    content: "\F0E3"
+}
+
+.van-icon__image {
+    width: 1em;
+    height: 1em
+}
+
+.van-loading,
+.van-loading__spinner {
+    position: relative;
+    vertical-align: middle
+}
+
+.van-loading {
+    color: #c8c9cc;
+    font-size: 0
+}
+
+.van-loading__spinner {
+    display: inline-block;
+    width: 30px;
+    max-width: 100%;
+    height: 30px;
+    max-height: 100%;
+    -webkit-animation: van-rotate .8s linear infinite;
+    animation: van-rotate .8s linear infinite
+}
+
+.van-loading__spinner--spinner {
+    -webkit-animation-timing-function: steps(12);
+    animation-timing-function: steps(12)
+}
+
+.van-circle svg,
+.van-loading__spinner--spinner i {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%
+}
+
+.van-loading__spinner--spinner i::before {
+    display: block;
+    width: 2px;
+    height: 25%;
+    margin: 0 auto;
+    background-color: currentColor;
+    border-radius: 40%;
+    content: ' '
+}
+
+.van-loading__spinner--circular {
+    -webkit-animation-duration: 2s;
+    animation-duration: 2s
+}
+
+.van-loading__circular {
+    display: block;
+    width: 100%;
+    height: 100%
+}
+
+.van-loading__circular circle {
+    -webkit-animation: van-circular 1.5s ease-in-out infinite;
+    animation: van-circular 1.5s ease-in-out infinite;
+    stroke: currentColor;
+    stroke-width: 3;
+    stroke-linecap: round
+}
+
+.van-loading__text {
+    display: inline-block;
+    margin-left: 8px;
+    color: #969799;
+    font-size: 14px;
+    vertical-align: middle
+}
+
+.van-loading--vertical {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center
+}
+
+.van-loading--vertical .van-loading__text {
+    margin: 8px 0 0
+}
+
+.van-loading__spinner--spinner i:nth-of-type(1) {
+    -webkit-transform: rotate(30deg);
+    transform: rotate(30deg);
+    opacity: 1
+}
+
+.van-loading__spinner--spinner i:nth-of-type(2) {
+    -webkit-transform: rotate(60deg);
+    transform: rotate(60deg);
+    opacity: .9375
+}
+
+.van-loading__spinner--spinner i:nth-of-type(3) {
+    -webkit-transform: rotate(90deg);
+    transform: rotate(90deg);
+    opacity: .875
+}
+
+.van-loading__spinner--spinner i:nth-of-type(4) {
+    -webkit-transform: rotate(120deg);
+    transform: rotate(120deg);
+    opacity: .8125
+}
+
+.van-loading__spinner--spinner i:nth-of-type(5) {
+    -webkit-transform: rotate(150deg);
+    transform: rotate(150deg);
+    opacity: .75
+}
+
+.van-loading__spinner--spinner i:nth-of-type(6) {
+    -webkit-transform: rotate(180deg);
+    transform: rotate(180deg);
+    opacity: .6875
+}
+
+.van-loading__spinner--spinner i:nth-of-type(7) {
+    -webkit-transform: rotate(210deg);
+    transform: rotate(210deg);
+    opacity: .625
+}
+
+.van-loading__spinner--spinner i:nth-of-type(8) {
+    -webkit-transform: rotate(240deg);
+    transform: rotate(240deg);
+    opacity: .5625
+}
+
+.van-loading__spinner--spinner i:nth-of-type(9) {
+    -webkit-transform: rotate(270deg);
+    transform: rotate(270deg);
+    opacity: .5
+}
+
+.van-loading__spinner--spinner i:nth-of-type(10) {
+    -webkit-transform: rotate(300deg);
+    transform: rotate(300deg);
+    opacity: .4375
+}
+
+.van-loading__spinner--spinner i:nth-of-type(11) {
+    -webkit-transform: rotate(330deg);
+    transform: rotate(330deg);
+    opacity: .375
+}
+
+.van-loading__spinner--spinner i:nth-of-type(12) {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg);
+    opacity: .3125
+}
+
+.van-button {
+    position: relative;
+    display: inline-block;
+    box-sizing: border-box;
+    height: 44px;
+    margin: 0;
+    padding: 0;
+    font-size: 16px;
+    line-height: 42px;
+    text-align: center;
+    border-radius: 2px;
+    -webkit-transition: opacity .2s;
+    transition: opacity .2s;
+    -webkit-appearance: none;
+    -webkit-text-size-adjust: 100%
+}
+
+.van-button::before {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    width: 100%;
+    height: 100%;
+    background-color: #000;
+    border: inherit;
+    border-color: #000;
+    border-radius: inherit;
+    -webkit-transform: translate(-50%, -50%);
+    transform: translate(-50%, -50%);
+    opacity: 0;
+    content: ' '
+}
+
+.van-button:active::before {
+    opacity: .1
+}
+
+.van-button--disabled::before,
+.van-button--loading::before {
+    display: none
+}
+
+.van-button--default {
+    color: #323233;
+    background-color: #fff;
+    border: 1px solid #ebedf0
+}
+
+.van-button--primary {
+    color: #fff;
+    background-color: #07c160;
+    border: 1px solid #07c160
+}
+
+.van-button--info {
+    color: #fff;
+    background-color: #1989fa;
+    border: 1px solid #1989fa
+}
+
+.van-button--danger {
+    color: #fff;
+    background-color: #ee0a24;
+    border: 1px solid #ee0a24
+}
+
+.van-button--warning {
+    color: #fff;
+    background-color: #ff976a;
+    border: 1px solid #ff976a
+}
+
+.van-button--plain {
+    background-color: #fff
+}
+
+.van-button--plain.van-button--primary {
+    color: #07c160
+}
+
+.van-button--plain.van-button--info {
+    color: #1989fa
+}
+
+.van-button--plain.van-button--danger {
+    color: #ee0a24
+}
+
+.van-button--plain.van-button--warning {
+    color: #ff976a
+}
+
+.van-button--large {
+    width: 100%;
+    height: 50px;
+    line-height: 48px
+}
+
+.van-button--normal {
+    padding: 0 15px;
+    font-size: 14px
+}
+
+.van-button--small {
+    min-width: 60px;
+    height: 30px;
+    padding: 0 8px;
+    font-size: 12px;
+    line-height: 28px
+}
+
+.van-button__loading {
+    display: inline-block;
+    color: inherit;
+    vertical-align: top
+}
+
+.van-button--mini {
+    display: inline-block;
+    min-width: 50px;
+    height: 22px;
+    font-size: 10px;
+    line-height: 20px
+}
+
+.van-button--mini+.van-button--mini {
+    margin-left: 4px
+}
+
+.van-button--block {
+    display: block;
+    width: 100%
+}
+
+.van-button--disabled {
+    opacity: .5
+}
+
+.van-button--hairline.van-button--round::after,
+.van-button--round {
+    border-radius: 999px
+}
+
+.van-button--hairline.van-button--square::after,
+.van-button--square {
+    border-radius: 0
+}
+
+.van-button__icon {
+    min-width: 1em;
+    font-size: 1.2em;
+    line-height: inherit;
+    vertical-align: top
+}
+
+.van-button__icon+.van-button__text,
+.van-button__loading+.van-button__text {
+    display: inline-block;
+    margin-left: 5px;
+    vertical-align: top
+}
+
+.van-button--hairline {
+    border-width: 0
+}
+
+.van-button--hairline::after {
+    border-color: inherit;
+    border-radius: 4px
+}
+
+.van-cell {
+    position: relative;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    box-sizing: border-box;
+    width: 100%;
+    padding: 10px 16px;
+    overflow: hidden;
+    color: #323233;
+    font-size: 14px;
+    line-height: 24px;
+    background-color: #fff
+}
+
+.van-cell:not(:last-child)::after {
+    position: absolute;
+    box-sizing: border-box;
+    content: ' ';
+    pointer-events: none;
+    right: 0;
+    bottom: 0;
+    left: 16px;
+    border-bottom: 1px solid #ebedf0;
+    -webkit-transform: scaleY(.5);
+    transform: scaleY(.5)
+}
+
+.van-cell--borderless::after {
+    display: none
+}
+
+.van-cell__label {
+    margin-top: 3px;
+    color: #969799;
+    font-size: 12px;
+    line-height: 18px
+}
+
+.van-cell__title,
+.van-cell__value {
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1
+}
+
+.van-cell__value {
+    position: relative;
+    overflow: hidden;
+    color: #969799;
+    text-align: right;
+    vertical-align: middle;
+    word-wrap: break-word
+}
+
+.van-cell__value--alone {
+    color: #323233;
+    text-align: left
+}
+
+.van-cell__left-icon,
+.van-cell__right-icon {
+    min-width: 1em;
+    height: 24px;
+    font-size: 16px;
+    line-height: 24px
+}
+
+.van-cell__left-icon {
+    margin-right: 5px
+}
+
+.van-cell__right-icon {
+    margin-left: 5px;
+    color: #969799
+}
+
+.van-cell--clickable:active {
+    background-color: #f2f3f5
+}
+
+.van-cell--required {
+    overflow: visible
+}
+
+.van-cell--required::before {
+    position: absolute;
+    left: 8px;
+    color: #ee0a24;
+    font-size: 14px;
+    content: '*'
+}
+
+.van-cell--center {
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center
+}
+
+.van-cell--large {
+    padding-top: 12px;
+    padding-bottom: 12px
+}
+
+.van-cell--large .van-cell__title {
+    font-size: 16px
+}
+
+.van-cell--large .van-cell__label {
+    font-size: 14px
+}
+
+.van-cell-group {
+    background-color: #fff
+}
+
+.van-cell-group__title {
+    padding: 16px 16px 8px;
+    color: #969799;
+    font-size: 14px;
+    line-height: 16px
+}
+
+.van-col {
+    float: left;
+    box-sizing: border-box;
+    min-height: 1px
+}
+
+.van-col--1 {
+    width: 4.16666667%
+}
+
+.van-col--offset-1 {
+    margin-left: 4.16666667%
+}
+
+.van-col--2 {
+    width: 8.33333333%
+}
+
+.van-col--offset-2 {
+    margin-left: 8.33333333%
+}
+
+.van-col--3 {
+    width: 12.5%
+}
+
+.van-col--offset-3 {
+    margin-left: 12.5%
+}
+
+.van-col--4 {
+    width: 16.66666667%
+}
+
+.van-col--offset-4 {
+    margin-left: 16.66666667%
+}
+
+.van-col--5 {
+    width: 20.83333333%
+}
+
+.van-col--offset-5 {
+    margin-left: 20.83333333%
+}
+
+.van-col--6 {
+    width: 25%
+}
+
+.van-col--offset-6 {
+    margin-left: 25%
+}
+
+.van-col--7 {
+    width: 29.16666667%
+}
+
+.van-col--offset-7 {
+    margin-left: 29.16666667%
+}
+
+.van-col--8 {
+    width: 33.33333333%
+}
+
+.van-col--offset-8 {
+    margin-left: 33.33333333%
+}
+
+.van-col--9 {
+    width: 37.5%
+}
+
+.van-col--offset-9 {
+    margin-left: 37.5%
+}
+
+.van-col--10 {
+    width: 41.66666667%
+}
+
+.van-col--offset-10 {
+    margin-left: 41.66666667%
+}
+
+.van-col--11 {
+    width: 45.83333333%
+}
+
+.van-col--offset-11 {
+    margin-left: 45.83333333%
+}
+
+.van-col--12 {
+    width: 50%
+}
+
+.van-col--offset-12 {
+    margin-left: 50%
+}
+
+.van-col--13 {
+    width: 54.16666667%
+}
+
+.van-col--offset-13 {
+    margin-left: 54.16666667%
+}
+
+.van-col--14 {
+    width: 58.33333333%
+}
+
+.van-col--offset-14 {
+    margin-left: 58.33333333%
+}
+
+.van-col--15 {
+    width: 62.5%
+}
+
+.van-col--offset-15 {
+    margin-left: 62.5%
+}
+
+.van-col--16 {
+    width: 66.66666667%
+}
+
+.van-col--offset-16 {
+    margin-left: 66.66666667%
+}
+
+.van-col--17 {
+    width: 70.83333333%
+}
+
+.van-col--offset-17 {
+    margin-left: 70.83333333%
+}
+
+.van-col--18 {
+    width: 75%
+}
+
+.van-col--offset-18 {
+    margin-left: 75%
+}
+
+.van-col--19 {
+    width: 79.16666667%
+}
+
+.van-col--offset-19 {
+    margin-left: 79.16666667%
+}
+
+.van-col--20 {
+    width: 83.33333333%
+}
+
+.van-col--offset-20 {
+    margin-left: 83.33333333%
+}
+
+.van-col--21 {
+    width: 87.5%
+}
+
+.van-col--offset-21 {
+    margin-left: 87.5%
+}
+
+.van-col--22 {
+    width: 91.66666667%
+}
+
+.van-col--offset-22 {
+    margin-left: 91.66666667%
+}
+
+.van-col--23 {
+    width: 95.83333333%
+}
+
+.van-col--offset-23 {
+    margin-left: 95.83333333%
+}
+
+.van-col--24 {
+    width: 100%
+}
+
+.van-col--offset-24 {
+    margin-left: 100%
+}
+
+.van-row::after {
+    display: table;
+    clear: both;
+    content: ""
+}
+
+.van-row--flex {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex
+}
+
+.van-row--flex::after {
+    display: none
+}
+
+.van-row--justify-center {
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center
+}
+
+.van-row--justify-end {
+    -webkit-box-pack: end;
+    -webkit-justify-content: flex-end;
+    justify-content: flex-end
+}
+
+.van-row--justify-space-between {
+    -webkit-box-pack: justify;
+    -webkit-justify-content: space-between;
+    justify-content: space-between
+}
+
+.van-row--justify-space-around {
+    -webkit-justify-content: space-around;
+    justify-content: space-around
+}
+
+.van-row--align-center {
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center
+}
+
+.van-row--align-bottom {
+    -webkit-box-align: end;
+    -webkit-align-items: flex-end;
+    align-items: flex-end
+}
+
+.van-grid {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-flex-wrap: wrap;
+    flex-wrap: wrap
+}
+
+.van-grid-item {
+    position: relative;
+    box-sizing: border-box
+}
+
+.van-grid-item--square {
+    height: 0
+}
+
+.van-grid-item__content {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    box-sizing: border-box;
+    height: 100%;
+    padding: 16px 8px;
+    background-color: #fff
+}
+
+.van-grid-item__content::after {
+    z-index: 1;
+    border-width: 0 1px 1px 0
+}
+
+.van-grid-item__content--square {
+    position: absolute;
+    top: 0;
+    right: 0;
+    left: 0
+}
+
+.van-grid-item__content--center {
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center
+}
+
+.van-grid-item__content--surround::after {
+    border-width: 1px
+}
+
+.van-grid-item__content--clickable:active {
+    background-color: #f2f3f5
+}
+
+.van-grid-item__icon {
+    font-size: 28px
+}
+
+.van-grid-item__icon-wrapper {
+    position: relative
+}
+
+.van-grid-item__text {
+    color: #7d7e80;
+    font-size: 12px;
+    word-wrap: break-word
+}
+
+.van-grid-item__icon+.van-grid-item__text {
+    margin-top: 8px
+}
+
+.van-image {
+    position: relative;
+    display: inline-block
+}
+
+.van-image--round {
+    overflow: hidden;
+    border-radius: 50%
+}
+
+.van-image--round img {
+    border-radius: inherit
+}
+
+.van-image__error,
+.van-image__img,
+.van-image__loading {
+    display: block;
+    width: 100%;
+    height: 100%
+}
+
+.van-image__error,
+.van-image__loading {
+    position: absolute;
+    top: 0;
+    left: 0;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+    color: #969799;
+    font-size: 14px;
+    background-color: #f8f8f8
+}
+
+.van-circle {
+    position: relative;
+    display: inline-block;
+    text-align: center
+}
+
+.van-circle__layer {
+    fill: none;
+    stroke-linecap: round
+}
+
+.van-circle__text {
+    position: absolute;
+    top: 50%;
+    left: 0;
+    width: 100%;
+    color: #323233;
+    font-weight: 500;
+    font-size: 14px;
+    line-height: 18px;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%)
+}
+
+.van-collapse-item__title .van-cell__right-icon::before {
+    -webkit-transform: rotate(90deg);
+    transform: rotate(90deg);
+    -webkit-transition: -webkit-transform .3s;
+    transition: transform .3s;
+    transition: transform .3s, -webkit-transform .3s
+}
+
+.van-collapse-item__title::after {
+    visibility: hidden
+}
+
+.van-collapse-item__title--expanded .van-cell__right-icon::before {
+    -webkit-transform: rotate(-90deg);
+    transform: rotate(-90deg)
+}
+
+.van-collapse-item__title--expanded::after {
+    visibility: visible
+}
+
+.van-collapse-item__title--disabled,
+.van-collapse-item__title--disabled .van-cell__right-icon {
+    color: #c8c9cc
+}
+
+.van-collapse-item__title--disabled:active {
+    background-color: #fff
+}
+
+.van-collapse-item__wrapper {
+    overflow: hidden;
+    -webkit-transition: height .3s ease-in-out;
+    transition: height .3s ease-in-out;
+    will-change: height
+}
+
+.van-collapse-item__content {
+    padding: 16px;
+    color: #969799;
+    font-size: 13px;
+    line-height: 1.5;
+    background-color: #fff
+}
+
+.van-count-down,
+.van-divider {
+    color: #323233;
+    font-size: 14px;
+    line-height: 20px
+}
+
+.van-divider {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    margin: 16px 0;
+    color: #969799;
+    line-height: 24px;
+    border-color: #ebedf0;
+    border-style: solid;
+    border-width: 0
+}
+
+.van-divider::after,
+.van-divider::before {
+    display: block;
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    box-sizing: border-box;
+    height: 1px;
+    border-color: inherit;
+    border-style: inherit;
+    border-width: 1px 0 0
+}
+
+.van-divider::before {
+    content: ''
+}
+
+.van-divider--hairline::after,
+.van-divider--hairline::before {
+    -webkit-transform: scaleY(.5);
+    transform: scaleY(.5)
+}
+
+.van-divider--dashed {
+    border-style: dashed
+}
+
+.van-divider--content-center::before,
+.van-divider--content-left::before,
+.van-divider--content-right::before {
+    margin-right: 16px
+}
+
+.van-divider--content-center::after,
+.van-divider--content-left::after,
+.van-divider--content-right::after {
+    margin-left: 16px;
+    content: ''
+}
+
+.van-divider--content-left::before,
+.van-divider--content-right::after {
+    max-width: 10%
+}
+
+.van-list__error-text,
+.van-list__finished-text,
+.van-list__loading {
+    color: #969799;
+    font-size: 14px;
+    line-height: 50px;
+    text-align: center
+}
+
+.van-list__placeholder {
+    height: 0;
+    pointer-events: none
+}
+
+.van-nav-bar {
+    position: relative;
+    height: 46px;
+    line-height: 46px;
+    text-align: center;
+    background-color: #fff;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-nav-bar .van-icon {
+    color: #1989fa;
+    vertical-align: middle
+}
+
+.van-nav-bar__arrow {
+    min-width: 1em;
+    font-size: 16px
+}
+
+.van-nav-bar__arrow+.van-nav-bar__text {
+    margin-left: -20px;
+    padding-left: 25px
+}
+
+.van-nav-bar--fixed {
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%
+}
+
+.van-nav-bar__title {
+    max-width: 60%;
+    margin: 0 auto;
+    color: #323233;
+    font-weight: 500;
+    font-size: 16px
+}
+
+.van-nav-bar__left,
+.van-nav-bar__right {
+    position: absolute;
+    bottom: 0;
+    font-size: 14px
+}
+
+.van-nav-bar__left {
+    left: 16px
+}
+
+.van-nav-bar__right {
+    right: 16px
+}
+
+.van-nav-bar__text {
+    display: inline-block;
+    margin: 0 -16px;
+    padding: 0 16px;
+    color: #1989fa;
+    vertical-align: middle
+}
+
+.van-nav-bar__text:active {
+    background-color: #f2f3f5
+}
+
+.van-notice-bar {
+    position: relative;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    height: 40px;
+    padding: 0 16px;
+    color: #ed6a0c;
+    font-size: 14px;
+    line-height: 24px;
+    background-color: #fffbe8
+}
+
+.van-notice-bar__left-icon,
+.van-notice-bar__right-icon {
+    min-width: 22px;
+    font-size: 16px
+}
+
+.van-notice-bar__right-icon {
+    text-align: right
+}
+
+.van-notice-bar__wrap {
+    position: relative;
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    height: 24px;
+    overflow: hidden
+}
+
+.van-notice-bar__content {
+    position: absolute;
+    white-space: nowrap
+}
+
+.van-notice-bar__content.van-ellipsis {
+    max-width: 100%
+}
+
+.van-notice-bar__play {
+    -webkit-animation: van-notice-bar-play linear both;
+    animation: van-notice-bar-play linear both
+}
+
+.van-notice-bar__play--infinite {
+    -webkit-animation: van-notice-bar-play-infinite linear infinite both;
+    animation: van-notice-bar-play-infinite linear infinite both
+}
+
+.van-notice-bar--wrapable {
+    height: auto;
+    padding: 8px 16px
+}
+
+.van-notice-bar--wrapable .van-notice-bar__wrap {
+    height: auto
+}
+
+.van-notice-bar--wrapable .van-notice-bar__content {
+    position: relative;
+    white-space: normal;
+    word-wrap: break-word
+}
+
+.van-overlay {
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    background-color: rgba(0, 0, 0, .7)
+}
+
+.van-overflow-hidden {
+    overflow: hidden!important
+}
+
+.van-popup {
+    position: fixed;
+    max-height: 100%;
+    overflow-y: auto;
+    background-color: #fff;
+    -webkit-transition: -webkit-transform .3s ease-out;
+    transition: transform .3s ease-out;
+    transition: transform .3s ease-out, -webkit-transform .3s ease-out;
+    -webkit-overflow-scrolling: touch
+}
+
+.van-popup--center {
+    top: 50%;
+    left: 50%;
+    -webkit-transform: translate3d(-50%, -50%, 0);
+    transform: translate3d(-50%, -50%, 0)
+}
+
+.van-popup--center.van-popup--round {
+    border-radius: 20px
+}
+
+.van-popup--top {
+    top: 0;
+    left: 0;
+    width: 100%
+}
+
+.van-popup--top.van-popup--round {
+    border-radius: 0 0 20px 20px
+}
+
+.van-popup--right {
+    top: 50%;
+    right: 0;
+    -webkit-transform: translate3d(0, -50%, 0);
+    transform: translate3d(0, -50%, 0)
+}
+
+.van-popup--right.van-popup--round {
+    border-radius: 20px 0 0 20px
+}
+
+.van-popup--bottom {
+    bottom: 0;
+    left: 0;
+    width: 100%
+}
+
+.van-popup--bottom.van-popup--round {
+    border-radius: 20px 20px 0 0
+}
+
+.van-popup--left {
+    top: 50%;
+    left: 0;
+    -webkit-transform: translate3d(0, -50%, 0);
+    transform: translate3d(0, -50%, 0)
+}
+
+.van-popup--left.van-popup--round {
+    border-radius: 0 20px 20px 0
+}
+
+.van-popup--safe-area-inset-bottom {
+    padding-bottom: constant(safe-area-inset-bottom);
+    padding-bottom: env(safe-area-inset-bottom)
+}
+
+.van-popup-slide-top-enter,
+.van-popup-slide-top-leave-active {
+    -webkit-transform: translate3d(0, -100%, 0);
+    transform: translate3d(0, -100%, 0)
+}
+
+.van-popup-slide-right-enter,
+.van-popup-slide-right-leave-active {
+    -webkit-transform: translate3d(100%, -50%, 0);
+    transform: translate3d(100%, -50%, 0)
+}
+
+.van-popup-slide-bottom-enter,
+.van-popup-slide-bottom-leave-active {
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0)
+}
+
+.van-popup-slide-left-enter,
+.van-popup-slide-left-leave-active {
+    -webkit-transform: translate3d(-100%, -50%, 0);
+    transform: translate3d(-100%, -50%, 0)
+}
+
+.van-popup__close-icon {
+    position: absolute;
+    z-index: 1;
+    color: #969799;
+    font-size: 18px
+}
+
+.van-popup__close-icon:active {
+    opacity: .7
+}
+
+.van-popup__close-icon--top-left {
+    top: 16px;
+    left: 16px
+}
+
+.van-popup__close-icon--top-right {
+    top: 16px;
+    right: 16px
+}
+
+.van-popup__close-icon--bottom-left {
+    bottom: 16px;
+    left: 16px
+}
+
+.van-popup__close-icon--bottom-right {
+    right: 16px;
+    bottom: 16px
+}
+
+.van-search,
+.van-search__content {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex
+}
+
+.van-search {
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    box-sizing: border-box;
+    padding: 10px 12px
+}
+
+.van-search__content {
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    padding-left: 8px;
+    background-color: #f7f8fa;
+    border-radius: 2px
+}
+
+.van-search__content--round {
+    border-radius: 17px
+}
+
+.van-search__label {
+    padding: 0 5px;
+    color: #323233;
+    font-size: 14px;
+    line-height: 34px
+}
+
+.van-search .van-cell {
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    padding: 5px 8px 5px 0;
+    background-color: transparent
+}
+
+.van-search .van-cell__left-icon {
+    color: #969799
+}
+
+.van-search--show-action {
+    padding-right: 0
+}
+
+.van-search input::-webkit-search-cancel-button,
+.van-search input::-webkit-search-decoration,
+.van-search input::-webkit-search-results-button,
+.van-search input::-webkit-search-results-decoration {
+    display: none
+}
+
+.van-search__action {
+    padding: 0 8px;
+    color: #323233;
+    font-size: 14px;
+    line-height: 34px
+}
+
+.van-search__action:active {
+    background-color: #f2f3f5
+}
+
+.van-pagination {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    font-size: 14px;
+    line-height: 40px;
+    text-align: center
+}
+
+.van-pagination__item {
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    box-sizing: border-box;
+    min-width: 36px;
+    height: 40px;
+    color: #1989fa;
+    background-color: #fff;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-pagination__item:active {
+    color: #fff;
+    background-color: #1989fa
+}
+
+.van-pagination__item::after {
+    border-width: 1px 0 1px 1px
+}
+
+.van-pagination__item:last-child::after {
+    border-right-width: 1px
+}
+
+.van-pagination__item--disabled,
+.van-pagination__item--disabled:active {
+    color: #7d7e80;
+    background-color: #f8f8f8;
+    opacity: .5
+}
+
+.van-pagination__item--active {
+    color: #fff;
+    background-color: #1989fa
+}
+
+.van-pagination__next,
+.van-pagination__prev {
+    padding: 0 4px
+}
+
+.van-pagination__page {
+    -webkit-box-flex: 0;
+    -webkit-flex-grow: 0;
+    flex-grow: 0
+}
+
+.van-pagination__page-desc {
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    height: 40px;
+    color: #7d7e80
+}
+
+.van-pagination--simple .van-pagination__next::after,
+.van-pagination--simple .van-pagination__prev::after {
+    border-width: 1px
+}
+
+.van-panel {
+    background: #fff
+}
+
+.van-panel__header-value {
+    color: #ee0a24
+}
+
+.van-panel__footer {
+    padding: 8px 16px
+}
+
+.van-rate {
+    display: -webkit-inline-box;
+    display: -webkit-inline-flex;
+    display: inline-flex;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-rate__item {
+    position: relative
+}
+
+.van-rate__item:not(:last-child) {
+    padding-right: 4px
+}
+
+.van-rate__icon {
+    display: block;
+    width: 1em;
+    font-size: 20px
+}
+
+.van-rate__icon--half {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: .5em;
+    overflow: hidden
+}
+
+.van-steps {
+    overflow: hidden;
+    background-color: #fff
+}
+
+.van-steps--horizontal {
+    padding: 10px 10px 0
+}
+
+.van-steps--horizontal .van-steps__items {
+    position: relative;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    margin: 0 0 10px;
+    padding-bottom: 22px
+}
+
+.van-steps--vertical {
+    padding: 0 0 0 32px
+}
+
+.van-step {
+    position: relative;
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    color: #969799;
+    font-size: 14px
+}
+
+.van-step__circle {
+    display: block;
+    width: 5px;
+    height: 5px;
+    background-color: #969799;
+    border-radius: 50%
+}
+
+.van-step__line {
+    position: absolute;
+    background-color: #ebedf0
+}
+
+.van-step--horizontal {
+    float: left
+}
+
+.van-step--horizontal:first-child .van-step__title {
+    margin-left: 0;
+    -webkit-transform: none;
+    transform: none
+}
+
+.van-step--horizontal:last-child {
+    position: absolute;
+    right: 1px;
+    width: auto
+}
+
+.van-step--horizontal:last-child .van-step__title {
+    margin-left: 0;
+    -webkit-transform: none;
+    transform: none
+}
+
+.van-step--horizontal:last-child .van-step__circle-container {
+    right: -9px;
+    left: auto
+}
+
+.van-step--horizontal .van-step__circle-container {
+    position: absolute;
+    top: 30px;
+    left: -8px;
+    z-index: 1;
+    padding: 0 8px;
+    background-color: #fff;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%)
+}
+
+.van-step--horizontal .van-step__title {
+    display: inline-block;
+    margin-left: 3px;
+    font-size: 12px;
+    -webkit-transform: translateX(-50%);
+    transform: translateX(-50%)
+}
+
+@media (max-width:321px) {
+    .van-step--horizontal .van-step__title {
+        font-size: 11px
+    }
+}
+
+.van-step--horizontal .van-step__line {
+    top: 30px;
+    left: 0;
+    width: 100%;
+    height: 1px
+}
+
+.van-step--horizontal .van-step__icon {
+    display: block;
+    font-size: 12px
+}
+
+.van-step--horizontal .van-step--process {
+    color: #323233
+}
+
+.van-step--vertical {
+    display: block;
+    float: none;
+    padding: 10px 10px 10px 0;
+    line-height: 18px
+}
+
+.van-step--vertical:not(:last-child)::after {
+    border-bottom-width: 1px
+}
+
+.van-step--vertical:first-child::before {
+    position: absolute;
+    top: 0;
+    left: -15px;
+    z-index: 1;
+    width: 1px;
+    height: 20px;
+    background-color: #fff;
+    content: ''
+}
+
+.van-step--vertical .van-step__circle-container {
+    position: absolute;
+    top: 19px;
+    left: -15px;
+    z-index: 2;
+    font-size: 12px;
+    line-height: 1;
+    -webkit-transform: translate(-50%, -50%);
+    transform: translate(-50%, -50%)
+}
+
+.van-step--vertical .van-step__line {
+    top: 16px;
+    left: -15px;
+    width: 1px;
+    height: 100%
+}
+
+.van-step:last-child .van-step__line {
+    width: 0
+}
+
+.van-step--finish {
+    color: #323233
+}
+
+.van-step--finish .van-step__circle,
+.van-step--finish .van-step__line {
+    background-color: #07c160
+}
+
+.van-sticky--fixed {
+    position: fixed;
+    top: 0;
+    right: 0;
+    left: 0;
+    z-index: 99
+}
+
+.van-tag {
+    display: -webkit-inline-box;
+    display: -webkit-inline-flex;
+    display: inline-flex;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    padding: .2em .5em;
+    color: #fff;
+    font-size: 10px;
+    line-height: normal;
+    border-radius: .2em
+}
+
+.van-tag::after {
+    border-color: currentColor;
+    border-radius: .4em
+}
+
+.van-tag--default {
+    background-color: #969799
+}
+
+.van-tag--default.van-tag--plain {
+    color: #969799
+}
+
+.van-tag--danger {
+    background-color: #ee0a24
+}
+
+.van-tag--danger.van-tag--plain {
+    color: #ee0a24
+}
+
+.van-tag--primary {
+    background-color: #1989fa
+}
+
+.van-tag--primary.van-tag--plain {
+    color: #1989fa
+}
+
+.van-tag--success {
+    background-color: #07c160
+}
+
+.van-tag--success.van-tag--plain {
+    color: #07c160
+}
+
+.van-tag--warning {
+    background-color: #ff976a
+}
+
+.van-tag--warning.van-tag--plain {
+    color: #ff976a
+}
+
+.van-tag--plain {
+    background-color: #fff
+}
+
+.van-tag--mark {
+    padding-right: .7em
+}
+
+.van-tag--mark,
+.van-tag--mark::after {
+    border-radius: 0 999px 999px 0
+}
+
+.van-tag--round,
+.van-tag--round::after {
+    border-radius: 999px
+}
+
+.van-tag--medium {
+    font-size: 12px
+}
+
+.van-tag--large {
+    font-size: 14px
+}
+
+.van-tag__close {
+    margin-left: 2px
+}
+
+.van-tab__pane,
+.van-tab__pane-wrapper {
+    -webkit-flex-shrink: 0;
+    flex-shrink: 0;
+    box-sizing: border-box;
+    width: 100%
+}
+
+.van-tab__pane-wrapper--inactive {
+    height: 0;
+    overflow: visible
+}
+
+.van-tab {
+    position: relative;
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    box-sizing: border-box;
+    min-width: 0;
+    padding: 0 5px;
+    color: #7d7e80;
+    font-size: 14px;
+    line-height: 44px;
+    text-align: center;
+    cursor: pointer
+}
+
+.van-tab span {
+    display: block
+}
+
+.van-tab--active {
+    color: #323233;
+    font-weight: 500
+}
+
+.van-tab--disabled {
+    color: #c8c9cc
+}
+
+.van-tabs {
+    position: relative
+}
+
+.van-tabs__wrap {
+    overflow: hidden
+}
+
+.van-tabs__wrap--page-top {
+    position: fixed
+}
+
+.van-tabs__wrap--content-bottom {
+    top: auto;
+    bottom: 0
+}
+
+.van-tabs__wrap--scrollable .van-tab {
+    -webkit-box-flex: 0;
+    -webkit-flex: 0 0 22%;
+    flex: 0 0 22%
+}
+
+.van-tabs__wrap--scrollable .van-tab--complete {
+    -webkit-box-flex: 1;
+    -webkit-flex: 1 0 auto;
+    flex: 1 0 auto
+}
+
+.van-tabs__wrap--scrollable .van-tabs__nav {
+    overflow: hidden;
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch
+}
+
+.van-tabs__wrap--scrollable .van-tabs__nav::-webkit-scrollbar {
+    display: none
+}
+
+.van-tabs__nav {
+    position: relative;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    background-color: #fff;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-tabs__nav--line {
+    box-sizing: content-box;
+    height: 100%;
+    padding-bottom: 15px
+}
+
+.van-tabs__nav--card {
+    box-sizing: border-box;
+    height: 30px;
+    margin: 0 16px;
+    border: 1px solid #ee0a24;
+    border-radius: 2px
+}
+
+.van-tabs__nav--card .van-tab {
+    color: #ee0a24;
+    line-height: 28px;
+    border-right: 1px solid #ee0a24
+}
+
+.van-tabs__nav--card .van-tab:last-child {
+    border-right: none
+}
+
+.van-tabs__nav--card .van-tab.van-tab--active {
+    color: #fff;
+    background-color: #ee0a24
+}
+
+.van-tabs__nav--card .van-tab--disabled {
+    color: #c8c9cc
+}
+
+.van-tabs__line {
+    position: absolute;
+    bottom: 15px;
+    left: 0;
+    z-index: 1;
+    height: 3px;
+    background-color: #ee0a24;
+    border-radius: 3px
+}
+
+.van-tabs__track {
+    position: relative;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    width: 100%;
+    height: 100%;
+    will-change: left
+}
+
+.van-tabs__content--animated {
+    overflow: hidden
+}
+
+.van-tabs--line .van-tabs__wrap {
+    height: 44px
+}
+
+.van-tabs--card>.van-tabs__wrap {
+    height: 30px
+}
+
+.van-tabbar {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    box-sizing: content-box;
+    width: 100%;
+    height: 50px;
+    background-color: #fff
+}
+
+.van-tabbar--fixed {
+    position: fixed;
+    bottom: 0;
+    left: 0
+}
+
+.van-tabbar--safe-area-inset-bottom {
+    padding-bottom: constant(safe-area-inset-bottom);
+    padding-bottom: env(safe-area-inset-bottom)
+}
+
+.van-tabbar-item {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+    color: #7d7e80;
+    font-size: 12px;
+    line-height: 1
+}
+
+.van-tabbar-item__icon {
+    position: relative;
+    margin-bottom: 5px;
+    font-size: 18px
+}
+
+.van-tabbar-item__icon .van-icon {
+    display: block;
+    min-width: 1em
+}
+
+.van-tabbar-item__icon img {
+    display: block;
+    height: 18px
+}
+
+.van-tabbar-item--active {
+    color: #1989fa
+}
+
+.van-tabbar-item .van-info {
+    margin-top: 2px
+}
+
+.van-image-preview {
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%
+}
+
+.van-image-preview__swipe {
+    height: 100%
+}
+
+.van-image-preview__cover,
+.van-image-preview__image {
+    position: absolute;
+    top: 0;
+    left: 0
+}
+
+.van-image-preview__image {
+    right: 0;
+    bottom: 0;
+    -webkit-transition-property: -webkit-transform;
+    transition-property: transform;
+    transition-property: transform, -webkit-transform
+}
+
+.van-image-preview__image .van-image__loading {
+    background-color: transparent
+}
+
+.van-image-preview__index {
+    position: absolute;
+    top: 10px;
+    left: 50%;
+    color: #fff;
+    font-size: 14px;
+    -webkit-transform: translate(-50%, 0);
+    transform: translate(-50%, 0)
+}
+
+.van-image-preview__overlay {
+    background-color: rgba(0, 0, 0, .9)
+}
+
+.van-progress {
+    position: relative;
+    height: 4px;
+    background: #e5e5e5;
+    border-radius: 4px
+}
+
+.van-progress__portion {
+    position: absolute;
+    left: 0;
+    height: 100%;
+    background: #1989fa;
+    border-radius: inherit
+}
+
+.van-progress__pivot {
+    position: absolute;
+    top: 50%;
+    box-sizing: border-box;
+    min-width: 3.6em;
+    padding: 0 5px;
+    color: #fff;
+    font-size: 10px;
+    line-height: 1.6;
+    text-align: center;
+    word-break: keep-all;
+    background-color: #1989fa;
+    border-radius: 1em;
+    -webkit-transform: translate(0, -50%);
+    transform: translate(0, -50%)
+}
+
+.van-sidebar {
+    width: 85px
+}
+
+.van-sidebar-item {
+    display: block;
+    box-sizing: border-box;
+    padding: 20px 12px 20px 8px;
+    overflow: hidden;
+    color: #323233;
+    font-size: 14px;
+    line-height: 20px;
+    word-wrap: break-word;
+    background-color: #fafafa;
+    border-left: 3px solid transparent;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-sidebar-item__text {
+    position: relative;
+    display: inline-block
+}
+
+.van-sidebar-item:active {
+    background-color: #f2f3f5
+}
+
+.van-sidebar-item:not(:last-child)::after {
+    border-bottom-width: 1px
+}
+
+.van-sidebar-item--select {
+    color: #323233;
+    font-weight: 500;
+    border-color: #ee0a24;
+    background-color: #fff
+}
+
+.van-sidebar-item--select::after {
+    border-right-width: 1px
+}
+
+.van-sidebar-item--select:active {
+    background-color: #fff
+}
+
+.van-sidebar-item--disabled {
+    color: #c8c9cc
+}
+
+.van-sidebar-item--disabled:active {
+    background-color: #fafafa
+}
+
+.van-skeleton {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    padding: 0 16px
+}
+
+.van-skeleton__avatar {
+    -webkit-flex-shrink: 0;
+    flex-shrink: 0;
+    margin-right: 16px;
+    background-color: #f2f3f5
+}
+
+.van-skeleton__avatar--round {
+    border-radius: 100%
+}
+
+.van-skeleton__content {
+    width: 100%
+}
+
+.van-skeleton__avatar+.van-skeleton__content {
+    padding-top: 8px
+}
+
+.van-skeleton__row,
+.van-skeleton__title {
+    height: 16px;
+    background-color: #f2f3f5
+}
+
+.van-skeleton__title {
+    margin: 0
+}
+
+.van-skeleton__row:not(:first-child) {
+    margin-top: 12px
+}
+
+.van-skeleton__title+.van-skeleton__row {
+    margin-top: 20px
+}
+
+.van-skeleton--animate {
+    -webkit-animation: van-skeleton-blink 1.2s ease-in-out infinite;
+    animation: van-skeleton-blink 1.2s ease-in-out infinite
+}
+
+.van-slider,
+.van-slider__bar {
+    position: relative;
+    background-color: #e5e5e5;
+    border-radius: 999px
+}
+
+.van-slider::before {
+    position: absolute;
+    top: -8px;
+    right: 0;
+    bottom: -8px;
+    left: 0;
+    content: ''
+}
+
+.van-slider__bar {
+    background-color: #1989fa;
+    border-radius: inherit;
+    -webkit-transition: width .2s;
+    transition: width .2s
+}
+
+.van-slider__button {
+    width: 24px;
+    height: 24px;
+    background-color: #fff;
+    border-radius: 50%;
+    box-shadow: 0 1px 2px rgba(0, 0, 0, .5)
+}
+
+.van-slider__button-wrapper {
+    position: absolute;
+    top: 50%;
+    right: 0;
+    -webkit-transform: translate3d(50%, -50%, 0);
+    transform: translate3d(50%, -50%, 0)
+}
+
+.van-slider--disabled {
+    opacity: .5
+}
+
+.van-slider--vertical {
+    display: inline-block;
+    height: 100%
+}
+
+.van-slider--vertical .van-slider__button-wrapper {
+    top: auto;
+    bottom: 0;
+    -webkit-transform: translate3d(50%, 50%, 0);
+    transform: translate3d(50%, 50%, 0)
+}
+
+.van-stepper {
+    font-size: 0;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-stepper__minus,
+.van-stepper__plus {
+    position: relative;
+    box-sizing: border-box;
+    width: 28px;
+    height: 28px;
+    margin: 0;
+    padding: 4px;
+    color: #323233;
+    vertical-align: middle;
+    background-color: #f2f3f5;
+    border: 0
+}
+
+.van-stepper__minus::before,
+.van-stepper__plus::before {
+    width: 13px;
+    height: 1px
+}
+
+.van-stepper__minus::after,
+.van-stepper__plus::after {
+    width: 1px;
+    height: 13px
+}
+
+.van-stepper__minus::after,
+.van-stepper__minus::before,
+.van-stepper__plus::after,
+.van-stepper__plus::before {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    margin: auto;
+    background-color: currentColor;
+    content: ''
+}
+
+.van-stepper__minus:active,
+.van-stepper__plus:active {
+    background-color: #e8e8e8
+}
+
+.van-stepper__minus--disabled,
+.van-stepper__plus--disabled {
+    color: #c8c9cc;
+    background-color: #f7f8fa
+}
+
+.van-stepper__minus--disabled:active,
+.van-stepper__plus--disabled:active {
+    background-color: #f7f8fa
+}
+
+.van-stepper__minus {
+    border-radius: 4px 0 0 4px
+}
+
+.van-stepper__minus::after {
+    display: none
+}
+
+.van-stepper__plus {
+    border-radius: 0 4px 4px 0
+}
+
+.van-stepper__input {
+    box-sizing: border-box;
+    width: 32px;
+    height: 28px;
+    margin: 0 2px;
+    padding: 0;
+    color: #323233;
+    font-size: 14px;
+    text-align: center;
+    vertical-align: middle;
+    background-color: #f2f3f5;
+    border: 0;
+    border-width: 1px 0;
+    border-radius: 0;
+    -webkit-appearance: none
+}
+
+.van-stepper__input[disabled] {
+    color: #c8c9cc;
+    background-color: #f2f3f5
+}
+
+.van-stepper input[type=number]::-webkit-inner-spin-button,
+.van-stepper input[type=number]::-webkit-outer-spin-button {
+    margin: 0;
+    -webkit-appearance: none
+}
+
+.van-swipe {
+    position: relative;
+    overflow: hidden;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-swipe__track {
+    height: 100%
+}
+
+.van-swipe__indicators {
+    position: absolute;
+    bottom: 12px;
+    left: 50%;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-transform: translateX(-50%);
+    transform: translateX(-50%)
+}
+
+.van-swipe__indicators--vertical {
+    top: 50%;
+    bottom: auto;
+    left: 12px;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%)
+}
+
+.van-swipe__indicators--vertical .van-swipe__indicator:not(:last-child) {
+    margin-bottom: 6px
+}
+
+.van-swipe__indicator {
+    width: 6px;
+    height: 6px;
+    background-color: #ebedf0;
+    border-radius: 100%;
+    opacity: .3;
+    -webkit-transition: opacity .2s;
+    transition: opacity .2s
+}
+
+.van-swipe__indicator:not(:last-child) {
+    margin-right: 6px
+}
+
+.van-swipe__indicator--active {
+    background-color: #1989fa;
+    opacity: 1
+}
+
+.van-swipe-item {
+    float: left;
+    height: 100%
+}
+
+.van-index-anchor {
+    padding: 0 16px;
+    color: #323233;
+    font-weight: 500;
+    font-size: 14px;
+    line-height: 32px;
+    background-color: transparent
+}
+
+.van-index-anchor--sticky {
+    position: fixed;
+    top: 0;
+    right: 0;
+    left: 0;
+    background-color: #fff
+}
+
+.van-index-bar__sidebar {
+    position: fixed;
+    top: 50%;
+    right: 0;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    text-align: center;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%);
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-index-bar__index {
+    padding: 0 4px 0 16px;
+    font-weight: 500;
+    font-size: 10px;
+    line-height: 14px
+}
+
+.van-checkbox {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    overflow: hidden;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-checkbox__icon {
+    -webkit-box-flex: 0;
+    -webkit-flex: none;
+    flex: none;
+    height: 1em;
+    font-size: 20px;
+    line-height: 1em
+}
+
+.van-checkbox__icon .van-icon {
+    display: block;
+    box-sizing: border-box;
+    width: 1.25em;
+    height: 1.25em;
+    color: transparent;
+    font-size: .8em;
+    line-height: inherit;
+    text-align: center;
+    border: 1px solid #e5e5e5;
+    -webkit-transition-duration: .2s;
+    transition-duration: .2s;
+    -webkit-transition-property: color, border-color, background-color;
+    transition-property: color, border-color, background-color
+}
+
+.van-checkbox__icon--round .van-icon {
+    border-radius: 100%
+}
+
+.van-checkbox__icon--checked .van-icon {
+    color: #fff;
+    background-color: #1989fa;
+    border-color: #1989fa
+}
+
+.van-checkbox__icon--disabled .van-icon {
+    background-color: #ebedf0;
+    border-color: #c8c9cc
+}
+
+.van-checkbox__icon--disabled.van-checkbox__icon--checked .van-icon {
+    color: #c8c9cc
+}
+
+.van-checkbox__label {
+    margin-left: 8px;
+    color: #323233;
+    line-height: 20px
+}
+
+.van-checkbox__label--left {
+    margin: 0 8px 0 0
+}
+
+.van-checkbox__label--disabled,
+.van-radio__icon--disabled.van-radio__icon--checked .van-icon {
+    color: #c8c9cc
+}
+
+.van-field__label {
+    -webkit-box-flex: 0;
+    -webkit-flex: none;
+    flex: none;
+    width: 90px
+}
+
+.van-field__label--center {
+    text-align: center
+}
+
+.van-field__label--right {
+    text-align: right
+}
+
+.van-field__body {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center
+}
+
+.van-field__control {
+    display: block;
+    box-sizing: border-box;
+    width: 100%;
+    min-width: 0;
+    margin: 0;
+    padding: 0;
+    color: #323233;
+    text-align: left;
+    background-color: transparent;
+    border: 0;
+    resize: none
+}
+
+.van-field__control::-webkit-input-placeholder {
+    color: #969799
+}
+
+.van-field__control::placeholder {
+    color: #969799
+}
+
+.van-field__control:disabled {
+    color: #969799;
+    -webkit-text-fill-color: #969799;
+    background-color: transparent;
+    opacity: 1
+}
+
+.van-field__control--center {
+    text-align: center
+}
+
+.van-field__control--right {
+    text-align: right
+}
+
+.van-field__control[type=date],
+.van-field__control[type=datetime-local],
+.van-field__control[type=time] {
+    min-height: 24px
+}
+
+.van-field__control[type=search] {
+    -webkit-appearance: none
+}
+
+.van-field__button,
+.van-field__clear,
+.van-field__icon,
+.van-field__right-icon {
+    -webkit-flex-shrink: 0;
+    flex-shrink: 0
+}
+
+.van-field__clear,
+.van-field__right-icon {
+    margin-right: -8px;
+    padding: 0 8px;
+    line-height: inherit
+}
+
+.van-field__clear {
+    color: #c8c9cc;
+    font-size: 16px
+}
+
+.van-field__left-icon .van-icon,
+.van-field__right-icon .van-icon {
+    display: block;
+    min-width: 1em;
+    font-size: 16px;
+    line-height: inherit
+}
+
+.van-field__left-icon {
+    margin-right: 5px
+}
+
+.van-field__right-icon {
+    color: #969799
+}
+
+.van-field__button {
+    padding-left: 8px
+}
+
+.van-field__error-message {
+    color: #ee0a24;
+    font-size: 12px;
+    text-align: left
+}
+
+.van-field__error-message--center {
+    text-align: center
+}
+
+.van-field__error-message--right {
+    text-align: right
+}
+
+.van-field__word-limit {
+    margin-top: 4px;
+    color: #7d7e80;
+    font-size: 12px;
+    line-height: 16px;
+    text-align: right
+}
+
+.van-field--error .van-field__control::-webkit-input-placeholder {
+    color: #ee0a24;
+    -webkit-text-fill-color: #ee0a24
+}
+
+.van-field--error .van-field__control,
+.van-field--error .van-field__control::placeholder {
+    color: #ee0a24;
+    -webkit-text-fill-color: #ee0a24
+}
+
+.van-field--min-height .van-field__control {
+    min-height: 60px
+}
+
+.van-radio {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    overflow: hidden;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-radio__icon {
+    -webkit-box-flex: 0;
+    -webkit-flex: none;
+    flex: none;
+    height: 1em;
+    font-size: 20px;
+    line-height: 1em
+}
+
+.van-radio__icon .van-icon {
+    display: block;
+    box-sizing: border-box;
+    width: 1.25em;
+    height: 1.25em;
+    color: transparent;
+    font-size: .8em;
+    line-height: inherit;
+    text-align: center;
+    border: 1px solid #e5e5e5;
+    -webkit-transition-duration: .2s;
+    transition-duration: .2s;
+    -webkit-transition-property: color, border-color, background-color;
+    transition-property: color, border-color, background-color
+}
+
+.van-radio__icon--round .van-icon {
+    border-radius: 100%
+}
+
+.van-radio__icon--checked .van-icon {
+    color: #fff;
+    background-color: #1989fa;
+    border-color: #1989fa
+}
+
+.van-radio__icon--disabled .van-icon {
+    background-color: #ebedf0;
+    border-color: #c8c9cc
+}
+
+.van-radio__label {
+    margin-left: 8px;
+    color: #323233;
+    line-height: 20px
+}
+
+.van-radio__label--left {
+    margin: 0 8px 0 0
+}
+
+.van-radio__label--disabled {
+    color: #c8c9cc
+}
+
+.van-switch,
+.van-switch__node {
+    height: 1em;
+    background-color: #fff
+}
+
+.van-switch {
+    position: relative;
+    display: inline-block;
+    box-sizing: content-box;
+    width: 2em;
+    font-size: 30px;
+    border: 1px solid rgba(0, 0, 0, .1);
+    border-radius: 1em;
+    -webkit-transition: background-color .3s;
+    transition: background-color .3s
+}
+
+.van-switch__node {
+    position: absolute;
+    top: 0;
+    left: 0;
+    z-index: 1;
+    width: 1em;
+    border-radius: 100%;
+    box-shadow: 0 3px 1px 0 rgba(0, 0, 0, .05), 0 2px 2px 0 rgba(0, 0, 0, .1), 0 3px 3px 0 rgba(0, 0, 0, .05);
+    -webkit-transition: -webkit-transform .3s cubic-bezier(.3, 1.05, .4, 1.05);
+    transition: transform .3s cubic-bezier(.3, 1.05, .4, 1.05);
+    transition: transform .3s cubic-bezier(.3, 1.05, .4, 1.05), -webkit-transform .3s cubic-bezier(.3, 1.05, .4, 1.05)
+}
+
+.van-switch__loading {
+    top: 25%;
+    left: 25%;
+    width: 50%;
+    height: 50%;
+    line-height: 1
+}
+
+.van-switch--on {
+    background-color: #1989fa
+}
+
+.van-switch--on .van-switch__node {
+    -webkit-transform: translateX(1em);
+    transform: translateX(1em)
+}
+
+.van-switch--disabled {
+    opacity: .5
+}
+
+.van-uploader {
+    position: relative;
+    display: inline-block
+}
+
+.van-uploader__wrapper {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-flex-wrap: wrap;
+    flex-wrap: wrap
+}
+
+.van-uploader__input {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    overflow: hidden;
+    cursor: pointer;
+    opacity: 0
+}
+
+.van-uploader__input-wrapper {
+    position: relative
+}
+
+.van-uploader__upload {
+    position: relative;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+    box-sizing: border-box;
+    width: 80px;
+    height: 80px;
+    margin: 0 8px 8px 0;
+    background-color: #fff;
+    border: 1px dashed #e5e5e5;
+    border-radius: 4px
+}
+
+.van-uploader__upload-icon {
+    color: #969799;
+    font-size: 24px
+}
+
+.van-uploader__upload-text {
+    margin-top: 8px;
+    color: #969799;
+    font-size: 12px
+}
+
+.van-uploader__preview {
+    position: relative;
+    margin: 0 8px 8px 0
+}
+
+.van-uploader__preview-image {
+    display: block;
+    width: 80px;
+    height: 80px
+}
+
+.van-uploader__preview-delete {
+    position: absolute;
+    top: -8px;
+    right: -8px;
+    color: #969799;
+    font-size: 18px;
+    background-color: #fff;
+    border-radius: 100%
+}
+
+.van-uploader__file {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+    width: 80px;
+    height: 80px;
+    background-color: #f8f8f8;
+    border-radius: 4px
+}
+
+.van-uploader__file-icon {
+    color: #7d7e80;
+    font-size: 20px
+}
+
+.van-uploader__file-name {
+    box-sizing: border-box;
+    width: 100%;
+    margin-top: 8px;
+    padding: 0 4px;
+    color: #7d7e80;
+    font-size: 12px;
+    text-align: center
+}
+
+.van-password-input {
+    position: relative;
+    margin: 0 16px;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-password-input__error-info,
+.van-password-input__info {
+    margin-top: 16px;
+    font-size: 14px;
+    text-align: center
+}
+
+.van-password-input__info {
+    color: #969799
+}
+
+.van-password-input__error-info {
+    color: #ee0a24
+}
+
+.van-password-input__security {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    width: 100%;
+    height: 50px
+}
+
+.van-password-input__security::after {
+    border-radius: 6px
+}
+
+.van-password-input__security li {
+    position: relative;
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    height: 100%;
+    font-size: 20px;
+    line-height: 50px;
+    text-align: center;
+    background-color: #fff
+}
+
+.van-password-input__security i {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    width: 10px;
+    height: 10px;
+    margin: -5px 0 0 -5px;
+    background-color: #000;
+    border-radius: 100%;
+    visibility: hidden
+}
+
+.van-password-input__cursor {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    width: 1px;
+    height: 40%;
+    background-color: #323233;
+    -webkit-transform: translate(-50%, -50%);
+    transform: translate(-50%, -50%);
+    -webkit-animation: 1s van-cursor-flicker infinite;
+    animation: 1s van-cursor-flicker infinite
+}
+
+.van-number-keyboard {
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    background-color: #fff;
+    -webkit-animation-timing-function: ease-out;
+    animation-timing-function: ease-out;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-number-keyboard__title {
+    position: relative;
+    height: 30px;
+    color: #7d7e80;
+    font-size: 14px;
+    line-height: 30px;
+    text-align: center
+}
+
+.van-number-keyboard__title-left {
+    position: absolute;
+    left: 0
+}
+
+.van-number-keyboard__body {
+    position: relative;
+    box-sizing: border-box
+}
+
+.van-number-keyboard__close {
+    position: absolute;
+    right: 0;
+    padding: 0 16px;
+    color: #1989fa;
+    font-size: 14px
+}
+
+.van-number-keyboard__close:active {
+    background-color: #f2f3f5
+}
+
+.van-number-keyboard__sidebar {
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    width: 25%;
+    height: 216px
+}
+
+.van-number-keyboard--custom .van-number-keyboard__body {
+    padding-right: 25%
+}
+
+.van-number-keyboard--safe-area-inset-bottom {
+    padding-bottom: constant(safe-area-inset-bottom);
+    padding-bottom: env(safe-area-inset-bottom)
+}
+
+.van-key {
+    display: inline-block;
+    width: 33.33333333%;
+    height: 54px;
+    font-size: 24px;
+    font-style: normal;
+    line-height: 54px;
+    text-align: center;
+    vertical-align: middle
+}
+
+.van-key::after {
+    border-width: 1px 1px 0 0
+}
+
+.van-key--middle {
+    width: 66.66666667%
+}
+
+.van-key--big {
+    width: 100%;
+    height: 108px;
+    line-height: 108px
+}
+
+.van-key--blue,
+.van-key--delete {
+    font-size: 16px
+}
+
+.van-key--blue {
+    color: #fff
+}
+
+.van-key--blue,
+.van-key--blue.van-key--active {
+    background-color: #1989fa
+}
+
+.van-key--blue::after {
+    border-color: #1989fa
+}
+
+.van-key--blue:active {
+    background-color: #0570db
+}
+
+.van-key--gray {
+    background-color: #ebedf0
+}
+
+.van-action-sheet__cancel:active,
+.van-action-sheet__item:active,
+.van-key--active {
+    background-color: #f2f3f5
+}
+
+.van-action-sheet {
+    max-height: 90%;
+    color: #323233
+}
+
+.van-action-sheet__cancel,
+.van-action-sheet__item {
+    display: block;
+    width: 100%;
+    font-size: 16px;
+    line-height: 50px;
+    text-align: center;
+    background-color: #fff;
+    border: 0
+}
+
+.van-action-sheet__item {
+    height: 50px
+}
+
+.van-action-sheet__item--disabled {
+    color: #c8c9cc
+}
+
+.van-action-sheet__item--disabled:active {
+    background-color: #fff
+}
+
+.van-action-sheet__subname {
+    margin-left: 4px;
+    color: #7d7e80;
+    font-size: 12px
+}
+
+.van-action-sheet__cancel::before {
+    display: block;
+    height: 8px;
+    background-color: #f8f8f8;
+    content: ' '
+}
+
+.van-action-sheet__header {
+    font-weight: 500;
+    font-size: 16px;
+    line-height: 44px;
+    text-align: center
+}
+
+.van-action-sheet__description {
+    padding: 16px;
+    color: #7d7e80;
+    font-size: 14px;
+    line-height: 20px;
+    text-align: center
+}
+
+.van-action-sheet__close {
+    position: absolute;
+    top: 0;
+    right: 0;
+    padding: 0 12px;
+    color: #969799;
+    font-size: 18px;
+    line-height: inherit
+}
+
+.van-dialog {
+    position: fixed;
+    top: 45%;
+    left: 50%;
+    width: 320px;
+    overflow: hidden;
+    font-size: 16px;
+    background-color: #fff;
+    border-radius: 16px;
+    -webkit-transform: translate3d(-50%, -50%, 0);
+    transform: translate3d(-50%, -50%, 0);
+    -webkit-backface-visibility: hidden;
+    backface-visibility: hidden;
+    -webkit-transition: .3s;
+    transition: .3s;
+    -webkit-transition-property: opacity, -webkit-transform;
+    transition-property: transform, opacity;
+    transition-property: transform, opacity, -webkit-transform
+}
+
+@media (max-width:321px) {
+    .van-dialog {
+        width: 90%
+    }
+}
+
+.van-dialog__header {
+    padding-top: 24px;
+    font-weight: 500;
+    line-height: 24px;
+    text-align: center
+}
+
+.van-dialog__header--isolated {
+    padding: 24px 0
+}
+
+.van-dialog__message {
+    max-height: 60vh;
+    padding: 24px;
+    overflow-y: auto;
+    font-size: 14px;
+    line-height: 20px;
+    white-space: pre-wrap;
+    text-align: center;
+    word-wrap: break-word;
+    -webkit-overflow-scrolling: touch
+}
+
+.van-dialog__message--has-title {
+    padding-top: 12px;
+    color: #7d7e80
+}
+
+.van-dialog__message--left {
+    text-align: left
+}
+
+.van-dialog__message--right {
+    text-align: right
+}
+
+.van-dialog__footer {
+    overflow: hidden;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-dialog__footer--buttons {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex
+}
+
+.van-dialog__footer--buttons .van-button {
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1
+}
+
+.van-dialog .van-button {
+    border: 0
+}
+
+.van-dialog__confirm,
+.van-dialog__confirm:active {
+    color: #1989fa
+}
+
+.van-dialog-bounce-enter {
+    -webkit-transform: translate3d(-50%, -50%, 0) scale(.7);
+    transform: translate3d(-50%, -50%, 0) scale(.7);
+    opacity: 0
+}
+
+.van-dialog-bounce-leave-active {
+    -webkit-transform: translate3d(-50%, -50%, 0) scale(.9);
+    transform: translate3d(-50%, -50%, 0) scale(.9);
+    opacity: 0
+}
+
+.van-dropdown-item {
+    position: fixed;
+    right: 0;
+    left: 0;
+    overflow: hidden
+}
+
+.van-dropdown-item__option {
+    text-align: left
+}
+
+.van-dropdown-item__option--active,
+.van-dropdown-item__option--active .van-dropdown-item__icon {
+    color: #1989fa
+}
+
+.van-dropdown-item--up {
+    top: 0
+}
+
+.van-dropdown-item--down {
+    bottom: 0
+}
+
+.van-dropdown-item__content {
+    position: absolute;
+    max-height: 80%
+}
+
+.van-dropdown-item__icon {
+    display: block;
+    line-height: inherit
+}
+
+.van-dropdown-menu,
+.van-dropdown-menu__item {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex
+}
+
+.van-dropdown-menu {
+    height: 50px;
+    background-color: #fff;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-dropdown-menu__item {
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+    min-width: 0
+}
+
+.van-dropdown-menu__item:active {
+    opacity: .7
+}
+
+.van-dropdown-menu__item--disabled:active {
+    opacity: 1
+}
+
+.van-dropdown-menu__item--disabled .van-dropdown-menu__title {
+    color: #969799
+}
+
+.van-dropdown-menu__title {
+    position: relative;
+    box-sizing: border-box;
+    max-width: 100%;
+    padding: 0 8px;
+    color: #323233;
+    font-size: 15px;
+    line-height: 18px
+}
+
+.van-dropdown-menu__title::after {
+    position: absolute;
+    top: 50%;
+    right: -4px;
+    margin-top: -5px;
+    border: 3px solid;
+    border-color: transparent transparent currentColor currentColor;
+    -webkit-transform: rotate(-45deg);
+    transform: rotate(-45deg);
+    opacity: .8;
+    content: ''
+}
+
+.van-dropdown-menu__title--active {
+    color: #1989fa
+}
+
+.van-dropdown-menu__title--down::after {
+    margin-top: -1px;
+    -webkit-transform: rotate(135deg);
+    transform: rotate(135deg)
+}
+
+.van-picker {
+    position: relative;
+    background-color: #fff;
+    -webkit-user-select: none;
+    user-select: none;
+    -webkit-text-size-adjust: 100%
+}
+
+.van-picker__toolbar {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-pack: justify;
+    -webkit-justify-content: space-between;
+    justify-content: space-between;
+    height: 44px;
+    line-height: 44px
+}
+
+.van-picker__cancel,
+.van-picker__confirm {
+    padding: 0 16px;
+    color: #1989fa;
+    font-size: 14px;
+    background-color: transparent;
+    border: 0
+}
+
+.van-picker__cancel:active,
+.van-picker__confirm:active {
+    background-color: #f2f3f5
+}
+
+.van-picker__title {
+    max-width: 50%;
+    font-weight: 500;
+    font-size: 16px;
+    text-align: center
+}
+
+.van-picker__columns,
+.van-picker__loading {
+    position: relative;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex
+}
+
+.van-picker__loading {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 2;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+    color: #1989fa;
+    background-color: rgba(255, 255, 255, .9)
+}
+
+.van-picker__frame,
+.van-picker__mask {
+    position: absolute;
+    left: 0;
+    width: 100%;
+    pointer-events: none
+}
+
+.van-picker__frame {
+    top: 50%;
+    z-index: 3;
+    -webkit-transform: translateY(-50%);
+    transform: translateY(-50%)
+}
+
+.van-picker__mask {
+    top: 0;
+    z-index: 2;
+    height: 100%;
+    background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, .9), rgba(255, 255, 255, .4)), -webkit-linear-gradient(bottom, rgba(255, 255, 255, .9), rgba(255, 255, 255, .4));
+    background-image: linear-gradient(180deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, .4)), linear-gradient(0deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, .4));
+    background-repeat: no-repeat;
+    background-position: top, bottom;
+    -webkit-backface-visibility: hidden;
+    backface-visibility: hidden
+}
+
+.van-picker-column {
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    overflow: hidden;
+    font-size: 16px;
+    text-align: center
+}
+
+.van-picker-column__wrapper {
+    -webkit-transition-timing-function: cubic-bezier(.23, 1, .68, 1);
+    transition-timing-function: cubic-bezier(.23, 1, .68, 1)
+}
+
+.van-picker-column__item {
+    padding: 0 5px;
+    color: #000
+}
+
+.van-picker-column__item--disabled {
+    opacity: .3
+}
+
+.van-pull-refresh {
+    overflow: hidden;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-pull-refresh__track {
+    position: relative;
+    -webkit-transition-property: -webkit-transform;
+    transition-property: transform;
+    transition-property: transform, -webkit-transform
+}
+
+.van-pull-refresh__head {
+    position: absolute;
+    top: -50px;
+    left: 0;
+    width: 100%;
+    height: 50px;
+    overflow: hidden;
+    color: #969799;
+    font-size: 14px;
+    line-height: 50px;
+    text-align: center
+}
+
+.van-notify {
+    box-sizing: border-box;
+    padding: 8px 16px;
+    font-size: 14px;
+    line-height: 20px;
+    white-space: pre-wrap;
+    text-align: center;
+    word-wrap: break-word
+}
+
+.van-notify--primary {
+    background-color: #1989fa
+}
+
+.van-notify--success {
+    background-color: #07c160
+}
+
+.van-notify--danger {
+    background-color: #ee0a24
+}
+
+.van-notify--warning {
+    background-color: #ff976a
+}
+
+.van-toast {
+    position: fixed;
+    top: 50%;
+    left: 50%;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+    box-sizing: content-box;
+    width: 90px;
+    max-width: 70%;
+    min-height: 90px;
+    padding: 16px;
+    color: #fff;
+    font-size: 14px;
+    line-height: 20px;
+    white-space: pre-wrap;
+    text-align: center;
+    word-wrap: break-word;
+    background-color: rgba(50, 50, 51, .88);
+    border-radius: 4px;
+    -webkit-transform: translate3d(-50%, -50%, 0);
+    transform: translate3d(-50%, -50%, 0)
+}
+
+.van-toast--unclickable * {
+    pointer-events: none
+}
+
+.van-toast--html,
+.van-toast--text {
+    width: -webkit-fit-content;
+    width: fit-content;
+    min-width: 96px;
+    min-height: unset;
+    padding: 8px 12px
+}
+
+.van-toast--html .van-toast__text,
+.van-toast--text .van-toast__text {
+    margin-top: 0
+}
+
+.van-toast--top {
+    top: 50px
+}
+
+.van-toast--bottom {
+    top: auto;
+    bottom: 50px
+}
+
+.van-toast__icon {
+    font-size: 40px
+}
+
+.van-toast__loading {
+    padding: 4px;
+    color: #fff
+}
+
+.van-toast__text {
+    margin-top: 8px
+}
+
+.van-swipe-cell {
+    position: relative;
+    overflow: hidden
+}
+
+.van-swipe-cell__wrapper {
+    -webkit-transition-timing-function: cubic-bezier(.18, .89, .32, 1);
+    transition-timing-function: cubic-bezier(.18, .89, .32, 1);
+    -webkit-transition-property: -webkit-transform;
+    transition-property: transform;
+    transition-property: transform, -webkit-transform
+}
+
+.van-swipe-cell__left,
+.van-swipe-cell__right {
+    position: absolute;
+    top: 0;
+    height: 100%
+}
+
+.van-swipe-cell__left {
+    left: 0;
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0)
+}
+
+.van-swipe-cell__right {
+    right: 0;
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0)
+}
+
+.van-switch-cell {
+    padding-top: 9px;
+    padding-bottom: 9px
+}
+
+.van-switch-cell--large {
+    padding-top: 11px;
+    padding-bottom: 11px
+}
+
+.van-switch-cell .van-switch {
+    float: right
+}
+
+.van-tree-select {
+    position: relative;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    font-size: 14px;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-tree-select__nav {
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    overflow-y: auto;
+    background-color: #fafafa;
+    -webkit-overflow-scrolling: touch
+}
+
+.van-tree-select__nav-item {
+    padding: 12px 8px 12px 12px
+}
+
+.van-tree-select__content {
+    -webkit-box-flex: 2;
+    -webkit-flex: 2;
+    flex: 2;
+    overflow-y: auto;
+    background-color: #fff;
+    -webkit-overflow-scrolling: touch
+}
+
+.van-tree-select__item {
+    position: relative;
+    padding: 0 32px 0 16px;
+    font-weight: 700;
+    line-height: 44px
+}
+
+.van-tree-select__item--active {
+    color: #ee0a24
+}
+
+.van-tree-select__item--disabled {
+    color: #c8c9cc
+}
+
+.van-tree-select__selected {
+    position: absolute;
+    top: 50%;
+    right: 16px;
+    margin-top: -8px
+}
+
+.van-address-edit__buttons {
+    padding: 32px 16px
+}
+
+.van-address-edit__buttons .van-button {
+    margin-bottom: 12px
+}
+
+.van-address-edit-detail {
+    padding: 0
+}
+
+.van-address-edit-detail__finish {
+    color: #1989fa;
+    font-size: 12px
+}
+
+.van-address-list {
+    box-sizing: border-box;
+    height: 100%;
+    padding-bottom: 100px
+}
+
+.van-address-list__add {
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    z-index: 999
+}
+
+.van-address-list__disabled-text {
+    padding: 0 16px;
+    color: #969799;
+    font-size: 12px;
+    line-height: 30px
+}
+
+.van-address-item {
+    padding: 16px
+}
+
+.van-address-item__value {
+    padding-right: 32px
+}
+
+.van-address-item__name {
+    margin-bottom: 4px;
+    font-weight: 500;
+    font-size: 14px;
+    line-height: 20px
+}
+
+.van-address-item__address {
+    color: #7d7e80;
+    font-size: 12px;
+    line-height: 16px
+}
+
+.van-address-item--disabled .van-address-item__address,
+.van-address-item--disabled .van-address-item__name {
+    color: #969799
+}
+
+.van-address-item__edit {
+    position: absolute;
+    top: 50%;
+    right: 16px;
+    font-size: 16px;
+    -webkit-transform: translate(0, -50%);
+    transform: translate(0, -50%)
+}
+
+.van-address-item .van-radio__icon--checked .van-icon {
+    background-color: #ee0a24;
+    border-color: #ee0a24
+}
+
+.van-card {
+    position: relative;
+    box-sizing: border-box;
+    padding: 8px 16px;
+    color: #323233;
+    font-size: 12px;
+    background-color: #fafafa
+}
+
+.van-card:not(:first-child) {
+    margin-top: 8px
+}
+
+.van-card__header {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex
+}
+
+.van-card__thumb {
+    position: relative;
+    -webkit-box-flex: 0;
+    -webkit-flex: none;
+    flex: none;
+    width: 90px;
+    height: 90px;
+    margin-right: 8px
+}
+
+.van-card__content {
+    position: relative;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    min-width: 0;
+    min-height: 90px
+}
+
+.van-card__content--centered {
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center
+}
+
+.van-card__desc,
+.van-card__title {
+    word-wrap: break-word
+}
+
+.van-card__title {
+    max-height: 32px;
+    font-weight: 500;
+    line-height: 16px
+}
+
+.van-card__desc {
+    max-height: 20px;
+    color: #7d7e80
+}
+
+.van-card__bottom,
+.van-card__desc {
+    line-height: 20px
+}
+
+.van-card__price {
+    display: inline-block;
+    color: #ee0a24;
+    font-weight: 500
+}
+
+.van-card__origin-price {
+    display: inline-block;
+    margin-left: 5px;
+    color: #7d7e80;
+    font-size: 10px;
+    text-decoration: line-through
+}
+
+.van-card__num {
+    float: right
+}
+
+.van-card__tag {
+    position: absolute;
+    top: 2px;
+    left: 0
+}
+
+.van-card__footer {
+    -webkit-box-flex: 0;
+    -webkit-flex: none;
+    flex: none;
+    text-align: right
+}
+
+.van-card__footer .van-button {
+    margin-left: 5px
+}
+
+.van-contact-card {
+    padding: 16px
+}
+
+.van-contact-card__value {
+    margin-left: 5px;
+    line-height: 20px
+}
+
+.van-contact-card--add .van-contact-card__value {
+    line-height: 40px
+}
+
+.van-contact-card--add .van-cell__left-icon {
+    color: #1989fa;
+    font-size: 40px
+}
+
+.van-contact-card::before {
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    height: 2px;
+    background: -webkit-repeating-linear-gradient(135deg, #ff6c6c 0, #ff6c6c 20%, transparent 0, transparent 25%, #1989fa 0, #1989fa 45%, transparent 0, transparent 50%);
+    background: repeating-linear-gradient(-45deg, #ff6c6c 0, #ff6c6c 20%, transparent 0, transparent 25%, #1989fa 0, #1989fa 45%, transparent 0, transparent 50%);
+    background-size: 80px;
+    content: ''
+}
+
+.van-contact-list {
+    box-sizing: border-box;
+    height: 100%;
+    padding-bottom: 50px
+}
+
+.van-contact-list__item {
+    padding: 16px
+}
+
+.van-contact-list__item-value {
+    padding-right: 32px
+}
+
+.van-contact-list__group {
+    box-sizing: border-box;
+    height: 100%;
+    overflow-y: scroll;
+    -webkit-overflow-scrolling: touch
+}
+
+.van-contact-list__name {
+    font-weight: 500;
+    font-size: 14px;
+    line-height: 20px
+}
+
+.van-contact-list__edit {
+    position: absolute;
+    top: 50%;
+    right: 16px;
+    font-size: 16px;
+    -webkit-transform: translate(0, -50%);
+    transform: translate(0, -50%)
+}
+
+.van-contact-list__add {
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    z-index: 999
+}
+
+.van-contact-edit__buttons {
+    padding: 32px 16px
+}
+
+.van-contact-edit .van-cell__title {
+    max-width: 65px
+}
+
+.van-contact-edit .van-button {
+    margin-bottom: 12px
+}
+
+.van-coupon {
+    margin: 0 16px 16px;
+    overflow: hidden;
+    background-color: #fff;
+    border-radius: 4px;
+    box-shadow: 0 0 4px rgba(0, 0, 0, .1)
+}
+
+.van-coupon:active {
+    background-color: #f2f3f5
+}
+
+.van-coupon__content {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    box-sizing: border-box;
+    height: 100px;
+    padding: 24px 0 0 16px
+}
+
+.van-coupon h2,
+.van-coupon p {
+    margin: 0;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis
+}
+
+.van-coupon h2 {
+    height: 34px;
+    font-weight: 500;
+    line-height: 34px
+}
+
+.van-coupon p {
+    color: #969799;
+    font-size: 12px;
+    line-height: 16px
+}
+
+.van-coupon__head {
+    position: relative;
+    min-width: 85px;
+    padding-right: 8px
+}
+
+.van-coupon__head p {
+    white-space: pre-wrap
+}
+
+.van-coupon__amount {
+    color: #ee0a24;
+    font-size: 24px
+}
+
+.van-coupon__amount span {
+    font-size: 50%
+}
+
+.van-coupon__amount span:not(:empty) {
+    margin-left: 2px
+}
+
+.van-coupon__body {
+    position: relative;
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    border-radius: 0 4px 4px 0
+}
+
+.van-coupon__name {
+    font-size: 16px
+}
+
+.van-coupon__corner {
+    position: absolute;
+    top: 16px;
+    right: 16px
+}
+
+.van-coupon__description {
+    padding: 8px 16px;
+    background-color: #fafafa;
+    border-top: 1px dashed #ebedf0
+}
+
+.van-coupon--disabled:active {
+    background-color: #fff
+}
+
+.van-coupon--disabled .van-coupon-item__content {
+    height: 90px
+}
+
+.van-coupon--disabled h2,
+.van-coupon--disabled p,
+.van-coupon--disabled span {
+    color: #969799
+}
+
+.van-coupon-cell--selected {
+    color: #323233
+}
+
+.van-coupon-list {
+    position: relative;
+    height: 100%;
+    background-color: #f8f8f8
+}
+
+.van-coupon-list__field {
+    padding: 8px 16px
+}
+
+.van-coupon-list__exchange {
+    height: 32px;
+    line-height: 30px
+}
+
+.van-coupon-list__list {
+    box-sizing: border-box;
+    padding: 16px 0;
+    overflow-y: auto;
+    -webkit-overflow-scrolling: touch
+}
+
+.van-coupon-list__close {
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    font-weight: 500
+}
+
+.van-coupon-list__empty {
+    padding-top: 60px;
+    text-align: center
+}
+
+.van-coupon-list__empty p {
+    margin: 16px 0;
+    color: #969799;
+    font-size: 14px;
+    line-height: 20px
+}
+
+.van-coupon-list__empty img {
+    width: 200px;
+    height: 200px
+}
+
+.van-goods-action {
+    position: fixed;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    background-color: #fff
+}
+
+.van-goods-action--safe-area-inset-bottom {
+    padding-bottom: constant(safe-area-inset-bottom);
+    padding-bottom: env(safe-area-inset-bottom)
+}
+
+.van-goods-action-button {
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    height: 40px;
+    font-weight: 500;
+    font-size: 14px;
+    line-height: normal;
+    border: 0
+}
+
+.van-goods-action-button--first {
+    margin-left: 5px;
+    border-top-left-radius: 20px;
+    border-bottom-left-radius: 20px
+}
+
+.van-goods-action-button--last {
+    margin-right: 5px;
+    border-top-right-radius: 20px;
+    border-bottom-right-radius: 20px
+}
+
+.van-goods-action-button--warning {
+    background: -webkit-linear-gradient(left, #ffd01e, #ff8917);
+    background: linear-gradient(to right, #ffd01e, #ff8917)
+}
+
+.van-goods-action-button--danger {
+    background: -webkit-linear-gradient(left, #ff6034, #ee0a24);
+    background: linear-gradient(to right, #ff6034, #ee0a24)
+}
+
+@media (max-width:321px) {
+    .van-goods-action-button {
+        font-size: 13px
+    }
+}
+
+.van-goods-action-icon {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+    min-width: 48px;
+    height: 50px;
+    color: #7d7e80;
+    font-size: 10px;
+    line-height: 1;
+    text-align: center;
+    background-color: #fff
+}
+
+.van-goods-action-icon:active {
+    background-color: #f2f3f5
+}
+
+.van-goods-action-icon__icon {
+    width: 1em;
+    margin: 0 auto 5px;
+    color: #323233;
+    font-size: 18px
+}
+
+.van-submit-bar {
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    z-index: 100;
+    width: 100%;
+    background-color: #fff;
+    -webkit-user-select: none;
+    user-select: none
+}
+
+.van-submit-bar__tip {
+    padding: 8px 12px;
+    color: #f56723;
+    font-size: 12px;
+    line-height: 1.5;
+    background-color: #fff7cc
+}
+
+.van-submit-bar__tip-icon {
+    min-width: 18px;
+    font-size: 12px;
+    vertical-align: middle
+}
+
+.van-submit-bar__tip-text {
+    vertical-align: middle
+}
+
+.van-submit-bar__bar {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-box-pack: end;
+    -webkit-justify-content: flex-end;
+    justify-content: flex-end;
+    height: 50px;
+    font-size: 14px
+}
+
+.van-submit-bar__text {
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    flex: 1;
+    padding-right: 12px;
+    color: #323233;
+    font-weight: 500;
+    text-align: right
+}
+
+.van-submit-bar__text span {
+    display: inline-block
+}
+
+.van-submit-bar__suffix-label {
+    margin-left: 5px
+}
+
+.van-submit-bar__price {
+    color: #ee0a24;
+    font-size: 18px
+}
+
+.van-submit-bar__price::first-letter {
+    font-size: 14px
+}
+
+.van-submit-bar__button {
+    width: 110px
+}
+
+.van-submit-bar--safe-area-inset-bottom {
+    padding-bottom: constant(safe-area-inset-bottom);
+    padding-bottom: env(safe-area-inset-bottom)
+}
+
+.van-sku-container {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    -webkit-box-align: stretch;
+    -webkit-align-items: stretch;
+    align-items: stretch;
+    min-height: 50%;
+    max-height: 80%;
+    overflow-y: visible;
+    font-size: 14px;
+    background: #fff
+}
+
+.van-sku-body {
+    -webkit-box-flex: 1;
+    -webkit-flex: 1 1 auto;
+    flex: 1 1 auto;
+    min-height: 44px;
+    overflow-y: scroll;
+    -webkit-overflow-scrolling: touch
+}
+
+.van-sku-body::-webkit-scrollbar {
+    display: none
+}
+
+.van-sku-header {
+    margin-left: 16px
+}
+
+.van-sku-header__img-wrap {
+    position: relative;
+    float: left;
+    width: 96px;
+    height: 96px;
+    margin: 12px 0;
+    overflow: hidden;
+    background: #f8f8f8;
+    border-radius: 4px
+}
+
+.van-sku-header__img-wrap img {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    max-width: 100%;
+    max-height: 100%;
+    margin: auto
+}
+
+.van-sku-header__goods-info {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    -webkit-box-pack: end;
+    -webkit-justify-content: flex-end;
+    justify-content: flex-end;
+    min-height: 96px;
+    padding: 12px 36px 12px 8px;
+    overflow: hidden
+}
+
+.van-sku-header-item {
+    margin-top: 8px;
+    color: #969799;
+    font-size: 12px;
+    line-height: 16px
+}
+
+.van-sku__price-num,
+.van-sku__price-symbol {
+    font-size: 16px;
+    vertical-align: middle
+}
+
+.van-sku__price-num {
+    font-weight: 500;
+    font-size: 22px;
+    word-wrap: break-word
+}
+
+.van-sku__goods-price {
+    color: #ee0a24
+}
+
+.van-sku__price-tag {
+    position: relative;
+    display: inline-block;
+    margin-left: 8px;
+    padding: 0 5px;
+    overflow: hidden;
+    color: #ee0a24;
+    font-size: 12px;
+    line-height: 16px;
+    vertical-align: middle;
+    border-radius: 8px
+}
+
+.van-sku__price-tag::before {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    background: currentColor;
+    opacity: .1;
+    content: ''
+}
+
+.van-sku-group-container {
+    margin-left: 16px;
+    padding: 12px 0 2px
+}
+
+.van-sku-group-container--hide-soldout .van-sku-row__item--disabled {
+    display: none
+}
+
+.van-sku-row {
+    margin: 0 3px 12px 0
+}
+
+.van-sku-row:last-child {
+    margin-bottom: 0
+}
+
+.van-sku-row__title {
+    padding-bottom: 12px
+}
+
+.van-sku-row__item {
+    position: relative;
+    display: -webkit-inline-box;
+    display: -webkit-inline-flex;
+    display: inline-flex;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+    min-width: 40px;
+    margin: 0 12px 12px 0;
+    overflow: hidden;
+    color: #323233;
+    font-size: 13px;
+    line-height: 16px;
+    vertical-align: middle;
+    border-radius: 4px
+}
+
+.van-sku-row__item::before {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    background: #f7f8fa;
+    content: ''
+}
+
+.van-sku-row__item-img {
+    z-index: 1;
+    width: 24px;
+    height: 24px;
+    margin: 4px 0 4px 4px;
+    object-fit: cover;
+    border-radius: 2px
+}
+
+.van-sku-row__item-name {
+    z-index: 1;
+    padding: 8px
+}
+
+.van-sku-row__item--active {
+    color: #ee0a24
+}
+
+.van-sku-row__item--active::before {
+    background: currentColor;
+    opacity: .1
+}
+
+.van-sku-row__item--disabled {
+    color: #c8c9cc;
+    background: #f2f3f5
+}
+
+.van-sku-row__item--disabled .van-sku-row__item-img {
+    opacity: .3
+}
+
+.van-sku-stepper-stock {
+    margin-left: 16px;
+    padding: 12px 0
+}
+
+.van-sku-stepper-container {
+    height: 30px;
+    margin-right: 20px
+}
+
+.van-sku__stepper {
+    float: right
+}
+
+.van-sku__stepper-title {
+    float: left;
+    line-height: 30px
+}
+
+.van-sku__stock {
+    display: inline-block;
+    margin-right: 8px;
+    color: #969799;
+    font-size: 12px
+}
+
+.van-sku__stock-num--highlight {
+    color: #ee0a24
+}
+
+.van-sku__quota {
+    display: inline-block;
+    color: #ee0a24;
+    font-size: 12px
+}
+
+.van-sku-messages {
+    padding-bottom: 32px
+}
+
+.van-sku-messages__image-cell .van-cell__title {
+    max-width: 90px
+}
+
+.van-sku-messages__image-cell .van-cell__value {
+    overflow: visible;
+    text-align: left
+}
+
+.van-sku-img-uploader {
+    display: inline-block
+}
+
+.van-sku-img-uploader__uploader {
+    vertical-align: middle
+}
+
+.van-sku-img-uploader__img {
+    position: relative;
+    float: left;
+    width: 64px;
+    height: 64px;
+    margin-right: 8px;
+    background: #f7f8fa;
+    border-radius: 2px
+}
+
+.van-sku-img-uploader__img img {
+    width: 100%;
+    height: 100%;
+    object-fit: contain
+}
+
+.van-sku-img-uploader__delete {
+    position: absolute;
+    top: -12px;
+    right: -14px;
+    z-index: 1;
+    padding: 6px;
+    color: rgba(50, 50, 51, .8);
+    opacity: .8
+}
+
+.van-sku-img-uploader__delete::before {
+    background-color: #fff;
+    border-radius: 14px
+}
+
+.van-sku-img-uploader__mask {
+    position: absolute;
+    top: 0;
+    left: 0;
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-orient: vertical;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: column;
+    flex-direction: column;
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+    width: 100%;
+    height: 100%;
+    color: #fff;
+    background: rgba(50, 50, 51, .8)
+}
+
+.van-sku-img-uploader__warn-text {
+    margin-top: 6px;
+    font-size: 12px;
+    line-height: 14px
+}
+
+.van-sku-actions,
+.van-sku-img-uploader__trigger {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex
+}
+
+.van-sku-img-uploader__trigger {
+    -webkit-box-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-box-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+    width: 100%;
+    height: 100%;
+    color: #dcdde0
+}
+
+.van-sku-actions {
+    -webkit-flex-shrink: 0;
+    flex-shrink: 0;
+    padding: 8px 16px
+}
+
+.van-sku-actions .van-button {
+    height: 40px;
+    font-weight: 500;
+    font-size: 14px;
+    line-height: 34px;
+    border: 0;
+    border-radius: 0
+}
+
+.van-sku-actions .van-button:first-of-type {
+    border-top-left-radius: 20px;
+    border-bottom-left-radius: 20px
+}
+
+.van-sku-actions .van-button:last-of-type {
+    border-top-right-radius: 20px;
+    border-bottom-right-radius: 20px
+}
+
+.van-sku-actions .van-button--warning {
+    background: -webkit-linear-gradient(left, #ffd01e, #ff8917);
+    background: linear-gradient(to right, #ffd01e, #ff8917)
+}
+
+.van-sku-actions .van-button--danger {
+    background: -webkit-linear-gradient(left, #ff6034, #ee0a24);
+    background: linear-gradient(to right, #ff6034, #ee0a24)
+}

+ 0 - 5
src/views/About.vue

@@ -1,5 +0,0 @@
-<template>
-  <div class="about">
-    <h1>This is an about page</h1>
-  </div>
-</template>

+ 12 - 13
src/views/Home.vue

@@ -1,18 +1,17 @@
 <template>
-  <div class="home">
-    <img alt="Vue logo" src="../assets/logo.png">
-    <HelloWorld msg="Welcome to Your Vue.js App"/>
-  </div>
+  <div class='home'></div>
 </template>
-
 <script>
-// @ is an alias to /src
-import HelloWorld from '@/components/HelloWorld.vue'
-
+import { mapState } from 'vuex';
 export default {
-  name: 'home',
-  components: {
-    HelloWorld
-  }
-}
+  name: '',
+  data() {
+    return {};
+  },
+  computed: {
+    ...mapState(['userInfo'])
+    },
+};
 </script>
+<style lang='less' scoped>
+</style>

+ 120 - 0
src/views/Index.vue

@@ -0,0 +1,120 @@
+<template>
+    <div class="page">
+        <div class="main">
+            <transition :name="'van-slide-' + (direction === 'forward' ? 'left' : 'right')">
+                <router-view
+                    class="router-view "
+                    ref="child"
+                    :style="{ minHeight: minHeight - 50 + 'px' }"
+                ></router-view>
+            </transition>
+        </div>
+
+        <van-tabbar v-model="active" active-color="#FF8F00" style="min-height:50px" :fixed="false">
+            <van-tabbar-item v-for="(item, index) in menus" :key="index">
+                <span style="font-size:10px">{{ item.text }}</span>
+                <img slot="icon" style="width:28px;height:28px" :src="active == index ? item.preImg : item.img" />
+            </van-tabbar-item>
+        </van-tabbar>
+    </div>
+</template>
+<script>
+import { mapState } from 'vuex';
+export default {
+    name: 'index',
+    props: {
+        minHeight: {
+            type: Number,
+            default: 0
+        }
+    },
+    data() {
+        return {
+            menus: [
+                {
+                    img: require('../assets/tabbar_icon_01.png'),
+                    preImg: require('../assets/tabbar_icon_01_pre.png'),
+                    text: '首页',
+                    path: 'home'
+                },
+                {
+                    img: require('../assets/tabbar_icon_02.png'),
+                    preImg: require('../assets/tabbar_icon_02_pre.png'),
+                    text: '会员中心',
+                    path: 'vipCenter'
+                },
+                {
+                    img: require('../assets/tabbar_icon_03.png'),
+                    preImg: require('../assets/tabbar_icon_03_pre.png'),
+                    text: '购物车',
+                    path: 'shoppingCart'
+                },
+                {
+                    img: require('../assets/tabbar_icon_04.png'),
+                    preImg: require('../assets/tabbar_icon_04_pre.png'),
+                    text: '我的',
+                    path: 'user'
+                }
+            ],
+            active: 0
+        };
+    },
+    mounted() {
+        this.active = this.nowIndex;
+    },
+    computed: {
+        ...mapState(['userInfo', 'direction']),
+        nowIndex() {
+            var menus = [...this.menus];
+            var _index = 0;
+            menus.forEach((item, index) => {
+                if (item.path == this.$route.name) {
+                    _index = index;
+                }
+            });
+
+            return _index;
+        }
+    },
+    watch: {
+        active() {
+            this.goNext(this.menus[this.active].path, this.active);
+        }
+    },
+    methods: {
+        goNext(name, index) {
+            if (index < this.nowIndex) {
+                this.$router.replace({
+                    name: name
+                });
+            } else if (index > this.nowIndex) {
+                this.$router.replace({
+                    name: name,
+                    params: {
+                        isNext: 1
+                    }
+                });
+            }
+        }
+    }
+};
+</script>
+<style lang="less" scoped>
+.page {
+    display: flex;
+    flex-direction: column;
+    overflow: hidden;
+    // height: 100%;
+    background-color: #fff;
+    padding-bottom: 0;
+    padding-bottom: env(safe-area-inset-bottom);
+}
+
+.main {
+    overflow-x: hidden;
+    overflow-y: auto;
+    -webkit-overflow-scrolling: touch;
+    // margin-bottom: 50px;
+    flex-grow: 1;
+}
+</style>