Commit 5e52ed7c5ad424be24981bc9cd312a067f1c582f
1 parent
4eb9c766
个人中心
Showing
29 changed files
with
2413 additions
and
217 deletions
build/utils.js
@@ -59,7 +59,11 @@ exports.cssLoaders = function (options) { | @@ -59,7 +59,11 @@ exports.cssLoaders = function (options) { | ||
59 | return { | 59 | return { |
60 | css: generateLoaders(), | 60 | css: generateLoaders(), |
61 | postcss: generateLoaders(), | 61 | postcss: generateLoaders(), |
62 | - less: generateLoaders('less'), | 62 | + less: generateLoaders('less', { |
63 | + modifyVars: { | ||
64 | + 'hack': `true; @import "${path.join(__dirname, '../src/assets/css/resetVantUi.less')}";` | ||
65 | + } | ||
66 | + }), | ||
63 | sass: generateLoaders('sass', { indentedSyntax: true }), | 67 | sass: generateLoaders('sass', { indentedSyntax: true }), |
64 | scss: generateLoaders('sass').concat( | 68 | scss: generateLoaders('sass').concat( |
65 | { | 69 | { |
package-lock.json
@@ -4,6 +4,21 @@ | @@ -4,6 +4,21 @@ | ||
4 | "lockfileVersion": 1, | 4 | "lockfileVersion": 1, |
5 | "requires": true, | 5 | "requires": true, |
6 | "dependencies": { | 6 | "dependencies": { |
7 | + "@babel/runtime": { | ||
8 | + "version": "7.22.5", | ||
9 | + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.22.5.tgz", | ||
10 | + "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", | ||
11 | + "requires": { | ||
12 | + "regenerator-runtime": "^0.13.11" | ||
13 | + }, | ||
14 | + "dependencies": { | ||
15 | + "regenerator-runtime": { | ||
16 | + "version": "0.13.11", | ||
17 | + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", | ||
18 | + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" | ||
19 | + } | ||
20 | + } | ||
21 | + }, | ||
7 | "@nodelib/fs.scandir": { | 22 | "@nodelib/fs.scandir": { |
8 | "version": "2.1.5", | 23 | "version": "2.1.5", |
9 | "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", | 24 | "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", |
@@ -41,6 +56,21 @@ | @@ -41,6 +56,21 @@ | ||
41 | "integrity": "sha1-FZJUFOCtLNdlv+9YhC9+JqesyyQ=", | 56 | "integrity": "sha1-FZJUFOCtLNdlv+9YhC9+JqesyyQ=", |
42 | "dev": true | 57 | "dev": true |
43 | }, | 58 | }, |
59 | + "@vant/icons": { | ||
60 | + "version": "1.8.0", | ||
61 | + "resolved": "https://registry.npmmirror.com/@vant/icons/-/icons-1.8.0.tgz", | ||
62 | + "integrity": "sha512-sKfEUo2/CkQFuERxvkuF6mGQZDKu3IQdj5rV9Fm0weJXtchDSSQ+zt8qPCNUEhh9Y8shy5PzxbvAfOOkCwlCXg==" | ||
63 | + }, | ||
64 | + "@vant/popperjs": { | ||
65 | + "version": "1.3.0", | ||
66 | + "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz", | ||
67 | + "integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==" | ||
68 | + }, | ||
69 | + "@vue/babel-helper-vue-jsx-merge-props": { | ||
70 | + "version": "1.4.0", | ||
71 | + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", | ||
72 | + "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==" | ||
73 | + }, | ||
44 | "abbrev": { | 74 | "abbrev": { |
45 | "version": "1.1.1", | 75 | "version": "1.1.1", |
46 | "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", | 76 | "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", |
@@ -1815,8 +1845,9 @@ | @@ -1815,8 +1845,9 @@ | ||
1815 | }, | 1845 | }, |
1816 | "clone": { | 1846 | "clone": { |
1817 | "version": "2.1.2", | 1847 | "version": "2.1.2", |
1818 | - "resolved": "http://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz", | ||
1819 | - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" | 1848 | + "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz", |
1849 | + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", | ||
1850 | + "dev": true | ||
1820 | }, | 1851 | }, |
1821 | "clone-deep": { | 1852 | "clone-deep": { |
1822 | "version": "4.0.1", | 1853 | "version": "4.0.1", |
@@ -2018,6 +2049,15 @@ | @@ -2018,6 +2049,15 @@ | ||
2018 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", | 2049 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", |
2019 | "dev": true | 2050 | "dev": true |
2020 | }, | 2051 | }, |
2052 | + "copy-anything": { | ||
2053 | + "version": "2.0.6", | ||
2054 | + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", | ||
2055 | + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", | ||
2056 | + "dev": true, | ||
2057 | + "requires": { | ||
2058 | + "is-what": "^3.14.1" | ||
2059 | + } | ||
2060 | + }, | ||
2021 | "copy-concurrently": { | 2061 | "copy-concurrently": { |
2022 | "version": "1.0.5", | 2062 | "version": "1.0.5", |
2023 | "resolved": "http://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz", | 2063 | "resolved": "http://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz", |
@@ -4821,6 +4861,13 @@ | @@ -4821,6 +4861,13 @@ | ||
4821 | "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", | 4861 | "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", |
4822 | "dev": true | 4862 | "dev": true |
4823 | }, | 4863 | }, |
4864 | + "image-size": { | ||
4865 | + "version": "0.5.5", | ||
4866 | + "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz", | ||
4867 | + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", | ||
4868 | + "dev": true, | ||
4869 | + "optional": true | ||
4870 | + }, | ||
4824 | "import-cwd": { | 4871 | "import-cwd": { |
4825 | "version": "2.1.0", | 4872 | "version": "2.1.0", |
4826 | "resolved": "https://registry.nlark.com/import-cwd/download/import-cwd-2.1.0.tgz", | 4873 | "resolved": "https://registry.nlark.com/import-cwd/download/import-cwd-2.1.0.tgz", |
@@ -5179,6 +5226,12 @@ | @@ -5179,6 +5226,12 @@ | ||
5179 | "resolved": "http://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz", | 5226 | "resolved": "http://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz", |
5180 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" | 5227 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" |
5181 | }, | 5228 | }, |
5229 | + "is-what": { | ||
5230 | + "version": "3.14.1", | ||
5231 | + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz", | ||
5232 | + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", | ||
5233 | + "dev": true | ||
5234 | + }, | ||
5182 | "is-windows": { | 5235 | "is-windows": { |
5183 | "version": "1.0.2", | 5236 | "version": "1.0.2", |
5184 | "resolved": "http://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz", | 5237 | "resolved": "http://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz", |
@@ -5340,10 +5393,49 @@ | @@ -5340,10 +5393,49 @@ | ||
5340 | "invert-kv": "^1.0.0" | 5393 | "invert-kv": "^1.0.0" |
5341 | } | 5394 | } |
5342 | }, | 5395 | }, |
5396 | + "less": { | ||
5397 | + "version": "4.1.3", | ||
5398 | + "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz", | ||
5399 | + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", | ||
5400 | + "dev": true, | ||
5401 | + "requires": { | ||
5402 | + "copy-anything": "^2.0.1", | ||
5403 | + "errno": "^0.1.1", | ||
5404 | + "graceful-fs": "^4.1.2", | ||
5405 | + "image-size": "~0.5.0", | ||
5406 | + "make-dir": "^2.1.0", | ||
5407 | + "mime": "^1.4.1", | ||
5408 | + "needle": "^3.1.0", | ||
5409 | + "parse-node-version": "^1.0.1", | ||
5410 | + "source-map": "~0.6.0", | ||
5411 | + "tslib": "^2.3.0" | ||
5412 | + }, | ||
5413 | + "dependencies": { | ||
5414 | + "make-dir": { | ||
5415 | + "version": "2.1.0", | ||
5416 | + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz", | ||
5417 | + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", | ||
5418 | + "dev": true, | ||
5419 | + "optional": true, | ||
5420 | + "requires": { | ||
5421 | + "pify": "^4.0.1", | ||
5422 | + "semver": "^5.6.0" | ||
5423 | + } | ||
5424 | + }, | ||
5425 | + "pify": { | ||
5426 | + "version": "4.0.1", | ||
5427 | + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", | ||
5428 | + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", | ||
5429 | + "dev": true, | ||
5430 | + "optional": true | ||
5431 | + } | ||
5432 | + } | ||
5433 | + }, | ||
5343 | "less-loader": { | 5434 | "less-loader": { |
5344 | "version": "4.1.0", | 5435 | "version": "4.1.0", |
5345 | - "resolved": "https://registry.npmmirror.com/less-loader/download/less-loader-4.1.0.tgz", | ||
5346 | - "integrity": "sha1-LBNSxbCaT4QQFJAnT9UWdN5BNj4=", | 5436 | + "resolved": "https://registry.npmmirror.com/less-loader/-/less-loader-4.1.0.tgz", |
5437 | + "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", | ||
5438 | + "dev": true, | ||
5347 | "requires": { | 5439 | "requires": { |
5348 | "clone": "^2.1.1", | 5440 | "clone": "^2.1.1", |
5349 | "loader-utils": "^1.1.0", | 5441 | "loader-utils": "^1.1.0", |
@@ -6014,6 +6106,47 @@ | @@ -6014,6 +6106,47 @@ | ||
6014 | } | 6106 | } |
6015 | } | 6107 | } |
6016 | }, | 6108 | }, |
6109 | + "needle": { | ||
6110 | + "version": "3.2.0", | ||
6111 | + "resolved": "https://registry.npmmirror.com/needle/-/needle-3.2.0.tgz", | ||
6112 | + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", | ||
6113 | + "dev": true, | ||
6114 | + "optional": true, | ||
6115 | + "requires": { | ||
6116 | + "debug": "^3.2.6", | ||
6117 | + "iconv-lite": "^0.6.3", | ||
6118 | + "sax": "^1.2.4" | ||
6119 | + }, | ||
6120 | + "dependencies": { | ||
6121 | + "debug": { | ||
6122 | + "version": "3.2.7", | ||
6123 | + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", | ||
6124 | + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", | ||
6125 | + "dev": true, | ||
6126 | + "optional": true, | ||
6127 | + "requires": { | ||
6128 | + "ms": "^2.1.1" | ||
6129 | + } | ||
6130 | + }, | ||
6131 | + "iconv-lite": { | ||
6132 | + "version": "0.6.3", | ||
6133 | + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", | ||
6134 | + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", | ||
6135 | + "dev": true, | ||
6136 | + "optional": true, | ||
6137 | + "requires": { | ||
6138 | + "safer-buffer": ">= 2.1.2 < 3.0.0" | ||
6139 | + } | ||
6140 | + }, | ||
6141 | + "ms": { | ||
6142 | + "version": "2.1.3", | ||
6143 | + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", | ||
6144 | + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | ||
6145 | + "dev": true, | ||
6146 | + "optional": true | ||
6147 | + } | ||
6148 | + } | ||
6149 | + }, | ||
6017 | "negotiator": { | 6150 | "negotiator": { |
6018 | "version": "0.6.2", | 6151 | "version": "0.6.2", |
6019 | "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz", | 6152 | "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz", |
@@ -6603,6 +6736,12 @@ | @@ -6603,6 +6736,12 @@ | ||
6603 | "json-parse-better-errors": "^1.0.1" | 6736 | "json-parse-better-errors": "^1.0.1" |
6604 | } | 6737 | } |
6605 | }, | 6738 | }, |
6739 | + "parse-node-version": { | ||
6740 | + "version": "1.0.1", | ||
6741 | + "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz", | ||
6742 | + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", | ||
6743 | + "dev": true | ||
6744 | + }, | ||
6606 | "parseurl": { | 6745 | "parseurl": { |
6607 | "version": "1.3.3", | 6746 | "version": "1.3.3", |
6608 | "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz", | 6747 | "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz", |
@@ -6697,7 +6836,8 @@ | @@ -6697,7 +6836,8 @@ | ||
6697 | "pify": { | 6836 | "pify": { |
6698 | "version": "3.0.0", | 6837 | "version": "3.0.0", |
6699 | "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", | 6838 | "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", |
6700 | - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" | 6839 | + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", |
6840 | + "dev": true | ||
6701 | }, | 6841 | }, |
6702 | "pinkie": { | 6842 | "pinkie": { |
6703 | "version": "2.0.4", | 6843 | "version": "2.0.4", |
@@ -9293,6 +9433,12 @@ | @@ -9293,6 +9433,12 @@ | ||
9293 | "integrity": "sha1-8shUBoALmw90yfdGW4HqrSQSUvg=", | 9433 | "integrity": "sha1-8shUBoALmw90yfdGW4HqrSQSUvg=", |
9294 | "dev": true | 9434 | "dev": true |
9295 | }, | 9435 | }, |
9436 | + "tslib": { | ||
9437 | + "version": "2.5.3", | ||
9438 | + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.5.3.tgz", | ||
9439 | + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", | ||
9440 | + "dev": true | ||
9441 | + }, | ||
9296 | "tty-browserify": { | 9442 | "tty-browserify": { |
9297 | "version": "0.0.0", | 9443 | "version": "0.0.0", |
9298 | "resolved": "http://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz", | 9444 | "resolved": "http://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz", |
@@ -9684,6 +9830,25 @@ | @@ -9684,6 +9830,25 @@ | ||
9684 | "spdx-expression-parse": "^3.0.0" | 9830 | "spdx-expression-parse": "^3.0.0" |
9685 | } | 9831 | } |
9686 | }, | 9832 | }, |
9833 | + "vant": { | ||
9834 | + "version": "2.12.54", | ||
9835 | + "resolved": "https://registry.npmmirror.com/vant/-/vant-2.12.54.tgz", | ||
9836 | + "integrity": "sha512-t7DCiLxNosDrg0Jm5EY9p0A5cAMo5OadmizbYtPEc0ru+OJKEa3kcfxtKIK5on7ZPqoOkyYJt8e6BQ1VDMPsrg==", | ||
9837 | + "requires": { | ||
9838 | + "@babel/runtime": "7.x", | ||
9839 | + "@vant/icons": "^1.7.1", | ||
9840 | + "@vant/popperjs": "^1.1.0", | ||
9841 | + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", | ||
9842 | + "vue-lazyload": "1.2.3" | ||
9843 | + }, | ||
9844 | + "dependencies": { | ||
9845 | + "vue-lazyload": { | ||
9846 | + "version": "1.2.3", | ||
9847 | + "resolved": "https://registry.npmmirror.com/vue-lazyload/-/vue-lazyload-1.2.3.tgz", | ||
9848 | + "integrity": "sha512-DC0ZwxanbRhx79tlA3zY5OYJkH8FYp3WBAnAJbrcuoS8eye1P73rcgAZhyxFSPUluJUTelMB+i/+VkNU/qVm7g==" | ||
9849 | + } | ||
9850 | + } | ||
9851 | + }, | ||
9687 | "vary": { | 9852 | "vary": { |
9688 | "version": "1.1.2", | 9853 | "version": "1.1.2", |
9689 | "resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", | 9854 | "resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", |
package.json
@@ -13,11 +13,11 @@ | @@ -13,11 +13,11 @@ | ||
13 | "axios": "^0.21.1", | 13 | "axios": "^0.21.1", |
14 | "css-loader": "^3.6.0", | 14 | "css-loader": "^3.6.0", |
15 | "js-base64": "^3.6.0", | 15 | "js-base64": "^3.6.0", |
16 | - "less-loader": "^4.1.0", | ||
17 | "mint-ui": "^2.2.13", | 16 | "mint-ui": "^2.2.13", |
18 | "moment": "^2.29.1", | 17 | "moment": "^2.29.1", |
19 | "node-sass": "^4.14.1", | 18 | "node-sass": "^4.14.1", |
20 | "sass-loader": "^7.3.1", | 19 | "sass-loader": "^7.3.1", |
20 | + "vant": "^2.12.54", | ||
21 | "vue": "^2.5.2", | 21 | "vue": "^2.5.2", |
22 | "vue-baidu-map": "^0.21.22", | 22 | "vue-baidu-map": "^0.21.22", |
23 | "vue-h5-popup": "^1.0.2", | 23 | "vue-h5-popup": "^1.0.2", |
@@ -41,6 +41,8 @@ | @@ -41,6 +41,8 @@ | ||
41 | "file-loader": "^1.1.4", | 41 | "file-loader": "^1.1.4", |
42 | "friendly-errors-webpack-plugin": "^1.6.1", | 42 | "friendly-errors-webpack-plugin": "^1.6.1", |
43 | "html-webpack-plugin": "^2.30.1", | 43 | "html-webpack-plugin": "^2.30.1", |
44 | + "less": "^4.1.3", | ||
45 | + "less-loader": "^4.1.0", | ||
44 | "node-notifier": "^5.1.2", | 46 | "node-notifier": "^5.1.2", |
45 | "optimize-css-assets-webpack-plugin": "^3.2.0", | 47 | "optimize-css-assets-webpack-plugin": "^3.2.0", |
46 | "ora": "^1.2.0", | 48 | "ora": "^1.2.0", |
src/api/getUserIfo.js
0 → 100644
1 | +import request from '@/utils/request' | ||
2 | + | ||
3 | +export function getTokenByOpenId(params) { // 获取用户token和手机号 | ||
4 | + return request({ | ||
5 | + url: 'wxPublicUser/getTokenByOpenId', | ||
6 | + method: 'post', | ||
7 | + data: params | ||
8 | + }) | ||
9 | +} | ||
10 | + | ||
11 | + | ||
12 | +export function saveFeedbackAndSuggest(params) { // 提交建议反馈 | ||
13 | + return request({ | ||
14 | + url: 'suggest/saveFeedbackAndSuggest', | ||
15 | + method: 'post', | ||
16 | + data: params | ||
17 | + }) | ||
18 | +} | ||
19 | + | ||
20 | + | ||
21 | +export function getFeedbackType(params) { // 获取建议反馈类型 | ||
22 | + return request({ | ||
23 | + url: 'suggest/getFeedbackType', | ||
24 | + method: 'post', | ||
25 | + data: params | ||
26 | + }) | ||
27 | +} | ||
28 | + | ||
29 | + |
src/assets/css/reset.css
src/assets/css/resetVantUi.less
0 → 100644
1 | + | ||
2 | + | ||
3 | + // Color Palette | ||
4 | +@black: #000; | ||
5 | +@white: #fff; | ||
6 | +@gray-1: #f7f8fa; | ||
7 | +@gray-2: #f2f3f5; | ||
8 | +@gray-3: #ebedf0; | ||
9 | +@gray-4: #dcdee0; | ||
10 | +@gray-5: #c8c9cc; | ||
11 | +@gray-6: #969799; | ||
12 | +@gray-7: #646566; | ||
13 | +@gray-8: #323233; | ||
14 | +@red: #ee0a24; | ||
15 | +@blue: #1989fa; | ||
16 | + //1989fa | ||
17 | +@orange: #ff976a; | ||
18 | +@orange-dark: #ed6a0c; | ||
19 | +@orange-light: #fffbe8; | ||
20 | +@green: #07c160; | ||
21 | + | ||
22 | +// Gradient Colors | ||
23 | +@gradient-red: linear-gradient(to right, #ff6034, #ee0a24); | ||
24 | +@gradient-orange: linear-gradient(to right, #ffd01e, #ff8917); | ||
25 | +@gradient-blue: linear-gradient(180deg, #2282C5 0%, #4B8EF1 58%, #63BEFD 100%); | ||
26 | + | ||
27 | +// Component Colors | ||
28 | +@text-color: @gray-8; | ||
29 | +@active-color: @gray-2; | ||
30 | +@active-opacity: 0.7; | ||
31 | +@disabled-opacity: 0.5; | ||
32 | +@background-color: @gray-1; | ||
33 | +@background-color-light: #fafafa; | ||
34 | +@text-link-color: #576b95; | ||
35 | + | ||
36 | +// Padding | ||
37 | +@padding-base: 4px; | ||
38 | +@padding-xs: @padding-base * 2; | ||
39 | +@padding-sm: @padding-base * 3; | ||
40 | +@padding-md: @padding-base * 4; | ||
41 | +@padding-lg: @padding-base * 6; | ||
42 | +@padding-xl: @padding-base * 8; | ||
43 | + | ||
44 | +// Font | ||
45 | +@font-size-xs: 10px; | ||
46 | +@font-size-sm: 12px; | ||
47 | +@font-size-md: 14px; | ||
48 | +@font-size-lg: 16px; | ||
49 | +@font-weight-bold: 500; | ||
50 | +@line-height-xs: 14px; | ||
51 | +@line-height-sm: 18px; | ||
52 | +@line-height-md: 20px; | ||
53 | +@line-height-lg: 22px; | ||
54 | +@base-font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', | ||
55 | +Helvetica, Segoe UI, Arial, Roboto, 'PingFang SC', 'miui', 'Hiragino Sans GB', | ||
56 | +'Microsoft Yahei', sans-serif; | ||
57 | +@price-integer-font-family: Avenir-Heavy, PingFang SC, Helvetica Neue, Arial, | ||
58 | +sans-serif; | ||
59 | + | ||
60 | +// Animation | ||
61 | +@animation-duration-base: 0.3s; | ||
62 | +@animation-duration-fast: 0.2s; | ||
63 | +@animation-timing-function-enter: ease-out; | ||
64 | +@animation-timing-function-leave: ease-in; | ||
65 | + | ||
66 | +// Border | ||
67 | +@border-color: @gray-3; | ||
68 | +@border-width-base: 1px; | ||
69 | +@border-radius-sm: 2px; | ||
70 | +@border-radius-md: 4px; | ||
71 | +@border-radius-lg: 8px; | ||
72 | +@border-radius-max: 999px; | ||
73 | + | ||
74 | +// ActionSheet | ||
75 | +@action-sheet-max-height: 80%; | ||
76 | +@action-sheet-header-height: 48px; | ||
77 | +@action-sheet-header-font-size: @font-size-lg; | ||
78 | +@action-sheet-description-color: @gray-6; | ||
79 | +@action-sheet-description-font-size: @font-size-md; | ||
80 | +@action-sheet-description-line-height: @line-height-md; | ||
81 | +@action-sheet-item-background: @white; | ||
82 | +@action-sheet-item-font-size: @font-size-lg; | ||
83 | +@action-sheet-item-line-height: @line-height-lg; | ||
84 | +@action-sheet-item-text-color: @text-color; | ||
85 | +@action-sheet-item-disabled-text-color: @gray-5; | ||
86 | +@action-sheet-subname-color: @gray-6; | ||
87 | +@action-sheet-subname-font-size: @font-size-sm; | ||
88 | +@action-sheet-subname-line-height: @line-height-sm; | ||
89 | +@action-sheet-close-icon-size: 22px; | ||
90 | +@action-sheet-close-icon-color: @gray-5; | ||
91 | +@action-sheet-close-icon-active-color: @gray-6; | ||
92 | +@action-sheet-close-icon-padding: 0 @padding-md; | ||
93 | +@action-sheet-cancel-text-color: @gray-7; | ||
94 | +@action-sheet-cancel-padding-top: @padding-xs; | ||
95 | +@action-sheet-cancel-padding-color: @background-color; | ||
96 | +@action-sheet-loading-icon-size: 22px; | ||
97 | + | ||
98 | +// AddressEdit | ||
99 | +@address-edit-padding: @padding-sm; | ||
100 | +@address-edit-buttons-padding: @padding-xl @padding-base; | ||
101 | +@address-edit-button-margin-bottom: @padding-sm; | ||
102 | +@address-edit-detail-finish-color: @blue; | ||
103 | +@address-edit-detail-finish-font-size: @font-size-sm; | ||
104 | + | ||
105 | +// AddressList | ||
106 | +@address-list-padding: @padding-sm @padding-sm 80px; | ||
107 | +@address-list-disabled-text-color: @gray-6; | ||
108 | +@address-list-disabled-text-padding: @padding-base * 5 0 @padding-md; | ||
109 | +@address-list-disabled-text-font-size: @font-size-md; | ||
110 | +@address-list-disabled-text-line-height: @line-height-md; | ||
111 | +@address-list-add-button-z-index: 999; | ||
112 | +@address-list-item-padding: @padding-sm; | ||
113 | +@address-list-item-text-color: @text-color; | ||
114 | +@address-list-item-disabled-text-color: @gray-5; | ||
115 | +@address-list-item-font-size: 13px; | ||
116 | +@address-list-item-line-height: @line-height-sm; | ||
117 | +@address-list-item-radio-icon-color: @red; | ||
118 | +@address-list-edit-icon-size: 20px; | ||
119 | + | ||
120 | +// Badge | ||
121 | +@badge-size: 16px; | ||
122 | +@badge-color: @white; | ||
123 | +@badge-padding: 0 3px; | ||
124 | +@badge-font-size: @font-size-sm; | ||
125 | +@badge-font-weight: @font-weight-bold; | ||
126 | +@badge-border-width: @border-width-base; | ||
127 | +@badge-background-color: @red; | ||
128 | +@badge-dot-color: @red; | ||
129 | +@badge-dot-size: 8px; | ||
130 | +@badge-font-family: -apple-system-font, Helvetica Neue, Arial, sans-serif; | ||
131 | + | ||
132 | +// Button | ||
133 | +@button-mini-height: 24px; | ||
134 | +@button-mini-font-size: @font-size-xs; | ||
135 | +@button-small-height: 32px; | ||
136 | +@button-small-font-size: @font-size-sm; | ||
137 | +@button-normal-font-size: @font-size-md; | ||
138 | +@button-large-height: 50px; | ||
139 | +@button-default-height: 44px; | ||
140 | +@button-default-line-height: 1.2; | ||
141 | +@button-default-font-size: @font-size-lg; | ||
142 | +@button-default-color: @text-color; | ||
143 | +@button-default-background-color: @white; | ||
144 | +@button-default-border-color: @border-color; | ||
145 | +@button-primary-color: @white; | ||
146 | +@button-primary-background-color: @green; | ||
147 | +@button-primary-border-color: @green; | ||
148 | +@button-info-color: @white; | ||
149 | +@button-info-background-color: @gradient-blue; | ||
150 | +@button-info-border-color: @gradient-blue; | ||
151 | +@button-danger-color: @white; | ||
152 | +@button-danger-background-color: @red; | ||
153 | +@button-danger-border-color: @red; | ||
154 | +@button-warning-color: @white; | ||
155 | +@button-warning-background-color: @orange; | ||
156 | +@button-warning-border-color: @orange; | ||
157 | +@button-border-width: @border-width-base; | ||
158 | +@button-border-radius: @border-radius-sm; | ||
159 | +@button-round-border-radius: @border-radius-max; | ||
160 | +@button-plain-background-color: @white; | ||
161 | +@button-disabled-opacity: @disabled-opacity; | ||
162 | + | ||
163 | +// Calendar | ||
164 | +@calendar-background-color: @white; | ||
165 | +@calendar-popup-height: 80%; | ||
166 | +@calendar-header-box-shadow: 0 2px 10px rgba(125, 126, 128, 0.16); | ||
167 | +@calendar-header-title-height: 44px; | ||
168 | +@calendar-header-title-font-size: @font-size-lg; | ||
169 | +@calendar-header-subtitle-font-size: @font-size-md; | ||
170 | +@calendar-weekdays-height: 30px; | ||
171 | +@calendar-weekdays-font-size: @font-size-sm; | ||
172 | +@calendar-month-title-font-size: @font-size-md; | ||
173 | +@calendar-month-mark-color: fade(@gray-2, 80%); | ||
174 | +@calendar-month-mark-font-size: 160px; | ||
175 | +@calendar-day-height: 64px; | ||
176 | +@calendar-day-font-size: @font-size-lg; | ||
177 | +@calendar-range-edge-color: @white; | ||
178 | +@calendar-range-edge-background-color: @red; | ||
179 | +@calendar-range-middle-color: @red; | ||
180 | +@calendar-range-middle-background-opacity: 0.1; | ||
181 | +@calendar-selected-day-size: 54px; | ||
182 | +@calendar-selected-day-color: @white; | ||
183 | +@calendar-info-font-size: @font-size-xs; | ||
184 | +@calendar-info-line-height: @line-height-xs; | ||
185 | +@calendar-selected-day-background-color: @red; | ||
186 | +@calendar-day-disabled-color: @gray-5; | ||
187 | +@calendar-confirm-button-height: 36px; | ||
188 | +@calendar-confirm-button-margin: 7px 0; | ||
189 | + | ||
190 | +// Card | ||
191 | +@card-padding: @padding-xs @padding-md; | ||
192 | +@card-font-size: @font-size-sm; | ||
193 | +@card-text-color: @text-color; | ||
194 | +@card-background-color: @background-color-light; | ||
195 | +@card-thumb-size: 88px; | ||
196 | +@card-thumb-border-radius: @border-radius-lg; | ||
197 | +@card-title-line-height: 16px; | ||
198 | +@card-desc-color: @gray-7; | ||
199 | +@card-desc-line-height: @line-height-md; | ||
200 | +@card-price-color: @gray-8; | ||
201 | +@card-origin-price-color: @gray-6; | ||
202 | +@card-num-color: @gray-6; | ||
203 | +@card-origin-price-font-size: @font-size-xs; | ||
204 | +@card-price-font-size: @font-size-sm; | ||
205 | +@card-price-integer-font-size: @font-size-lg; | ||
206 | +@card-price-font-family: @price-integer-font-family; | ||
207 | + | ||
208 | +// Cascader | ||
209 | +@cascader-header-height: 48px; | ||
210 | +@cascader-title-font-size: @font-size-lg; | ||
211 | +@cascader-title-line-height: 20px; | ||
212 | +@cascader-close-icon-size: 22px; | ||
213 | +@cascader-close-icon-color: @gray-5; | ||
214 | +@cascader-close-icon-active-color: @gray-6; | ||
215 | +@cascader-selected-icon-size: 18px; | ||
216 | +@cascader-tabs-height: 48px; | ||
217 | +@cascader-active-color: @red; | ||
218 | +@cascader-options-height: 384px; | ||
219 | +@cascader-tab-color: @text-color; | ||
220 | +@cascader-unselected-tab-color: @gray-6; | ||
221 | + | ||
222 | +// Cell | ||
223 | +@cell-font-size: @font-size-md; | ||
224 | +@cell-line-height: 24px; | ||
225 | +@cell-vertical-padding: 10px; | ||
226 | +@cell-horizontal-padding: @padding-md; | ||
227 | +@cell-text-color: @text-color; | ||
228 | +@cell-background-color: @white; | ||
229 | +@cell-border-color: @border-color; | ||
230 | +@cell-active-color: @active-color; | ||
231 | +@cell-required-color: @red; | ||
232 | +@cell-label-color: @gray-6; | ||
233 | +@cell-label-font-size: @font-size-sm; | ||
234 | +@cell-label-line-height: @line-height-sm; | ||
235 | +@cell-label-margin-top: @padding-base; | ||
236 | +@cell-value-color: @gray-6; | ||
237 | +@cell-icon-size: 16px; | ||
238 | +@cell-right-icon-color: @gray-6; | ||
239 | +@cell-large-vertical-padding: @padding-sm; | ||
240 | +@cell-large-title-font-size: @font-size-lg; | ||
241 | +@cell-large-label-font-size: @font-size-md; | ||
242 | + | ||
243 | +// CellGroup | ||
244 | +@cell-group-background-color: @white; | ||
245 | +@cell-group-title-color: @gray-6; | ||
246 | +@cell-group-title-padding: @padding-md @padding-md @padding-xs; | ||
247 | +@cell-group-title-font-size: @font-size-md; | ||
248 | +@cell-group-title-line-height: 16px; | ||
249 | +@cell-group-inset-padding: 0 @padding-md; | ||
250 | +@cell-group-inset-border-radius: @border-radius-lg; | ||
251 | +@cell-group-inset-title-padding: @padding-md @padding-md @padding-xs @padding-xl; | ||
252 | + | ||
253 | +// Checkbox | ||
254 | +@checkbox-size: 20px; | ||
255 | +@checkbox-border-color: @gray-5; | ||
256 | +@checkbox-transition-duration: @animation-duration-fast; | ||
257 | +@checkbox-label-margin: @padding-xs; | ||
258 | +@checkbox-label-color: @text-color; | ||
259 | +@checkbox-checked-icon-color: @blue; | ||
260 | +@checkbox-disabled-icon-color: @gray-5; | ||
261 | +@checkbox-disabled-label-color: @gray-5; | ||
262 | +@checkbox-disabled-background-color: @border-color; | ||
263 | + | ||
264 | +// Circle | ||
265 | +@circle-size: 100px; | ||
266 | +@circle-color: @blue; | ||
267 | +@circle-layer-color: @white; | ||
268 | +@circle-text-color: @text-color; | ||
269 | +@circle-text-font-weight: @font-weight-bold; | ||
270 | +@circle-text-font-size: @font-size-md; | ||
271 | +@circle-text-line-height: @line-height-md; | ||
272 | + | ||
273 | +// Collapse | ||
274 | +@collapse-item-transition-duration: @animation-duration-base; | ||
275 | +@collapse-item-content-padding: @padding-sm @padding-md; | ||
276 | +@collapse-item-content-font-size: @font-size-md; | ||
277 | +@collapse-item-content-line-height: 1.5; | ||
278 | +@collapse-item-content-text-color: @gray-6; | ||
279 | +@collapse-item-content-background-color: @white; | ||
280 | +@collapse-item-title-disabled-color: @gray-5; | ||
281 | + | ||
282 | +// ContactCard | ||
283 | +@contact-card-padding: @padding-md; | ||
284 | +@contact-card-add-icon-size: 40px; | ||
285 | +@contact-card-add-icon-color: @blue; | ||
286 | +@contact-card-value-line-height: @line-height-md; | ||
287 | + | ||
288 | +// ContactEdit | ||
289 | +@contact-edit-padding: @padding-md; | ||
290 | +@contact-edit-fields-radius: @border-radius-md; | ||
291 | +@contact-edit-buttons-padding: @padding-xl 0; | ||
292 | +@contact-edit-button-margin-bottom: @padding-sm; | ||
293 | +@contact-edit-button-font-size: 16px; | ||
294 | +@contact-edit-field-label-width: 4.1em; | ||
295 | + | ||
296 | +// ContactList | ||
297 | +@contact-list-edit-icon-size: 16px; | ||
298 | +@contact-list-add-button-z-index: 999; | ||
299 | +@contact-list-item-padding: @padding-md; | ||
300 | + | ||
301 | +// CountDown | ||
302 | +@count-down-text-color: @text-color; | ||
303 | +@count-down-font-size: @font-size-md; | ||
304 | +@count-down-line-height: @line-height-md; | ||
305 | + | ||
306 | +// Coupon | ||
307 | +@coupon-margin: 0 @padding-sm @padding-sm; | ||
308 | +@coupon-content-height: 84px; | ||
309 | +@coupon-content-padding: 14px 0; | ||
310 | +@coupon-background-color: @white; | ||
311 | +@coupon-active-background-color: @active-color; | ||
312 | +@coupon-border-radius: @border-radius-lg; | ||
313 | +@coupon-box-shadow: 0 0 4px rgba(0, 0, 0, 0.1); | ||
314 | +@coupon-head-width: 96px; | ||
315 | +@coupon-amount-color: @red; | ||
316 | +@coupon-amount-font-size: 30px; | ||
317 | +@coupon-currency-font-size: 40%; | ||
318 | +@coupon-name-font-size: @font-size-md; | ||
319 | +@coupon-disabled-text-color: @gray-6; | ||
320 | +@coupon-description-padding: @padding-xs @padding-md; | ||
321 | +@coupon-description-border-color: @border-color; | ||
322 | + | ||
323 | +// CouponCell | ||
324 | +@coupon-cell-selected-text-color: @text-color; | ||
325 | + | ||
326 | +// CouponList | ||
327 | +@coupon-list-background-color: @background-color; | ||
328 | +@coupon-list-field-padding: 5px 0 5px @padding-md; | ||
329 | +@coupon-list-exchange-button-height: 32px; | ||
330 | +@coupon-list-close-button-height: 40px; | ||
331 | +@coupon-list-empty-image-size: 200px; | ||
332 | +@coupon-list-empty-tip-color: @gray-6; | ||
333 | +@coupon-list-empty-tip-font-size: @font-size-md; | ||
334 | +@coupon-list-empty-tip-line-height: @line-height-md; | ||
335 | + | ||
336 | +// Dialog | ||
337 | +@dialog-width: 320px; | ||
338 | +@dialog-small-screen-width: 90%; | ||
339 | +@dialog-font-size: @font-size-lg; | ||
340 | +@dialog-transition: @animation-duration-base; | ||
341 | +@dialog-border-radius: 16px; | ||
342 | +@dialog-background-color: @white; | ||
343 | +@dialog-header-font-weight: @font-weight-bold; | ||
344 | +@dialog-header-line-height: 24px; | ||
345 | +@dialog-header-padding-top: 26px; | ||
346 | +@dialog-header-isolated-padding: @padding-lg 0; | ||
347 | +@dialog-message-padding: @padding-lg; | ||
348 | +@dialog-message-font-size: @font-size-md; | ||
349 | +@dialog-message-line-height: @line-height-md; | ||
350 | +@dialog-message-max-height: 60vh; | ||
351 | +@dialog-has-title-message-text-color: @gray-7; | ||
352 | +@dialog-has-title-message-padding-top: @padding-xs; | ||
353 | +@dialog-button-height: 48px; | ||
354 | +@dialog-round-button-height: 36px; | ||
355 | +@dialog-confirm-button-text-color: @red; | ||
356 | + | ||
357 | +// Divider | ||
358 | +@divider-margin: @padding-md 0; | ||
359 | +@divider-text-color: @gray-6; | ||
360 | +@divider-font-size: @font-size-md; | ||
361 | +@divider-line-height: 24px; | ||
362 | +@divider-border-color: @border-color; | ||
363 | +@divider-content-padding: @padding-md; | ||
364 | +@divider-content-left-width: 10%; | ||
365 | +@divider-content-right-width: 10%; | ||
366 | + | ||
367 | +// DropdownMenu | ||
368 | +@dropdown-menu-height: 48px; | ||
369 | +@dropdown-menu-background-color: @white; | ||
370 | +@dropdown-menu-box-shadow: 0 2px 12px fade(@gray-7, 12); | ||
371 | +@dropdown-menu-title-font-size: 15px; | ||
372 | +@dropdown-menu-title-text-color: @text-color; | ||
373 | +@dropdown-menu-title-active-text-color: @red; | ||
374 | +@dropdown-menu-title-disabled-text-color: @gray-6; | ||
375 | +@dropdown-menu-title-padding: 0 @padding-xs; | ||
376 | +@dropdown-menu-title-line-height: @line-height-lg; | ||
377 | +@dropdown-menu-option-active-color: @red; | ||
378 | +@dropdown-menu-content-max-height: 80%; | ||
379 | +@dropdown-item-z-index: 10; | ||
380 | + | ||
381 | +// Empty | ||
382 | +@empty-padding: @padding-xl 0; | ||
383 | +@empty-image-size: 160px; | ||
384 | +@empty-description-margin-top: @padding-md; | ||
385 | +@empty-description-padding: 0 60px; | ||
386 | +@empty-description-color: @gray-6; | ||
387 | +@empty-description-font-size: @font-size-md; | ||
388 | +@empty-description-line-height: @line-height-md; | ||
389 | +@empty-bottom-margin-top: 24px; | ||
390 | + | ||
391 | +// Field | ||
392 | +@field-label-width: 6.2em; | ||
393 | +@field-label-color: @gray-7; | ||
394 | +@field-label-margin-right: @padding-sm; | ||
395 | +@field-input-text-color: @text-color; | ||
396 | +@field-input-error-text-color: @red; | ||
397 | +@field-input-disabled-text-color: @gray-5; | ||
398 | +@field-placeholder-text-color: @gray-5; | ||
399 | +@field-icon-size: 16px; | ||
400 | +@field-clear-icon-size: 16px; | ||
401 | +@field-clear-icon-color: @gray-5; | ||
402 | +@field-right-icon-color: @gray-6; | ||
403 | +@field-error-message-color: @red; | ||
404 | +@field-error-message-font-size: 12px; | ||
405 | +@field-text-area-min-height: 60px; | ||
406 | +@field-word-limit-color: @gray-7; | ||
407 | +@field-word-limit-font-size: @font-size-sm; | ||
408 | +@field-word-limit-line-height: 16px; | ||
409 | +@field-disabled-text-color: @gray-5; | ||
410 | + | ||
411 | +// GridItem | ||
412 | +@grid-item-content-padding: @padding-md @padding-xs; | ||
413 | +@grid-item-content-background-color: @white; | ||
414 | +@grid-item-content-active-color: @active-color; | ||
415 | +@grid-item-icon-size: 28px; | ||
416 | +@grid-item-text-color: @gray-7; | ||
417 | +@grid-item-text-font-size: @font-size-sm; | ||
418 | + | ||
419 | +// GoodsAction | ||
420 | +@goods-action-background-color: @white; | ||
421 | +@goods-action-height: 50px; | ||
422 | +@goods-action-icon-width: 48px; | ||
423 | +@goods-action-icon-height: 100%; | ||
424 | +@goods-action-icon-color: @text-color; | ||
425 | +@goods-action-icon-size: 18px; | ||
426 | +@goods-action-icon-font-size: @font-size-xs; | ||
427 | +@goods-action-icon-active-color: @active-color; | ||
428 | +@goods-action-icon-text-color: @gray-7; | ||
429 | +@goods-action-button-height: 40px; | ||
430 | +@goods-action-button-warning-color: @gradient-orange; | ||
431 | +@goods-action-button-danger-color: @gradient-red; | ||
432 | + | ||
433 | +// IndexAnchor | ||
434 | +@index-anchor-z-index: 1; | ||
435 | +@index-anchor-padding: 0 @padding-md; | ||
436 | +@index-anchor-text-color: @text-color; | ||
437 | +@index-anchor-font-weight: @font-weight-bold; | ||
438 | +@index-anchor-font-size: @font-size-md; | ||
439 | +@index-anchor-line-height: 32px; | ||
440 | +@index-anchor-background-color: transparent; | ||
441 | +@index-anchor-sticky-text-color: @red; | ||
442 | +@index-anchor-sticky-background-color: @white; | ||
443 | + | ||
444 | +// IndexBar | ||
445 | +@index-bar-sidebar-z-index: 2; | ||
446 | +@index-bar-index-font-size: @font-size-xs; | ||
447 | +@index-bar-index-line-height: @line-height-xs; | ||
448 | +@index-bar-index-active-color: @red; | ||
449 | + | ||
450 | +// Info | ||
451 | +@info-size: 16px; | ||
452 | +@info-color: @white; | ||
453 | +@info-padding: 0 3px; | ||
454 | +@info-font-size: @font-size-sm; | ||
455 | +@info-font-weight: @font-weight-bold; | ||
456 | +@info-border-width: @border-width-base; | ||
457 | +@info-background-color: @red; | ||
458 | +@info-dot-color: @red; | ||
459 | +@info-dot-size: 8px; | ||
460 | +@info-font-family: -apple-system-font, Helvetica Neue, Arial, sans-serif; | ||
461 | + | ||
462 | +// Image | ||
463 | +@image-placeholder-text-color: @gray-6; | ||
464 | +@image-placeholder-font-size: @font-size-md; | ||
465 | +@image-placeholder-background-color: @background-color; | ||
466 | +@image-loading-icon-size: 32px; | ||
467 | +@image-loading-icon-color: @gray-4; | ||
468 | +@image-error-icon-size: 32px; | ||
469 | +@image-error-icon-color: @gray-4; | ||
470 | + | ||
471 | +// ImagePreview | ||
472 | +@image-preview-index-text-color: @white; | ||
473 | +@image-preview-index-font-size: @font-size-md; | ||
474 | +@image-preview-index-line-height: @line-height-md; | ||
475 | +@image-preview-index-text-shadow: 0 1px 1px @gray-8; | ||
476 | +@image-preview-overlay-background-color: rgba(0, 0, 0, 0.9); | ||
477 | +@image-preview-close-icon-size: 22px; | ||
478 | +@image-preview-close-icon-color: @gray-5; | ||
479 | +@image-preview-close-icon-active-color: @gray-6; | ||
480 | +@image-preview-close-icon-margin: @padding-md; | ||
481 | +@image-preview-close-icon-z-index: 1; | ||
482 | + | ||
483 | +// List | ||
484 | +@list-text-color: @gray-6; | ||
485 | +@list-text-font-size: @font-size-md; | ||
486 | +@list-text-line-height: 50px; | ||
487 | + | ||
488 | +// Loading | ||
489 | +@loading-text-color: @gray-6; | ||
490 | +@loading-text-font-size: @font-size-md; | ||
491 | +@loading-spinner-color: @gray-5; | ||
492 | +@loading-spinner-size: 30px; | ||
493 | +@loading-spinner-animation-duration: 0.8s; | ||
494 | + | ||
495 | +// NavBar | ||
496 | +@nav-bar-height: 46px; | ||
497 | +@nav-bar-background-color: @white; | ||
498 | +@nav-bar-arrow-size: 16px; | ||
499 | +@nav-bar-icon-color: @blue; | ||
500 | +@nav-bar-text-color: @blue; | ||
501 | +@nav-bar-title-font-size: @font-size-lg; | ||
502 | +@nav-bar-title-text-color: @text-color; | ||
503 | +@nav-bar-z-index: 1; | ||
504 | + | ||
505 | +// NoticeBar | ||
506 | +@notice-bar-height: 40px; | ||
507 | +@notice-bar-padding: 0 @padding-md; | ||
508 | +@notice-bar-wrapable-padding: @padding-xs @padding-md; | ||
509 | +@notice-bar-text-color: @orange-dark; | ||
510 | +@notice-bar-font-size: @font-size-md; | ||
511 | +@notice-bar-line-height: 24px; | ||
512 | +@notice-bar-background-color: @orange-light; | ||
513 | +@notice-bar-icon-size: 16px; | ||
514 | +@notice-bar-icon-min-width: 24px; | ||
515 | + | ||
516 | +// Notify | ||
517 | +@notify-text-color: @white; | ||
518 | +@notify-padding: @padding-xs @padding-md; | ||
519 | +@notify-font-size: @font-size-md; | ||
520 | +@notify-line-height: @line-height-md; | ||
521 | +@notify-primary-background-color: @blue; | ||
522 | +@notify-success-background-color: @green; | ||
523 | +@notify-danger-background-color: @red; | ||
524 | +@notify-warning-background-color: @orange; | ||
525 | + | ||
526 | +// NumberKeyboard | ||
527 | +@number-keyboard-background-color: @gray-2; | ||
528 | +@number-keyboard-key-height: 48px; | ||
529 | +@number-keyboard-key-font-size: 28px; | ||
530 | +@number-keyboard-key-active-color: @gray-3; | ||
531 | +@number-keyboard-delete-font-size: @font-size-lg; | ||
532 | +@number-keyboard-title-color: @gray-7; | ||
533 | +@number-keyboard-title-height: 34px; | ||
534 | +@number-keyboard-title-font-size: @font-size-lg; | ||
535 | +@number-keyboard-close-padding: 0 @padding-md; | ||
536 | +@number-keyboard-close-color: @text-link-color; | ||
537 | +@number-keyboard-close-font-size: @font-size-md; | ||
538 | +@number-keyboard-button-text-color: @white; | ||
539 | +@number-keyboard-button-background-color: @blue; | ||
540 | +@number-keyboard-cursor-color: @text-color; | ||
541 | +@number-keyboard-cursor-width: 1px; | ||
542 | +@number-keyboard-cursor-height: 40%; | ||
543 | +@number-keyboard-cursor-animation-duration: 1s; | ||
544 | +@number-keyboard-z-index: 100; | ||
545 | + | ||
546 | +// Overlay | ||
547 | +@overlay-z-index: 1; | ||
548 | +@overlay-background-color: rgba(0, 0, 0, 0.7); | ||
549 | + | ||
550 | +// Pagination | ||
551 | +@pagination-height: 40px; | ||
552 | +@pagination-font-size: @font-size-md; | ||
553 | +@pagination-item-width: 36px; | ||
554 | +@pagination-item-default-color: @blue; | ||
555 | +@pagination-item-disabled-color: @gray-7; | ||
556 | +@pagination-item-disabled-background-color: @background-color; | ||
557 | +@pagination-background-color: @white; | ||
558 | +@pagination-desc-color: @gray-7; | ||
559 | +@pagination-disabled-opacity: @disabled-opacity; | ||
560 | + | ||
561 | +// Panel | ||
562 | +@panel-background-color: @white; | ||
563 | +@panel-header-value-color: @red; | ||
564 | +@panel-footer-padding: @padding-xs @padding-md; | ||
565 | + | ||
566 | +// PasswordInput | ||
567 | +@password-input-height: 50px; | ||
568 | +@password-input-margin: 0 @padding-md; | ||
569 | +@password-input-font-size: 20px; | ||
570 | +@password-input-border-radius: 6px; | ||
571 | +@password-input-background-color: @white; | ||
572 | +@password-input-info-color: @gray-6; | ||
573 | +@password-input-info-font-size: @font-size-md; | ||
574 | +@password-input-error-info-color: @red; | ||
575 | +@password-input-dot-size: 10px; | ||
576 | +@password-input-dot-color: @black; | ||
577 | + | ||
578 | +// Picker | ||
579 | +@picker-background-color: @white; | ||
580 | +@picker-toolbar-height: 44px; | ||
581 | +@picker-title-font-size: @font-size-lg; | ||
582 | +@picker-title-line-height: @line-height-md; | ||
583 | +@picker-action-padding: 0 @padding-md; | ||
584 | +@picker-action-font-size: @font-size-md; | ||
585 | +@picker-confirm-action-color: @text-link-color; | ||
586 | +@picker-cancel-action-color: @gray-6; | ||
587 | +@picker-option-font-size: @font-size-lg; | ||
588 | +@picker-option-text-color: @black; | ||
589 | +@picker-option-disabled-opacity: 0.3; | ||
590 | +@picker-loading-icon-color: @blue; | ||
591 | +@picker-loading-mask-color: rgba(255, 255, 255, 0.9); | ||
592 | + | ||
593 | +// Popover | ||
594 | +@popover-arrow-size: 6px; | ||
595 | +@popover-border-radius: @border-radius-lg; | ||
596 | +@popover-action-width: 128px; | ||
597 | +@popover-action-height: 44px; | ||
598 | +@popover-action-font-size: @font-size-md; | ||
599 | +@popover-action-line-height: @line-height-md; | ||
600 | +@popover-action-icon-size: 20px; | ||
601 | +@popover-light-text-color: @text-color; | ||
602 | +@popover-light-background-color: @white; | ||
603 | +@popover-light-action-disabled-text-color: @gray-5; | ||
604 | +@popover-dark-text-color: @white; | ||
605 | +@popover-dark-background-color: #4a4a4a; | ||
606 | +@popover-dark-action-disabled-text-color: @gray-6; | ||
607 | + | ||
608 | +// Popup | ||
609 | +@popup-background-color: @white; | ||
610 | +@popup-transition: transform @animation-duration-base; | ||
611 | +@popup-round-border-radius: 16px; | ||
612 | +@popup-close-icon-size: 22px; | ||
613 | +@popup-close-icon-color: @gray-5; | ||
614 | +@popup-close-icon-active-color: @gray-6; | ||
615 | +@popup-close-icon-margin: 16px; | ||
616 | +@popup-close-icon-z-index: 1; | ||
617 | + | ||
618 | +// Progress | ||
619 | +@progress-height: 4px; | ||
620 | +@progress-color: @blue; | ||
621 | +@progress-background-color: @gray-3; | ||
622 | +@progress-pivot-padding: 0 5px; | ||
623 | +@progress-pivot-text-color: @white; | ||
624 | +@progress-pivot-font-size: @font-size-xs; | ||
625 | +@progress-pivot-line-height: 1.6; | ||
626 | +@progress-pivot-background-color: @blue; | ||
627 | + | ||
628 | +// PullRefresh | ||
629 | +@pull-refresh-head-height: 50px; | ||
630 | +@pull-refresh-head-font-size: @font-size-md; | ||
631 | +@pull-refresh-head-text-color: @gray-6; | ||
632 | + | ||
633 | +// Radio | ||
634 | +@radio-size: 20px; | ||
635 | +@radio-border-color: @gray-5; | ||
636 | +@radio-transition-duration: @animation-duration-fast; | ||
637 | +@radio-label-margin: @padding-xs; | ||
638 | +@radio-label-color: @text-color; | ||
639 | +@radio-checked-icon-color: @blue; | ||
640 | +@radio-disabled-icon-color: @gray-5; | ||
641 | +@radio-disabled-label-color: @gray-5; | ||
642 | +@radio-disabled-background-color: @border-color; | ||
643 | + | ||
644 | +// Rate | ||
645 | +@rate-icon-size: 20px; | ||
646 | +@rate-icon-gutter: @padding-base; | ||
647 | +@rate-icon-void-color: @gray-5; | ||
648 | +@rate-icon-full-color: @red; | ||
649 | +@rate-icon-disabled-color: @gray-5; | ||
650 | + | ||
651 | +// ShareSheet | ||
652 | +@share-sheet-header-padding: @padding-sm @padding-md @padding-base; | ||
653 | +@share-sheet-title-color: @text-color; | ||
654 | +@share-sheet-title-font-size: @font-size-md; | ||
655 | +@share-sheet-title-line-height: @line-height-md; | ||
656 | +@share-sheet-description-color: @gray-6; | ||
657 | +@share-sheet-description-font-size: @font-size-sm; | ||
658 | +@share-sheet-description-line-height: 16px; | ||
659 | +@share-sheet-icon-size: 48px; | ||
660 | +@share-sheet-option-name-color: @gray-7; | ||
661 | +@share-sheet-option-name-font-size: @font-size-sm; | ||
662 | +@share-sheet-option-description-color: @gray-5; | ||
663 | +@share-sheet-option-description-font-size: @font-size-sm; | ||
664 | +@share-sheet-cancel-button-font-size: @font-size-lg; | ||
665 | +@share-sheet-cancel-button-height: 48px; | ||
666 | +@share-sheet-cancel-button-background: @white; | ||
667 | + | ||
668 | +// Search | ||
669 | +@search-padding: 10px @padding-sm; | ||
670 | +@search-background-color: @white; | ||
671 | +@search-content-background-color: @gray-1; | ||
672 | +@search-input-height: 34px; | ||
673 | +@search-label-padding: 0 5px; | ||
674 | +@search-label-color: @text-color; | ||
675 | +@search-label-font-size: @font-size-md; | ||
676 | +@search-left-icon-color: @gray-6; | ||
677 | +@search-action-padding: 0 @padding-xs; | ||
678 | +@search-action-text-color: @text-color; | ||
679 | +@search-action-font-size: @font-size-md; | ||
680 | + | ||
681 | +// Sidebar | ||
682 | +@sidebar-width: 80px; | ||
683 | +@sidebar-font-size: @font-size-md; | ||
684 | +@sidebar-line-height: @line-height-md; | ||
685 | +@sidebar-text-color: @text-color; | ||
686 | +@sidebar-disabled-text-color: @gray-5; | ||
687 | +@sidebar-padding: 20px @padding-sm; | ||
688 | +@sidebar-active-color: @active-color; | ||
689 | +@sidebar-background-color: @background-color; | ||
690 | +@sidebar-selected-font-weight: @font-weight-bold; | ||
691 | +@sidebar-selected-text-color: @text-color; | ||
692 | +@sidebar-selected-border-width: 4px; | ||
693 | +@sidebar-selected-border-height: 16px; | ||
694 | +@sidebar-selected-border-color: @red; | ||
695 | +@sidebar-selected-background-color: @white; | ||
696 | + | ||
697 | +// Skeleton | ||
698 | +@skeleton-row-height: 16px; | ||
699 | +@skeleton-row-background-color: @active-color; | ||
700 | +@skeleton-row-margin-top: @padding-sm; | ||
701 | +@skeleton-title-width: 40%; | ||
702 | +@skeleton-avatar-size: 32px; | ||
703 | +@skeleton-avatar-background-color: @active-color; | ||
704 | +@skeleton-animation-duration: 1.2s; | ||
705 | + | ||
706 | +// Slider | ||
707 | +@slider-active-background-color: @blue; | ||
708 | +@slider-inactive-background-color: @gray-3; | ||
709 | +@slider-disabled-opacity: @disabled-opacity; | ||
710 | +@slider-bar-height: 2px; | ||
711 | +@slider-button-width: 24px; | ||
712 | +@slider-button-height: 24px; | ||
713 | +@slider-button-border-radius: 50%; | ||
714 | +@slider-button-background-color: @white; | ||
715 | +@slider-button-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); | ||
716 | + | ||
717 | +// Step | ||
718 | +@step-text-color: @gray-6; | ||
719 | +@step-active-color: @green; | ||
720 | +@step-process-text-color: @text-color; | ||
721 | +@step-font-size: @font-size-md; | ||
722 | +@step-line-color: @border-color; | ||
723 | +@step-finish-line-color: @green; | ||
724 | +@step-finish-text-color: @text-color; | ||
725 | +@step-icon-size: 12px; | ||
726 | +@step-circle-size: 5px; | ||
727 | +@step-circle-color: @gray-6; | ||
728 | +@step-horizontal-title-font-size: @font-size-sm; | ||
729 | + | ||
730 | +// Steps | ||
731 | +@steps-background-color: @white; | ||
732 | + | ||
733 | +// Sticky | ||
734 | +@sticky-z-index: 99; | ||
735 | + | ||
736 | +// Stepper | ||
737 | +@stepper-active-color: #e8e8e8; | ||
738 | +@stepper-background-color: @active-color; | ||
739 | +@stepper-button-icon-color: @text-color; | ||
740 | +@stepper-button-disabled-color: @background-color; | ||
741 | +@stepper-button-disabled-icon-color: @gray-5; | ||
742 | +@stepper-button-round-theme-color: @blue; | ||
743 | +@stepper-input-width: 32px; | ||
744 | +@stepper-input-height: 28px; | ||
745 | +@stepper-input-font-size: @font-size-md; | ||
746 | +@stepper-input-line-height: normal; | ||
747 | +@stepper-input-text-color: @text-color; | ||
748 | +@stepper-input-disabled-text-color: @gray-5; | ||
749 | +@stepper-input-disabled-background-color: @active-color; | ||
750 | +@stepper-border-radius: @border-radius-md; | ||
751 | + | ||
752 | +// SubmitBar | ||
753 | +@submit-bar-height: 50px; | ||
754 | +@submit-bar-z-index: 100; | ||
755 | +@submit-bar-background-color: @white; | ||
756 | +@submit-bar-button-width: 110px; | ||
757 | +@submit-bar-price-color: @red; | ||
758 | +@submit-bar-price-font-size: @font-size-md; | ||
759 | +@submit-bar-currency-font-size: @font-size-md; | ||
760 | +@submit-bar-text-color: @text-color; | ||
761 | +@submit-bar-text-font-size: @font-size-md; | ||
762 | +@submit-bar-tip-padding: @padding-xs @padding-sm; | ||
763 | +@submit-bar-tip-font-size: @font-size-sm; | ||
764 | +@submit-bar-tip-line-height: 1.5; | ||
765 | +@submit-bar-tip-color: #f56723; | ||
766 | +@submit-bar-tip-background-color: #fff7cc; | ||
767 | +@submit-bar-tip-icon-size: 12px; | ||
768 | +@submit-bar-button-height: 40px; | ||
769 | +@submit-bar-padding: 0 @padding-md; | ||
770 | +@submit-bar-price-integer-font-size: 20px; | ||
771 | +@submit-bar-price-font-family: @price-integer-font-family; | ||
772 | + | ||
773 | +// Swipe | ||
774 | +@swipe-indicator-size: 6px; | ||
775 | +@swipe-indicator-margin: @padding-sm; | ||
776 | +@swipe-indicator-active-opacity: 1; | ||
777 | +@swipe-indicator-inactive-opacity: 0.3; | ||
778 | +@swipe-indicator-active-background-color: @blue; | ||
779 | +@swipe-indicator-inactive-background-color: @border-color; | ||
780 | + | ||
781 | +// Switch | ||
782 | +@switch-size: 30px; | ||
783 | +@switch-width: 2em; | ||
784 | +@switch-height: 1em; | ||
785 | +@switch-node-size: 1em; | ||
786 | +@switch-node-background-color: @white; | ||
787 | +@switch-node-box-shadow: 0 3px 1px 0 rgba(0, 0, 0, 0.05), | ||
788 | +0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05); | ||
789 | +@switch-background-color: @white; | ||
790 | +@switch-on-background-color: @blue; | ||
791 | +@switch-transition-duration: @animation-duration-base; | ||
792 | +@switch-disabled-opacity: @disabled-opacity; | ||
793 | +@switch-border: @border-width-base solid rgba(0, 0, 0, 0.1); | ||
794 | + | ||
795 | +// SwitchCell | ||
796 | +@switch-cell-padding-top: @cell-vertical-padding - 1px; | ||
797 | +@switch-cell-padding-bottom: @cell-vertical-padding - 1px; | ||
798 | +@switch-cell-large-padding-top: @cell-large-vertical-padding - 1px; | ||
799 | +@switch-cell-large-padding-bottom: @cell-large-vertical-padding - 1px; | ||
800 | + | ||
801 | +// Tabbar | ||
802 | +@tabbar-height: 50px; | ||
803 | +@tabbar-z-index: 1; | ||
804 | +@tabbar-background-color: @white; | ||
805 | + | ||
806 | +// TabbarItem | ||
807 | +@tabbar-item-font-size: @font-size-sm; | ||
808 | +@tabbar-item-text-color: @gray-7; | ||
809 | +@tabbar-item-active-color: @blue; | ||
810 | +@tabbar-item-active-background-color: @tabbar-background-color; | ||
811 | +@tabbar-item-line-height: 1; | ||
812 | +@tabbar-item-icon-size: 22px; | ||
813 | +@tabbar-item-margin-bottom: 4px; | ||
814 | + | ||
815 | +// Tab | ||
816 | +@tab-text-color: @gray-7; | ||
817 | +@tab-active-text-color: @text-color; | ||
818 | +@tab-disabled-text-color: @gray-5; | ||
819 | +@tab-font-size: @font-size-md; | ||
820 | +@tab-line-height: @line-height-md; | ||
821 | + | ||
822 | +// Tabs | ||
823 | +@tabs-default-color: @red; | ||
824 | +@tabs-line-height: 44px; | ||
825 | +@tabs-card-height: 30px; | ||
826 | +@tabs-nav-background-color: @white; | ||
827 | +@tabs-bottom-bar-width: 40px; | ||
828 | +@tabs-bottom-bar-height: 3px; | ||
829 | +@tabs-bottom-bar-color: @tabs-default-color; | ||
830 | + | ||
831 | +// Tag | ||
832 | +@tag-padding: 0 @padding-base; | ||
833 | +@tag-text-color: @white; | ||
834 | +@tag-font-size: @font-size-sm; | ||
835 | +@tag-border-radius: 2px; | ||
836 | +@tag-line-height: 16px; | ||
837 | +@tag-medium-padding: 2px 6px; | ||
838 | +@tag-large-padding: @padding-base @padding-xs; | ||
839 | +@tag-large-border-radius: @border-radius-md; | ||
840 | +@tag-large-font-size: @font-size-md; | ||
841 | +@tag-round-border-radius: @border-radius-max; | ||
842 | +@tag-danger-color: @red; | ||
843 | +@tag-primary-color: @blue; | ||
844 | +@tag-success-color: @green; | ||
845 | +@tag-warning-color: @orange; | ||
846 | +@tag-default-color: @gray-6; | ||
847 | +@tag-plain-background-color: @white; | ||
848 | + | ||
849 | +// Toast | ||
850 | +@toast-max-width: 70%; | ||
851 | +@toast-font-size: @font-size-md; | ||
852 | +@toast-text-color: @white; | ||
853 | +@toast-loading-icon-color: @white; | ||
854 | +@toast-line-height: @line-height-md; | ||
855 | +@toast-border-radius: @border-radius-lg; | ||
856 | +@toast-background-color: fade(@black, 70%); | ||
857 | +@toast-icon-size: 36px; | ||
858 | +@toast-text-min-width: 96px; | ||
859 | +@toast-text-padding: @padding-xs @padding-sm; | ||
860 | +@toast-default-padding: @padding-md; | ||
861 | +@toast-default-width: 88px; | ||
862 | +@toast-default-min-height: 88px; | ||
863 | +@toast-position-top-distance: 20%; | ||
864 | +@toast-position-bottom-distance: 20%; | ||
865 | + | ||
866 | +// TreeSelect | ||
867 | +@tree-select-font-size: @font-size-md; | ||
868 | +@tree-select-nav-background-color: @background-color; | ||
869 | +@tree-select-content-background-color: @white; | ||
870 | +@tree-select-nav-item-padding: 14px @padding-sm; | ||
871 | +@tree-select-item-height: 48px; | ||
872 | +@tree-select-item-active-color: @red; | ||
873 | +@tree-select-item-disabled-color: @gray-5; | ||
874 | +@tree-select-item-selected-size: 16px; | ||
875 | + | ||
876 | +// Uploader | ||
877 | +@uploader-size: 80px; | ||
878 | +@uploader-icon-size: 24px; | ||
879 | +@uploader-icon-color: @gray-4; | ||
880 | +@uploader-text-color: @gray-6; | ||
881 | +@uploader-text-font-size: @font-size-sm; | ||
882 | +@uploader-upload-background-color: @gray-1; | ||
883 | +@uploader-upload-active-color: @active-color; | ||
884 | +@uploader-delete-color: @white; | ||
885 | +@uploader-delete-icon-size: 14px; | ||
886 | +@uploader-delete-background-color: rgba(0, 0, 0, 0.7); | ||
887 | +@uploader-file-background-color: @background-color; | ||
888 | +@uploader-file-icon-size: 20px; | ||
889 | +@uploader-file-icon-color: @gray-7; | ||
890 | +@uploader-file-name-padding: 0 @padding-base; | ||
891 | +@uploader-file-name-margin-top: @padding-xs; | ||
892 | +@uploader-file-name-font-size: @font-size-sm; | ||
893 | +@uploader-file-name-text-color: @gray-7; | ||
894 | +@uploader-mask-background-color: fade(@gray-8, 88%); | ||
895 | +@uploader-mask-icon-size: 22px; | ||
896 | +@uploader-mask-message-font-size: @font-size-sm; | ||
897 | +@uploader-mask-message-line-height: @line-height-xs; | ||
898 | +@uploader-loading-icon-size: 22px; | ||
899 | +@uploader-loading-icon-color: @white; | ||
900 | +@uploader-disabled-opacity: @disabled-opacity; | ||
901 | + | ||
902 | +// Sku | ||
903 | +@sku-item-background-color: @background-color; | ||
904 | +@sku-icon-gray-color: @gray-4; | ||
905 | +@sku-upload-mask-color: rgba(50, 50, 51, 0.8); |
src/assets/images/cards/novipcard.png
0 → 100644
21.7 KB
src/assets/images/cards/vipcardbg.png
0 → 100644
16.5 KB
src/assets/images/cards/vipcardbg1.png
0 → 100644
3.98 KB
src/assets/images/myCars/addBtn.png
0 → 100644
577 Bytes
src/assets/images/myCars/addBtnBg.png
0 → 100644
575 Bytes
src/assets/images/myCars/carNumBg.png
0 → 100644
1.01 KB
src/assets/images/myCars/fornt.png
0 → 100644
4.03 KB
src/components/vant-number-plate/vnp-input-box.vue
0 → 100644
1 | +<template> | ||
2 | + <div class="vnp-input-box"> | ||
3 | + <ul> | ||
4 | + <li | ||
5 | + v-for="(item, index) in val" | ||
6 | + :key="index" | ||
7 | + :class="{ active: activeIndex === index }" | ||
8 | + @click="handleClickItem(index)" | ||
9 | + > | ||
10 | + <span>{{ item }}</span> | ||
11 | + </li> | ||
12 | + </ul> | ||
13 | + </div> | ||
14 | +</template> | ||
15 | + | ||
16 | +<script> | ||
17 | +export default { | ||
18 | + props: { | ||
19 | + value: { | ||
20 | + type: String, | ||
21 | + default: "", | ||
22 | + }, | ||
23 | + editable: { | ||
24 | + type: Boolean, | ||
25 | + default: false, | ||
26 | + }, | ||
27 | + }, | ||
28 | + data() { | ||
29 | + return { | ||
30 | + val: ["", "", "", "", "", "", "", ""], | ||
31 | + activeIndex: this.editable ? 0 : undefined, | ||
32 | + }; | ||
33 | + }, | ||
34 | + watch: { | ||
35 | + activeIndex() { | ||
36 | + this.$emit("activeChange", this.activeIndex); | ||
37 | + }, | ||
38 | + value: { | ||
39 | + immediate: true, | ||
40 | + handler() { | ||
41 | + if (this.val.join("") === this.value) { | ||
42 | + return; | ||
43 | + } | ||
44 | + const val = this.value.split(""); | ||
45 | + if (this.editable) { | ||
46 | + this.activeIndex = val.length; | ||
47 | + } | ||
48 | + while (val.length < 8) { | ||
49 | + val.push(""); | ||
50 | + } | ||
51 | + this.val = val; | ||
52 | + }, | ||
53 | + }, | ||
54 | + val() { | ||
55 | + this.$emit("input", this.val.join("")); | ||
56 | + }, | ||
57 | + }, | ||
58 | + methods: { | ||
59 | + handleClickItem(index) { | ||
60 | + if (!this.editable) { | ||
61 | + return; | ||
62 | + } | ||
63 | + this.activeIndex = index; | ||
64 | + }, | ||
65 | + setValue(val) { | ||
66 | + this.$set(this.val, this.activeIndex, val); | ||
67 | + if (this.activeIndex < 7) { | ||
68 | + this.activeIndex += 1; | ||
69 | + } | ||
70 | + }, | ||
71 | + del() { | ||
72 | + this.$set(this.val, this.activeIndex, ""); | ||
73 | + if (this.activeIndex > 0) { | ||
74 | + this.activeIndex -= 1; | ||
75 | + } | ||
76 | + }, | ||
77 | + }, | ||
78 | +} | ||
79 | +</script> | ||
80 | + | ||
81 | +<style lang="less" scoped> | ||
82 | + .vnp-input-box { | ||
83 | + padding: 10px 0; | ||
84 | + border: 1px solid #d8d8d8; | ||
85 | + border-radius: 2px; | ||
86 | + color: #8d8d8d; | ||
87 | + font-size: 15px; | ||
88 | + text-align: center; | ||
89 | + | ||
90 | + ul { | ||
91 | + display: flex; | ||
92 | + } | ||
93 | + li { | ||
94 | + flex: 1; | ||
95 | + border-right: 1px solid #eaeaea; | ||
96 | + height: 28px; | ||
97 | + line-height: 28px; | ||
98 | + | ||
99 | + &:first-child { | ||
100 | + border-color: #a6a6a6; | ||
101 | + flex: 1.3; | ||
102 | + } | ||
103 | + &:last-child { | ||
104 | + border: none; | ||
105 | + } | ||
106 | + &.active { | ||
107 | + color: #1989fa; | ||
108 | + | ||
109 | + > span { | ||
110 | + height: 100%; | ||
111 | + width: 20px; | ||
112 | + display: inline-block; | ||
113 | + border-bottom: 1px solid #1989fa; | ||
114 | + } | ||
115 | + } | ||
116 | + } | ||
117 | + } | ||
118 | +</style> |
src/components/vant-number-plate/vnp-input.vue
0 → 100644
1 | +<template> | ||
2 | + <div> | ||
3 | + <vnp-input-box | ||
4 | + :value="val" | ||
5 | + @click.native="show = true" | ||
6 | + ></vnp-input-box> | ||
7 | + <vnp-keyboard | ||
8 | + :show.sync="show" | ||
9 | + v-model="val" | ||
10 | + ></vnp-keyboard> | ||
11 | + </div> | ||
12 | +</template> | ||
13 | + | ||
14 | +<script> | ||
15 | +import Box from "./vnp-input-box"; | ||
16 | +import Keyboard from "./vnp-keyboard"; | ||
17 | + | ||
18 | +export default { | ||
19 | + props: { | ||
20 | + value: { | ||
21 | + type: String, | ||
22 | + default: "", | ||
23 | + }, | ||
24 | + }, | ||
25 | + components: { | ||
26 | + 'vnp-input-box': Box, | ||
27 | + 'vnp-keyboard': Keyboard | ||
28 | + }, | ||
29 | + data() { | ||
30 | + return { | ||
31 | + show: false, | ||
32 | + }; | ||
33 | + }, | ||
34 | + computed: { | ||
35 | + val: { | ||
36 | + set(v) { | ||
37 | + this.$emit("input", v); | ||
38 | + }, | ||
39 | + get() { | ||
40 | + return this.value; | ||
41 | + }, | ||
42 | + }, | ||
43 | + }, | ||
44 | +}; | ||
45 | +</script> |
src/components/vant-number-plate/vnp-keyboard.vue
0 → 100644
1 | +<template> | ||
2 | + <van-action-sheet v-model="visible" get-container="body"> | ||
3 | + <div class="vnp-header"> | ||
4 | + <button type="button" class="vnp-btn-finish" @click="finish">完成</button> | ||
5 | + </div> | ||
6 | + | ||
7 | + <div class="vnp-input-box-outer"> | ||
8 | + <vnp-input-box ref="inputBox" v-model="val" editable @activeChange="handleActiveChange"></vnp-input-box> | ||
9 | + </div> | ||
10 | + | ||
11 | + <div class="vnp-keys"> | ||
12 | + <div class="vnp-keys-row" v-for="(item, index) in list" :key="index"> | ||
13 | + <div | ||
14 | + class="vnp-btn-key-wrapper" | ||
15 | + v-for="(val, index) in item" | ||
16 | + :key="index" | ||
17 | + :class="{ | ||
18 | + 'vnp-del-wrapper': val === 'del', | ||
19 | + 'vnp-type-wrapper': val === 'type' | ||
20 | + }" | ||
21 | + > | ||
22 | + <van-button v-if="val === 'type'" class="vnp-btn-key" @click="handleChangeType"> | ||
23 | + <span v-if="type === 'cn'">中/<span class="vnp-smaller">英</span></span> | ||
24 | + <span v-else><span class="vnp-smaller">中</span>/英</span> | ||
25 | + </van-button> | ||
26 | + | ||
27 | + <van-button v-else-if="val === 'del'" class="vnp-btn-key" @click="handleDel"> | ||
28 | + <svg | ||
29 | + viewBox="0 0 32 22" | ||
30 | + xmlns="http://www.w3.org/2000/svg" | ||
31 | + class="vnp-delete-icon" | ||
32 | + > | ||
33 | + <path | ||
34 | + d="M28.016 0A3.991 3.991 0 0132 3.987v14.026c0 2.2-1.787 3.987-3.98 3.987H10.382c-.509 0-.996-.206-1.374-.585L.89 13.09C.33 12.62 0 11.84 0 11.006c0-.86.325-1.62.887-2.08L9.01.585A1.936 1.936 0 0110.383 0zm0 1.947H10.368L2.24 10.28c-.224.226-.312.432-.312.73 0 .287.094.51.312.729l8.128 8.333h17.648a2.041 2.041 0 002.037-2.04V3.987c0-1.127-.915-2.04-2.037-2.04zM23.028 6a.96.96 0 01.678.292.95.95 0 01-.003 1.377l-3.342 3.348 3.326 3.333c.189.188.292.43.292.679 0 .248-.103.49-.292.679a.96.96 0 01-.678.292.959.959 0 01-.677-.292L18.99 12.36l-3.343 3.345a.96.96 0 01-.677.292.96.96 0 01-.678-.292.962.962 0 01-.292-.68c0-.248.104-.49.292-.679l3.342-3.348-3.342-3.348A.963.963 0 0114 6.971c0-.248.104-.49.292-.679A.96.96 0 0114.97 6a.96.96 0 01.677.292l3.358 3.348 3.345-3.348A.96.96 0 0123.028 6z" | ||
35 | + fill="currentColor" | ||
36 | + ></path> | ||
37 | + </svg> | ||
38 | + </van-button> | ||
39 | + | ||
40 | + <van-button v-else class="vnp-btn-key" :class="{'vnp-btn-empty': !val}" @click="handleClickKey(val)"> | ||
41 | + {{ val }} | ||
42 | + </van-button | ||
43 | + > | ||
44 | + </div> | ||
45 | + </div> | ||
46 | + </div> | ||
47 | + </van-action-sheet> | ||
48 | +</template> | ||
49 | + | ||
50 | +<script> | ||
51 | +import Box from './vnp-input-box' | ||
52 | + | ||
53 | +export default { | ||
54 | + components: { | ||
55 | + 'vnp-input-box': Box | ||
56 | + }, | ||
57 | + props: { | ||
58 | + show: { | ||
59 | + type: Boolean, | ||
60 | + default: false | ||
61 | + }, | ||
62 | + value: { | ||
63 | + type: String, | ||
64 | + default: "" | ||
65 | + }, | ||
66 | + }, | ||
67 | + data() { | ||
68 | + return { | ||
69 | + val: this.value, | ||
70 | + type: "cn", | ||
71 | + cn: [ | ||
72 | + ["京", "津", "沪", "渝", "冀", "豫", "云", "辽", "黑", "湘"], | ||
73 | + ["皖", "鲁", "新", "苏", "浙", "赣", "鄂", "桂", "甘", "晋"], | ||
74 | + ["蒙", "陕", "吉", "闽", "贵", "粤", "青", "藏", "川", "宁"], | ||
75 | + ["type", "琼", "使", "领", "学", "", "", "", "del"] | ||
76 | + ], | ||
77 | + en: [ | ||
78 | + ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"], | ||
79 | + ["Q", "W", "E", "R", "T", "Y", "U", "O", "P"], | ||
80 | + ["A", "S", "D", "F", "G", "H", "J", "K", "L"], | ||
81 | + ["type", "Z", "X", "C", "V", "B", "N", "M", "del"] | ||
82 | + ], | ||
83 | + } | ||
84 | + }, | ||
85 | + computed: { | ||
86 | + visible: { | ||
87 | + set(val) { | ||
88 | + this.$emit("update:show", val); | ||
89 | + }, | ||
90 | + get() { | ||
91 | + return this.show; | ||
92 | + } | ||
93 | + }, | ||
94 | + list() { | ||
95 | + return this.type === "en" ? this.en : this.cn; | ||
96 | + } | ||
97 | + }, | ||
98 | + watch: { | ||
99 | + show() { | ||
100 | + if (this.show) { | ||
101 | + this.val = this.value; | ||
102 | + } | ||
103 | + } | ||
104 | + }, | ||
105 | + methods: { | ||
106 | + handleChangeType() { | ||
107 | + this.type = this.type === "en" ? "cn" : "en"; | ||
108 | + }, | ||
109 | + handleClickKey(val) { | ||
110 | + if (val) { | ||
111 | + this.$refs.inputBox.setValue(val); | ||
112 | + } | ||
113 | + }, | ||
114 | + handleActiveChange(activeIndex) { | ||
115 | + if (activeIndex === 0) { | ||
116 | + this.type = "cn"; | ||
117 | + } else { | ||
118 | + this.type = "en"; | ||
119 | + } | ||
120 | + }, | ||
121 | + handleDel() { | ||
122 | + this.$refs.inputBox.del(); | ||
123 | + }, | ||
124 | + finish() { | ||
125 | + this.$emit("input", this.val); | ||
126 | + this.visible = false; | ||
127 | + } | ||
128 | + } | ||
129 | +} | ||
130 | +</script> | ||
131 | + | ||
132 | +<style lang="less" scoped> | ||
133 | + .vnp-header { | ||
134 | + height: 40px; | ||
135 | + padding-top: 6px; | ||
136 | + position: relative; | ||
137 | + | ||
138 | + .vnp-btn-finish { | ||
139 | + position: absolute; | ||
140 | + right: 0; | ||
141 | + height: 100%; | ||
142 | + padding: 0 16px; | ||
143 | + color: #576b95; | ||
144 | + font-size: 14px; | ||
145 | + background-color: transparent; | ||
146 | + border: none; | ||
147 | + cursor: pointer; | ||
148 | + } | ||
149 | + } | ||
150 | + | ||
151 | + .vnp-input-box-outer { | ||
152 | + width: 82%; | ||
153 | + max-width: 600px; | ||
154 | + margin: 0 auto; | ||
155 | + padding: 10px; | ||
156 | + } | ||
157 | + | ||
158 | + .vnp-keys { | ||
159 | + padding: 3px; | ||
160 | + background: #f2f3f5; | ||
161 | + padding-bottom: 22px; | ||
162 | + | ||
163 | + .vnp-keys-row { | ||
164 | + display: flex; | ||
165 | + justify-content: center; | ||
166 | + } | ||
167 | + .vnp-btn-key-wrapper { | ||
168 | + flex: 0 1 calc((100% - 6px * 10) / 10); | ||
169 | + padding: 3px; | ||
170 | + box-sizing: content-box; | ||
171 | + | ||
172 | + &.vnp-del-wrapper, | ||
173 | + &.vnp-type-wrapper { | ||
174 | + flex: 1; | ||
175 | + } | ||
176 | + &.vnp-type-wrapper { | ||
177 | + .vnp-smaller { | ||
178 | + color: #999; | ||
179 | + font-size: 12px; | ||
180 | + } | ||
181 | + } | ||
182 | + | ||
183 | + .vnp-btn-key { | ||
184 | + padding: 0; | ||
185 | + width: 100%; | ||
186 | + border-radius: 4px; | ||
187 | + } | ||
188 | + .vnp-btn-empty { | ||
189 | + background: transparent; | ||
190 | + border: none; | ||
191 | + } | ||
192 | + .vnp-delete-icon { | ||
193 | + width: 18px; | ||
194 | + vertical-align: middle; | ||
195 | + } | ||
196 | + } | ||
197 | + } | ||
198 | +</style>> |
src/main.js
@@ -8,17 +8,27 @@ import './assets/css/reset.css' // 引入公共样式 | @@ -8,17 +8,27 @@ import './assets/css/reset.css' // 引入公共样式 | ||
8 | 8 | ||
9 | import './assets/iconfont/iconfont.css' | 9 | import './assets/iconfont/iconfont.css' |
10 | 10 | ||
11 | -import h5Popup from 'vue-h5-popup' // 引入弹窗 | ||
12 | -Vue.use(h5Popup) | ||
13 | - | ||
14 | - | ||
15 | -import BaiduMap from 'vue-baidu-map' | ||
16 | - | ||
17 | -Vue.use(BaiduMap, { | ||
18 | - // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */ | ||
19 | - ak: 'cuMSxNl5LOY6sf1M3nDGtG6tGXl5a0Bb' | 11 | +// 路由守卫 |
12 | +router.beforeEach((to,from ,next)=>{ | ||
13 | + if(to.meta.title) { | ||
14 | + document.title=to.meta.title; | ||
15 | + }else { | ||
16 | + document.title='宣化微信公众号'; | ||
17 | + } | ||
18 | + next() | ||
20 | }) | 19 | }) |
21 | 20 | ||
21 | +// import h5Popup from 'vue-h5-popup' // 引入弹窗 | ||
22 | +// Vue.use(h5Popup) | ||
23 | +// | ||
24 | +// | ||
25 | +// import BaiduMap from 'vue-baidu-map' | ||
26 | +// | ||
27 | +// Vue.use(BaiduMap, { | ||
28 | +// // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */ | ||
29 | +// ak: 'cuMSxNl5LOY6sf1M3nDGtG6tGXl5a0Bb' | ||
30 | +// }) | ||
31 | +// | ||
22 | 32 | ||
23 | import 'mint-ui/lib/style.css' | 33 | import 'mint-ui/lib/style.css' |
24 | import { MessageBox } from 'mint-ui' | 34 | import { MessageBox } from 'mint-ui' |
@@ -32,6 +42,15 @@ import { Field } from 'mint-ui'; | @@ -32,6 +42,15 @@ import { Field } from 'mint-ui'; | ||
32 | 42 | ||
33 | Vue.component(Field.name, Field); | 43 | Vue.component(Field.name, Field); |
34 | 44 | ||
45 | + | ||
46 | + | ||
47 | + | ||
48 | + | ||
49 | + | ||
50 | + | ||
51 | + | ||
52 | + | ||
53 | + | ||
35 | //全局设置的基本样式 | 54 | //全局设置的基本样式 |
36 | import './assets/css/base.scss' | 55 | import './assets/css/base.scss' |
37 | 56 | ||
@@ -45,13 +64,21 @@ Vue.prototype.$moment = moment | @@ -45,13 +64,21 @@ Vue.prototype.$moment = moment | ||
45 | import utils from './utils/utils' // 工具类 | 64 | import utils from './utils/utils' // 工具类 |
46 | Vue.prototype.$utils = utils | 65 | Vue.prototype.$utils = utils |
47 | // | 66 | // |
48 | -// import Mint from 'mint-ui'; | ||
49 | -// import 'mint-ui/lib/style.css' | ||
50 | -// Vue.use(Mint); | 67 | +import Mint from 'mint-ui'; |
68 | +import 'mint-ui/lib/style.css' | ||
69 | +Vue.use(Mint); | ||
70 | + | ||
71 | + | ||
72 | +// 在main.js中 | ||
73 | + | ||
74 | +import Vant from 'vant'; | ||
75 | + | ||
76 | +import 'vant/lib/index.css'; | ||
77 | +import 'vant/lib/index.less'; | ||
78 | + | ||
79 | +Vue.use(Vant); | ||
51 | 80 | ||
52 | 81 | ||
53 | -import 'swiper/dist/css/swiper.min.css' // 轮播 | ||
54 | -import 'swiper/dist/js/swiper.min' | ||
55 | 82 | ||
56 | import vueFilter from './utils/filters' // 公共filter | 83 | import vueFilter from './utils/filters' // 公共filter |
57 | for (let key in vueFilter){ | 84 | for (let key in vueFilter){ |
src/router/index.js
@@ -67,50 +67,99 @@ export default new Router({ | @@ -67,50 +67,99 @@ export default new Router({ | ||
67 | 67 | ||
68 | 68 | ||
69 | 69 | ||
70 | - // //---------------- 个人页面导航 | ||
71 | - // { | ||
72 | - // path: '/selfNav', | ||
73 | - // name: 'selfNav', | ||
74 | - // component: () => import("@/views/mySelf/selfNav.vue") | ||
75 | - // }, | ||
76 | - // | ||
77 | - // // ------------------------建议反馈 | ||
78 | - // { | ||
79 | - // path: '/suggestionBack', | ||
80 | - // name: 'suggestionBack', | ||
81 | - // component: () => import("@/views/mySelf/feedback/suggestionBack.vue") | ||
82 | - // }, | ||
83 | - // | ||
84 | - // // ------------------------停车记录 | ||
85 | - // { | ||
86 | - // path: '/parkNotes', | ||
87 | - // name: 'parkNotes', | ||
88 | - // component: () => import("@/views/mySelf/parkNotes/parkNotes.vue") | ||
89 | - // }, | ||
90 | - // | ||
91 | - // | ||
92 | - // // ------------------------停车记录 | ||
93 | - // { | ||
94 | - // path: '/binDing', | ||
95 | - // name: 'binDing', | ||
96 | - // component: () => import("@/views/binding/binDing.vue") | ||
97 | - // }, | ||
98 | - // | ||
99 | - // | ||
100 | - // // ------------------------购买会员卡提示 | ||
101 | - // { | ||
102 | - // path: '/cardPoint', | ||
103 | - // name: 'cardPoint', | ||
104 | - // component: () => import("@/views/cards/cardPoint.vue") | ||
105 | - // }, | ||
106 | - // | ||
107 | - // | ||
108 | - // // ------------------------购买会员卡 | ||
109 | - // { | ||
110 | - // path: '/buyCard', | ||
111 | - // name: 'buyCard', | ||
112 | - // component: () => import("@/views/cards/buyCard.vue") | ||
113 | - // }, | 70 | + //---------------- 个人页面导航 |
71 | + { | ||
72 | + path: '/selfNav', | ||
73 | + name: 'selfNav', | ||
74 | + component: () => import("@/views/mySelf/selfNav.vue"), | ||
75 | + meta: {title: "个人中心"} | ||
76 | + }, | ||
77 | + | ||
78 | + // ------------------------建议反馈 | ||
79 | + { | ||
80 | + path: '/suggestionBack', | ||
81 | + name: 'suggestionBack', | ||
82 | + component: () => import("@/views/mySelf/feedback/suggestionBack.vue"), | ||
83 | + meta: {title: "建议反馈"} | ||
84 | + }, | ||
85 | + | ||
86 | + // ------------------------停车记录 | ||
87 | + { | ||
88 | + path: '/parkNotes', | ||
89 | + name: 'parkNotes', | ||
90 | + component: () => import("@/views/mySelf/parkNotes/parkNotes.vue") | ||
91 | + }, | ||
92 | + | ||
93 | + | ||
94 | + // ------------------------登录 | ||
95 | + { | ||
96 | + path: '/binDing', | ||
97 | + name: 'binDing', | ||
98 | + component: () => import("@/views/binding/binDing.vue"), | ||
99 | + meta: {title: "绑定手机号"} | ||
100 | + }, | ||
101 | + { | ||
102 | + path: '/myCars', | ||
103 | + name: 'myCars', | ||
104 | + component: () => import("@/views//mySelf/myCars/myCars.vue"), | ||
105 | + meta: {title: "我的车牌"} | ||
106 | + }, | ||
107 | + | ||
108 | + { | ||
109 | + path: '/addCarNum', | ||
110 | + name: 'addCarNum', | ||
111 | + component: () => import("@/views//mySelf/myCars/addCarNum.vue"), | ||
112 | + meta: {title: "添加车牌"} | ||
113 | + }, | ||
114 | + { | ||
115 | + path: '/rzCarNumber', | ||
116 | + name: 'rzCarNumber', | ||
117 | + component: () => import("@/views//mySelf/myCars/rzCarNumber.vue"), | ||
118 | + meta: {title: "认证车牌"} | ||
119 | + }, | ||
120 | + | ||
121 | + | ||
122 | + { | ||
123 | + path: '/cardList', | ||
124 | + name: 'cardList', | ||
125 | + component: () => import("@/views//cards/cardList.vue"), | ||
126 | + meta: {title: "会员卡列表"} | ||
127 | + }, | ||
128 | + | ||
129 | + | ||
130 | + { | ||
131 | + path: '/buyCardDetail', | ||
132 | + name: 'buyCardDetail', | ||
133 | + component: () => import("@/views//cards/buyCardDetail.vue"), | ||
134 | + meta: {title: "购买会员卡"} | ||
135 | + }, | ||
136 | + | ||
137 | + { | ||
138 | + path: '/buyVipCard', | ||
139 | + name: 'buyVipCard', | ||
140 | + component: () => import("@/views//cards/buyVipCard.vue"), | ||
141 | + meta: {title: "购买会员卡"} | ||
142 | + }, | ||
143 | + | ||
144 | + | ||
145 | + | ||
146 | + | ||
147 | + | ||
148 | + // ------------------------购买会员卡提示 | ||
149 | + { | ||
150 | + path: '/cardPoint', | ||
151 | + name: 'cardPoint', | ||
152 | + component: () => import("@/views/cards/cardPoint.vue") | ||
153 | + }, | ||
154 | + | ||
155 | + | ||
156 | + // ------------------------购买会员卡 | ||
157 | + { | ||
158 | + path: '/buyCard', | ||
159 | + name: 'buyCard', | ||
160 | + component: () => import("@/views/cards/buyCard.vue"), | ||
161 | + meta: {title: "购买会员卡"} | ||
162 | + }, | ||
114 | 163 | ||
115 | 164 | ||
116 | 165 |
src/utils/utils.js
1 | -import md5 from './md5.min.js'; | 1 | +import md5 from "./md5.min.js"; |
2 | +var myCommonSalt = function(val) { // 获取盐值 | ||
3 | + let len = parseInt(val); | ||
4 | + let $chars = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678"; | ||
5 | + let maxPos = $chars.length; | ||
6 | + var pwd = ""; | ||
7 | + for (var i = 0; i < len; i++) { | ||
8 | + pwd += $chars.charAt(Math.floor(Math.random() * maxPos)); | ||
9 | + } | ||
10 | + console.log(pwd); | ||
11 | + return pwd; | ||
12 | +}; | ||
2 | export default { | 13 | export default { |
3 | - myCommonSalt: function (val) { // 获取盐值 | ||
4 | - let len = parseInt(val); | ||
5 | - let $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; | ||
6 | - let maxPos = $chars.length; | ||
7 | - var pwd = ''; | ||
8 | - for (var i = 0; i < len; i++) { | ||
9 | - pwd += $chars.charAt(Math.floor(Math.random() * maxPos)); | 14 | + myCommonSalt, |
15 | + formatDate: function(secs, type = 0) { //type是可选参数,因为json中时间的格式是year-month-date,不能识别XX年XX月XX日 | ||
16 | + var t = new Date(secs); | ||
17 | + var year = t.getFullYear(); | ||
18 | + var month = t.getMonth() + 1; | ||
19 | + if (month < 10) { | ||
20 | + month = "0" + month; | ||
21 | + } | ||
22 | + var date = t.getDate(); | ||
23 | + if (date < 10) { | ||
24 | + date = "0" + date; | ||
25 | + } | ||
26 | + var hour = t.getHours(); | ||
27 | + if (hour < 10) { | ||
28 | + hour = "0" + hour; | ||
29 | + } | ||
30 | + var minute = t.getMinutes(); | ||
31 | + if (minute < 10) { | ||
32 | + minute = "0" + minute; | ||
33 | + } | ||
34 | + var second = t.getSeconds(); | ||
35 | + if (second < 10) { | ||
36 | + second = "0" + second; | ||
37 | + } | ||
38 | + if (type == 0) { | ||
39 | + return year + "年" + month + "月" + date + "日"; | ||
40 | + } else { | ||
41 | + return year + "-" + month + "-" + date; | ||
10 | } | 42 | } |
11 | - console.log(pwd); | ||
12 | - return pwd; | ||
13 | }, | 43 | }, |
14 | - | ||
15 | - formatDate: function(secs, type=0){ //type是可选参数,因为json中时间的格式是year-month-date,不能识别XX年XX月XX日 | ||
16 | - var t = new Date(secs) | ||
17 | - var year = t.getFullYear() | ||
18 | - var month = t.getMonth() + 1 | ||
19 | - if(month < 10){ month = '0' + month } | ||
20 | - var date = t.getDate() | ||
21 | - if(date < 10){ date = '0' + date } | ||
22 | - var hour = t.getHours() | ||
23 | - if(hour < 10){ hour = '0' + hour } | ||
24 | - var minute = t.getMinutes() | ||
25 | - if(minute < 10){ minute = '0' + minute } | ||
26 | - var second = t.getSeconds() | ||
27 | - if(second < 10){ second = '0' + second } | ||
28 | - if(type==0){ | ||
29 | - return year + '年' + month + '月' + date + '日' | ||
30 | - }else{ | ||
31 | - return year + '-'+month+'-'+date | ||
32 | - }}, | ||
33 | - | ||
34 | - timestampToTime: function (timestamp) { | 44 | + timestampToTime: function(timestamp) { |
35 | var d = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000 | 45 | var d = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000 |
36 | - var youWant=d.getFullYear() + '-' + this.completedString(d.getMonth() + 1) + '-' + this.completedString(d.getDate()) ; | ||
37 | - return youWant | 46 | + var youWant = d.getFullYear() + "-" + this.completedString(d.getMonth() + 1) + "-" + this.completedString(d.getDate()); |
47 | + return youWant; | ||
38 | }, | 48 | }, |
39 | - completedString:function(s) { | ||
40 | - return s < 10 ? '0' + s : s | 49 | + completedString: function(s) { |
50 | + return s < 10 ? "0" + s : s; | ||
41 | }, | 51 | }, |
42 | - | ||
43 | - | ||
44 | - | ||
45 | - dateFormat: function (msd) { // 时间转换 | ||
46 | - var time = msd | ||
47 | - | 52 | + dateFormat: function(msd) { // 时间转换 |
53 | + var time = msd; | ||
48 | if (null != time && "" != time) { | 54 | if (null != time && "" != time) { |
49 | - | ||
50 | if (time > 60 && time < 60 * 60) { | 55 | if (time > 60 && time < 60 * 60) { |
51 | - | ||
52 | time = parseInt(time / 60.0) + "分钟" + parseInt((parseFloat(time / 60.0) - | 56 | time = parseInt(time / 60.0) + "分钟" + parseInt((parseFloat(time / 60.0) - |
53 | - | ||
54 | parseInt(time / 60.0)) * 60) + "秒"; | 57 | parseInt(time / 60.0)) * 60) + "秒"; |
55 | - | ||
56 | } | 58 | } |
57 | - | ||
58 | else if (time >= 60 * 60 && time < 60 * 60 * 24) { | 59 | else if (time >= 60 * 60 && time < 60 * 60 * 24) { |
59 | - | ||
60 | time = parseInt(time / 3600.0) + "小时" + parseInt((parseFloat(time / 3600.0) - | 60 | time = parseInt(time / 3600.0) + "小时" + parseInt((parseFloat(time / 3600.0) - |
61 | - | ||
62 | parseInt(time / 3600.0)) * 60) + "分钟" + | 61 | parseInt(time / 3600.0)) * 60) + "分钟" + |
63 | - | ||
64 | parseInt((parseFloat((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60) - | 62 | parseInt((parseFloat((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60) - |
65 | - | ||
66 | parseInt((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60)) * 60) + "秒"; | 63 | parseInt((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60)) * 60) + "秒"; |
67 | - | ||
68 | } else if (time >= 60 * 60 * 24) { | 64 | } else if (time >= 60 * 60 * 24) { |
69 | - | ||
70 | time = parseInt(time / 3600.0 / 24) + "天" + parseInt((parseFloat(time / 3600.0 / 24) - | 65 | time = parseInt(time / 3600.0 / 24) + "天" + parseInt((parseFloat(time / 3600.0 / 24) - |
71 | - | ||
72 | parseInt(time / 3600.0 / 24)) * 24) + "小时" + parseInt((parseFloat(time / 3600.0) - | 66 | parseInt(time / 3600.0 / 24)) * 24) + "小时" + parseInt((parseFloat(time / 3600.0) - |
73 | - | ||
74 | parseInt(time / 3600.0)) * 60) + "分钟" + | 67 | parseInt(time / 3600.0)) * 60) + "分钟" + |
75 | - | ||
76 | parseInt((parseFloat((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60) - | 68 | parseInt((parseFloat((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60) - |
77 | - | ||
78 | parseInt((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60)) * 60) + "秒"; | 69 | parseInt((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60)) * 60) + "秒"; |
79 | - | ||
80 | } | 70 | } |
81 | - | ||
82 | else { | 71 | else { |
83 | - | ||
84 | time = parseInt(time) + "秒"; | 72 | time = parseInt(time) + "秒"; |
85 | - | ||
86 | } | 73 | } |
87 | - | ||
88 | } | 74 | } |
89 | - | ||
90 | return time; | 75 | return time; |
91 | }, | 76 | }, |
92 | - | ||
93 | - signObject: function (jsonObj){ //签名字段 | ||
94 | - let sort = [] | ||
95 | - for(let k in jsonObj){ | 77 | + // myVxAppId: 'wx1489e48e6a547023', |
78 | + signObject: function(jsonObj) { //签名字段 | ||
79 | + jsonObj.sign_type = "md5"; | ||
80 | + jsonObj.app_id = "ud8yq5tv0inxupc05xfeau39jywlqoj2"; | ||
81 | + jsonObj.deviceInfo = "BC0703A4-AFB0-4B51-9089-9B7487C0CC6E"; | ||
82 | + jsonObj.salt = myCommonSalt(32); | ||
83 | + jsonObj.token = "99ecd32eed1b4ebea71bc73b0aabbb99"; | ||
84 | + let sort = []; | ||
85 | + for (let k in jsonObj) { | ||
96 | sort.push({ | 86 | sort.push({ |
97 | keyname: k, | 87 | keyname: k, |
98 | value: jsonObj[k] | 88 | value: jsonObj[k] |
99 | - }) | 89 | + }); |
100 | } | 90 | } |
101 | - return this.myGetSign(sort) | 91 | + return this.myGetSign(sort); |
102 | }, | 92 | }, |
103 | - | ||
104 | - clientBrowser: function () { // 判断客户端 | 93 | + clientBrowser: function() { // 判断客户端 |
105 | if (/MicroMessenger/.test(window.navigator.userAgent)) { | 94 | if (/MicroMessenger/.test(window.navigator.userAgent)) { |
106 | console.log("微信客户端"); | 95 | console.log("微信客户端"); |
107 | - return '微信' | 96 | + return "微信"; |
108 | } else if (/AlipayClient/.test(window.navigator.userAgent)) { | 97 | } else if (/AlipayClient/.test(window.navigator.userAgent)) { |
109 | console.log("支付宝客户端"); | 98 | console.log("支付宝客户端"); |
110 | - return '支付宝' | 99 | + return "支付宝"; |
111 | } else if (/BankabciPhone/.test(window.navigator.userAgent)) { | 100 | } else if (/BankabciPhone/.test(window.navigator.userAgent)) { |
112 | console.log("农行客户端"); | 101 | console.log("农行客户端"); |
113 | - return '立即' | ||
114 | - }else if (/BankabcAndroid/.test(window.navigator.userAgent)) { | 102 | + return "立即"; |
103 | + } else if (/BankabcAndroid/.test(window.navigator.userAgent)) { | ||
115 | console.log("农行客户端"); | 104 | console.log("农行客户端"); |
116 | - return '立即' | ||
117 | - }else { | 105 | + return "立即"; |
106 | + } else { | ||
118 | console.log("其他浏览器"); | 107 | console.log("其他浏览器"); |
119 | - return '支付宝' | 108 | + return "支付宝"; |
120 | } | 109 | } |
121 | }, | 110 | }, |
122 | - | ||
123 | // 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 34 农行 | 111 | // 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 34 农行 |
124 | - clientBrowsePayType: function () { // 判断客户端 | 112 | + clientBrowsePayType: function() { // 判断客户端 |
125 | if (/MicroMessenger/.test(window.navigator.userAgent)) { | 113 | if (/MicroMessenger/.test(window.navigator.userAgent)) { |
126 | console.log("微信客户端"); | 114 | console.log("微信客户端"); |
127 | - return '4' | 115 | + return "4"; |
128 | } else if (/AlipayClient/.test(window.navigator.userAgent)) { | 116 | } else if (/AlipayClient/.test(window.navigator.userAgent)) { |
129 | console.log("支付宝客户端"); | 117 | console.log("支付宝客户端"); |
130 | - return '1' | 118 | + return "1"; |
131 | } else if (/BankabciPhone/.test(window.navigator.userAgent)) { | 119 | } else if (/BankabciPhone/.test(window.navigator.userAgent)) { |
132 | console.log("农行客户端"); | 120 | console.log("农行客户端"); |
133 | - return '34' | ||
134 | - }else if (/BankabcAndroid/.test(window.navigator.userAgent)) { | 121 | + return "34"; |
122 | + } else if (/BankabcAndroid/.test(window.navigator.userAgent)) { | ||
135 | console.log("农行客户端"); | 123 | console.log("农行客户端"); |
136 | - return '34' | ||
137 | - }else { | 124 | + return "34"; |
125 | + } else { | ||
138 | console.log("其他浏览器"); | 126 | console.log("其他浏览器"); |
139 | - return '1' | 127 | + return "1"; |
140 | } | 128 | } |
141 | }, | 129 | }, |
142 | - // 0eca8f5373ca4866aec2f8e9d9367104 老的id | ||
143 | - // 14318527b13840c2a4af63fef52c2d6e 老的签名 | ||
144 | - | ||
145 | - // ud8yq5tv0inxupc05xfeau39jywlqoj2 新的id | ||
146 | - // ny1u72b6k374sg379z0kqjgfxe2ycnpw 新的签名 | ||
147 | - | ||
148 | - myVarAppid:'ud8yq5tv0inxupc05xfeau39jywlqoj2',// 公共请求Appid | ||
149 | - | ||
150 | - myDeviceInfo: 'BC0703A4-AFB0-4B51-9089-9B7487C0CC6E', // 公共请求设备信息 | ||
151 | - | ||
152 | - myVxAppId: 'wx1489e48e6a547023', | ||
153 | - // 测试环境 微信赤峰 appid wxff4cebaedbf4f886 | ||
154 | - // 微信赤峰 appid wx2af2bab90d433c86 | ||
155 | - // 黄石 appid wxa1a66cc7d263afe6 | ||
156 | - | ||
157 | - myOrgId: '10120', // 归属地 赤峰id 10003 黄石 10079 | ||
158 | - | ||
159 | - myGetSign: function (objb) { // 获取签名 | ||
160 | - var compare = function (obj1, obj2) { | 130 | + myVarAppid: "ud8yq5tv0inxupc05xfeau39jywlqoj2",// 公共请求Appid |
131 | + myDeviceInfo: "BC0703A4-AFB0-4B51-9089-9B7487C0CC6E", // 公共请求设备信息 | ||
132 | + myVxAppId: "wx1489e48e6a547023", | ||
133 | + openId: "oWw3o5rY_bFsiT_nFd2CEQWGZfhs", | ||
134 | + myOrgId: "10120", // 归属地 赤峰id 10003 黄石 10079 | ||
135 | + myGetSign: function(objb) { // 获取签名 | ||
136 | + var compare = function(obj1, obj2) { | ||
161 | var val1 = obj1.keyname; | 137 | var val1 = obj1.keyname; |
162 | var val2 = obj2.keyname; | 138 | var val2 = obj2.keyname; |
163 | if (val1 < val2) { | 139 | if (val1 < val2) { |
@@ -167,19 +143,18 @@ export default { | @@ -167,19 +143,18 @@ export default { | ||
167 | } else { | 143 | } else { |
168 | return 0; | 144 | return 0; |
169 | } | 145 | } |
170 | - } | 146 | + }; |
171 | objb.sort(compare); | 147 | objb.sort(compare); |
172 | - var strmd5 = 'ny1u72b6k374sg379z0kqjgfxe2ycnpw'; | ||
173 | - for(var i=0;i<objb.length;i++){ | ||
174 | - if(objb[i].value != null&&objb[i].value != ''){ | ||
175 | - strmd5 += objb[i].keyname+objb[i].value; | 148 | + var strmd5 = "ny1u72b6k374sg379z0kqjgfxe2ycnpw"; |
149 | + for (var i = 0; i < objb.length; i++) { | ||
150 | + if (objb[i].value != null && objb[i].value != "") { | ||
151 | + strmd5 += objb[i].keyname + objb[i].value; | ||
176 | } | 152 | } |
177 | } | 153 | } |
178 | - strmd5 += 'ny1u72b6k374sg379z0kqjgfxe2ycnpw'; | 154 | + strmd5 += "ny1u72b6k374sg379z0kqjgfxe2ycnpw"; |
179 | // console.log('strmd5-------->'+strmd5); | 155 | // console.log('strmd5-------->'+strmd5); |
180 | strmd5 = md5(strmd5); | 156 | strmd5 = md5(strmd5); |
181 | - strmd5=strmd5.toUpperCase(); | 157 | + strmd5 = strmd5.toUpperCase(); |
182 | return strmd5; | 158 | return strmd5; |
183 | - }, | ||
184 | - | ||
185 | -} | 159 | + } |
160 | +}; |
src/views/binding/binDing.vue
@@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
8 | </mt-field> | 8 | </mt-field> |
9 | 9 | ||
10 | <div style="margin-top: 34px" class="leftRightPadding"> | 10 | <div style="margin-top: 34px" class="leftRightPadding"> |
11 | - <mt-button type="danger" size="large">绑定</mt-button> | 11 | + <van-button type="info" block>绑定</van-button> |
12 | </div> | 12 | </div> |
13 | </div> | 13 | </div> |
14 | </template> | 14 | </template> |
src/views/cards/buyCardDetail.vue
0 → 100644
1 | +<template> | ||
2 | + <section class=""> | ||
3 | + <div class="vipCardBg"> | ||
4 | + <ul class="cardTypeList"> | ||
5 | + <li>年卡</li> | ||
6 | + <li>月卡</li> | ||
7 | + <li>半年卡</li> | ||
8 | + </ul> | ||
9 | + | ||
10 | + <div class="van-ellipsis" style="padding: 20px 0 10px 20px">万达停车场plName</div> | ||
11 | + <div class="van-ellipsis" style="padding: 0 0 0 20px">万达停车场plAddress</div> | ||
12 | + </div> | ||
13 | + | ||
14 | + | ||
15 | + | ||
16 | + <van-cell-group inset style="margin-bottom: 10px;" @click="LinkBuyCard"> | ||
17 | + <van-cell > | ||
18 | + <template #title> | ||
19 | + <span style="font-size: 20px;font-weight: 600;">年卡</span> | ||
20 | + </template> | ||
21 | + </van-cell> | ||
22 | + <van-cell title="万达月卡cardName" center value="立即购买" label="单价:¥1800.00" is-link> | ||
23 | + </van-cell> | ||
24 | + </van-cell-group> | ||
25 | + | ||
26 | + <van-cell-group inset style="margin-bottom: 10px;"> | ||
27 | + <van-cell > | ||
28 | + <template #title> | ||
29 | + <span style="font-size: 20px;font-weight: 600;">年卡</span> | ||
30 | + </template> | ||
31 | + </van-cell> | ||
32 | + <van-cell title="万达月卡cardName" center value="立即购买" label="单价:¥1800.00" is-link> | ||
33 | + </van-cell> | ||
34 | + </van-cell-group> | ||
35 | + </section> | ||
36 | + | ||
37 | +</template> | ||
38 | + | ||
39 | +<script> | ||
40 | +export default { | ||
41 | + name: "buyCardDetail", | ||
42 | + | ||
43 | + methods:{ | ||
44 | + LinkBuyCard(){ | ||
45 | + this.$router.push({ | ||
46 | + name: "buyVipCard" | ||
47 | + } | ||
48 | + ); | ||
49 | + } | ||
50 | + } | ||
51 | +}; | ||
52 | +</script> | ||
53 | + | ||
54 | +<style scoped lang="less"> | ||
55 | + .vipCardBg { | ||
56 | + margin-top: 14px; | ||
57 | + margin-left: 10px; | ||
58 | + margin-right: 10px; | ||
59 | + margin-bottom: 10px; | ||
60 | + /* width: 100%; */ | ||
61 | + height: 150px; | ||
62 | + background-image: url('../../assets/images/cards/vipcardbg.png'); | ||
63 | + background-repeat: no-repeat; | ||
64 | + /* background-position: center center; */ | ||
65 | + background-size: 100% 100%; | ||
66 | + -moz-background-size: 100% 100%; | ||
67 | + font-size: 16px; | ||
68 | + color: #fff; | ||
69 | + } | ||
70 | + | ||
71 | + .cardTypeList { | ||
72 | + padding: 20px 0 10px 20px; | ||
73 | + overflow: hidden; | ||
74 | + > li { | ||
75 | + float: left; | ||
76 | + margin-right: 10px; | ||
77 | + padding: 2px 20px; | ||
78 | + border-radius: 10px; | ||
79 | + background: rgba(255, 255, 255, .3); | ||
80 | + } | ||
81 | + } | ||
82 | +</style> |
src/views/cards/buyVipCard.vue
0 → 100644
1 | +<template> | ||
2 | + <section style="width: 100%;height: 100%;background: #fff"> | ||
3 | + <van-cell-group style="border-bottom: 10px solid #fafafa"> | ||
4 | + <van-cell title="车牌号" is-link> | ||
5 | + <template> | ||
6 | + <p @click="show = true" style="color: #1989fa">{{carNum}}</p> | ||
7 | + <van-action-sheet v-model="show" :actions="actions" @select="onSelect"/> | ||
8 | + </template> | ||
9 | + </van-cell> | ||
10 | + <van-cell title="适用停车场" value="万达停车场"/> | ||
11 | + <van-cell title="卡类别" value="小型车月卡"/> | ||
12 | + <van-cell title="卡名称" value="万达月卡"/> | ||
13 | + <van-cell title="生效时间" is-link> | ||
14 | + <template> | ||
15 | + <p @click="showDate = true" style="color: #1989fa"> {{valueStart}}</p> | ||
16 | + </template> | ||
17 | + </van-cell> | ||
18 | + <van-cell title="失效时间" value="2023-10-20"/> | ||
19 | + | ||
20 | + <van-cell title="购买数量"> | ||
21 | + <template> | ||
22 | + <van-stepper v-model.number="cardNum" theme="round" button-size="22" disable-input/> | ||
23 | + </template> | ||
24 | + </van-cell> | ||
25 | + </van-cell-group> | ||
26 | + | ||
27 | + | ||
28 | + <van-popup v-model="showDate" position="bottom" :style="{ height: '30%' }"> | ||
29 | + <van-datetime-picker | ||
30 | + v-show="showDate" | ||
31 | + v-model="currentDate" | ||
32 | + type="date" | ||
33 | + title="选择生效日期" | ||
34 | + :min-date="minDate" | ||
35 | + :max-date="maxDate" | ||
36 | + @confirm="confirmDate" | ||
37 | + @cancel="cancelDate" | ||
38 | + /> | ||
39 | + </van-popup> | ||
40 | + | ||
41 | + | ||
42 | + <van-cell-group style="border-bottom: 10px solid #fafafa"> | ||
43 | + <van-cell title="单价"> | ||
44 | + <template> | ||
45 | + <p style="font-size: 16px;font-weight: 600;color: #000;">3420.00元</p> | ||
46 | + </template> | ||
47 | + </van-cell> | ||
48 | + | ||
49 | + | ||
50 | + <van-cell title="单价"> | ||
51 | + <template> | ||
52 | + <p style="font-size: 16px;font-weight: 600;color: #f00;">20.00元</p> | ||
53 | + </template> | ||
54 | + </van-cell> | ||
55 | + | ||
56 | + | ||
57 | + <van-cell title="支付金额"> | ||
58 | + <template> | ||
59 | + <p style="font-size: 16px;font-weight: 600;color: #000;">3420.00元</p> | ||
60 | + </template> | ||
61 | + </van-cell> | ||
62 | + | ||
63 | + </van-cell-group> | ||
64 | + | ||
65 | + | ||
66 | + <div class="leftRightPadding" style="margin-top: 34px"> | ||
67 | + <!--<mt-button type="danger" size="large"></mt-button>--> | ||
68 | + <van-button type="info" block>购买</van-button> | ||
69 | + </div> | ||
70 | + | ||
71 | + </section> | ||
72 | +</template> | ||
73 | + | ||
74 | +<script> | ||
75 | +import { Toast } from "vant"; | ||
76 | +export default { | ||
77 | + name: "buyVipCard", | ||
78 | + data() { | ||
79 | + return { | ||
80 | + carNum: "京A1231", | ||
81 | + show: false, | ||
82 | + actions: [{ name: "选项一" }, { name: "选项二" }, { name: "选项三" }], | ||
83 | + minDate: new Date(2020, 1, 1), | ||
84 | + maxDate: new Date(2025, 10, 11), | ||
85 | + currentDate: new Date(2023, 10, 11), | ||
86 | + valueStart: "2023-10-01", | ||
87 | + showDate: false, | ||
88 | + cardNum: 1 | ||
89 | + }; | ||
90 | + }, | ||
91 | + methods: { | ||
92 | + onSelect(item) { | ||
93 | + // 默认情况下点击选项时不会自动收起 | ||
94 | + // 可以通过 close-on-click-action 属性开启自动收起 | ||
95 | + this.show = false; | ||
96 | + this.carNum = item.name; | ||
97 | + Toast(item.name); | ||
98 | + }, | ||
99 | + confirmDate(val) { | ||
100 | + console.log(val); | ||
101 | + this.valueStart = val; | ||
102 | + this.showDate = false; | ||
103 | + }, | ||
104 | + cancelDate() { | ||
105 | + this.showDate = false; | ||
106 | + } | ||
107 | + } | ||
108 | +}; | ||
109 | +</script> | ||
110 | + | ||
111 | +<style scoped> | ||
112 | + .order-line-bold { | ||
113 | + background: #fafafa; | ||
114 | + height: 12px; | ||
115 | + margin-top: 12px; | ||
116 | + padding: 0px; | ||
117 | + overflow: hidden; | ||
118 | + } | ||
119 | +</style> |
src/views/cards/cardList.vue
0 → 100644
1 | +<template> | ||
2 | + | ||
3 | + <section style="padding: 0 10px"> | ||
4 | + | ||
5 | + <van-row> | ||
6 | + <van-col span="18"> | ||
7 | + <van-search | ||
8 | + v-model="value" | ||
9 | + placeholder="请输入搜索关键词" | ||
10 | + @search="onSearch" | ||
11 | + /> | ||
12 | + </van-col> | ||
13 | + <van-col span="6" style="margin-top: 5px;"> | ||
14 | + <van-button type="info" round block>续费</van-button> | ||
15 | + </van-col> | ||
16 | + </van-row> | ||
17 | + | ||
18 | + <ul> | ||
19 | + <li class="cardListWrap" @click="toBuyCardPage"> | ||
20 | + <div class="van-ellipsis" style="padding: 20px 0 10px 10px">万达停车场plName</div> | ||
21 | + <div class="van-ellipsis" style="padding: 10px 0 20px 10px">万达停车场plAddress</div> | ||
22 | + </li> | ||
23 | + <li class="cardListWrap"> | ||
24 | + <div class="van-ellipsis" style="padding: 20px 0 10px 10px">万达停车场plName</div> | ||
25 | + <div class="van-ellipsis" style="padding: 10px 0 20px 10px">万达停车场plAddress</div> | ||
26 | + </li> | ||
27 | + </ul> | ||
28 | + | ||
29 | + | ||
30 | + <section style="text-align: center;padding-top: 20px"> | ||
31 | + <van-image :src="require('../../assets/images/cards/novipcard.png')" /> | ||
32 | + <p>为找到会员卡</p> | ||
33 | + </section> | ||
34 | + | ||
35 | + | ||
36 | + </section> | ||
37 | + | ||
38 | +</template> | ||
39 | + | ||
40 | +<script> | ||
41 | +import { Toast } from 'vant'; | ||
42 | +export default { | ||
43 | + name: "cardList", | ||
44 | + data() { | ||
45 | + return { | ||
46 | + value: '', | ||
47 | + }; | ||
48 | + }, | ||
49 | + methods: { | ||
50 | + onSearch(val) { | ||
51 | + Toast(val); | ||
52 | + }, | ||
53 | + onCancel() { | ||
54 | + Toast('取消'); | ||
55 | + }, | ||
56 | + toBuyCardPage(){ | ||
57 | + this.$router.push({ | ||
58 | + name: "buyCardDetail" | ||
59 | + } | ||
60 | + ); | ||
61 | + } | ||
62 | + }, | ||
63 | +}; | ||
64 | +</script> | ||
65 | + | ||
66 | +<style scoped> | ||
67 | + .cardListWrap{ | ||
68 | + margin-top: 15px; | ||
69 | + margin-left: 0px; | ||
70 | + margin-right: 0px; | ||
71 | + width: 100%; | ||
72 | + height: 106px; | ||
73 | + background: url("../../assets/images/cards/vipcardbg1.png") no-repeat; | ||
74 | + background-size: 100% 100%; | ||
75 | + font-size: 16px; | ||
76 | + } | ||
77 | + | ||
78 | +</style> |
src/views/mySelf/feedback/suggestionBack.vue
@@ -5,44 +5,80 @@ | @@ -5,44 +5,80 @@ | ||
5 | <li | 5 | <li |
6 | @click="chooseHandle(index)" | 6 | @click="chooseHandle(index)" |
7 | v-for="(i, index) in suggestionList" | 7 | v-for="(i, index) in suggestionList" |
8 | - :key="i.id" | 8 | + :key="i.code" |
9 | :class="{choosedActive: currentIndex==index}" | 9 | :class="{choosedActive: currentIndex==index}" |
10 | > | 10 | > |
11 | - {{i.text}} | 11 | + {{i.name}} |
12 | </li> | 12 | </li> |
13 | </ul> | 13 | </ul> |
14 | 14 | ||
15 | - <div class="clear"></div> | ||
16 | 15 | ||
17 | - <mt-field label="" placeholder="请详细描述反馈问题,或提出改进建议。(300字以内)" type="textarea" rows="4" v-model="introduction" :attr="{ maxlength: 2 }"></mt-field> | 16 | + |
17 | + <!--<mt-field label="" placeholder="请详细描述反馈问题,或提出改进建议。(300字以内)" type="textarea" rows="4" v-model="introduction" ></mt-field>--> | ||
18 | + | ||
19 | + <van-field | ||
20 | + v-model="introduction" | ||
21 | + rows="2" | ||
22 | + autosize | ||
23 | + type="textarea" | ||
24 | + maxlength="300" | ||
25 | + placeholder="请详细描述反馈问题,或提出改进建议。(300字以内)" | ||
26 | + show-word-limit | ||
27 | + /> | ||
18 | 28 | ||
19 | <div style="margin-top: 34px"> | 29 | <div style="margin-top: 34px"> |
20 | - <mt-button type="danger" size="large">提交</mt-button> | 30 | + <van-button type="info" block @click="submitCon">提交</van-button> |
21 | </div> | 31 | </div> |
22 | </div> | 32 | </div> |
23 | </template> | 33 | </template> |
24 | 34 | ||
25 | <script> | 35 | <script> |
36 | + | ||
37 | +import { saveFeedbackAndSuggest, getFeedbackType } from '@/api/getUserIfo' | ||
26 | export default { | 38 | export default { |
27 | name: 'suggestionBack', | 39 | name: 'suggestionBack', |
28 | data() { | 40 | data() { |
29 | return { | 41 | return { |
30 | - suggestionList: [ | ||
31 | - { id: 1, text: 'APP问题' }, | ||
32 | - { id: 2, text: '支付问题' }, | ||
33 | - { id: 3, text: '停车场问题' }, | ||
34 | - { id: 4, text: '服务投诉' }, | ||
35 | - { id: 5, text: '改进建议' }, | ||
36 | - { id: 6, text: '其他问题' }, | ||
37 | - ], | 42 | + suggestionList: [], |
38 | currentIndex: 0, | 43 | currentIndex: 0, |
39 | introduction: '', | 44 | introduction: '', |
40 | } | 45 | } |
41 | }, | 46 | }, |
47 | + created(){ | ||
48 | + this.getFeedbackType() | ||
49 | + }, | ||
42 | methods: { | 50 | methods: { |
51 | + getFeedbackType(){ | ||
52 | + let jsondata = {} | ||
53 | + jsondata.sign = this.$utils.signObject(jsondata) | ||
54 | + getFeedbackType(jsondata).then(response => { | ||
55 | + console.log(response) | ||
56 | + this.suggestionList = response.data | ||
57 | + }) | ||
58 | + }, | ||
43 | chooseHandle: function (i) { | 59 | chooseHandle: function (i) { |
44 | console.log(i) | 60 | console.log(i) |
45 | this.currentIndex = i | 61 | this.currentIndex = i |
62 | + }, | ||
63 | + submitCon(){ | ||
64 | + if(this.introduction){ | ||
65 | + let jsondata = { | ||
66 | + feedbackCode:this.suggestionList[this.currentIndex].code, | ||
67 | + suggestDesc:this.introduction, | ||
68 | + // token:'99ecd32eed1b4ebea71bc73b0aabbb99' | ||
69 | + } | ||
70 | + jsondata.sign = this.$utils.signObject(jsondata) | ||
71 | + saveFeedbackAndSuggest(jsondata).then(response => { | ||
72 | + console.log(response) | ||
73 | + if(response.code==0){ | ||
74 | + this.$toast("提交成功"); | ||
75 | + } | ||
76 | + // this.phoneNum = response.data.phoneNum | ||
77 | + }) | ||
78 | + | ||
79 | + }else{ | ||
80 | + this.$toast("请填写建议反馈内容"); | ||
81 | + } | ||
46 | } | 82 | } |
47 | } | 83 | } |
48 | } | 84 | } |
@@ -55,24 +91,27 @@ export default { | @@ -55,24 +91,27 @@ export default { | ||
55 | } | 91 | } |
56 | 92 | ||
57 | .suggestionList { | 93 | .suggestionList { |
94 | + overflow: hidden; | ||
58 | 95 | ||
59 | li { | 96 | li { |
60 | float: left; | 97 | float: left; |
61 | width: calc((100% - 19px) / 2); | 98 | width: calc((100% - 19px) / 2); |
62 | - height: 33px; | ||
63 | - line-height: 33px; | 99 | + height: 45px; |
100 | + line-height: 45px; | ||
64 | margin-bottom: 16px; | 101 | margin-bottom: 16px; |
65 | - border: 1px solid #B18181; | 102 | + border: 1px solid #2282C5; |
66 | text-align: center; | 103 | text-align: center; |
67 | - font-size: 13px; | 104 | + font-size: 16px; |
105 | + border-radius: 4px; | ||
106 | + color: #2282C5; | ||
68 | &:nth-child(odd) { | 107 | &:nth-child(odd) { |
69 | margin-right: 19px; | 108 | margin-right: 19px; |
70 | } | 109 | } |
71 | } | 110 | } |
72 | .choosedActive { | 111 | .choosedActive { |
73 | - background: #F75959; | ||
74 | - border: 1px solid #A51E1E; | 112 | + background: linear-gradient(180deg, #2282C5 0%, #4B8EF1 58%, #63BEFD 100%); |
75 | color: #fff; | 113 | color: #fff; |
114 | + border: 0; | ||
76 | } | 115 | } |
77 | 116 | ||
78 | } | 117 | } |
src/views/mySelf/myCars/addCarNum.vue
0 → 100644
1 | +<template> | ||
2 | + <div style="padding: 20px 15px;"> | ||
3 | + <h3>请输入车牌号码</h3> | ||
4 | + <div class="demo-two-box"> | ||
5 | + <vnp-input v-model="value"></vnp-input> | ||
6 | + </div> | ||
7 | + | ||
8 | + <van-button type="info" round block style="margin-top: 40px;" @click="toMyCarsPage">立即添加</van-button> | ||
9 | + </div> | ||
10 | +</template> | ||
11 | + | ||
12 | +<script> | ||
13 | +import VnpInput from "@/components/vant-number-plate/vnp-input"; | ||
14 | +export default { | ||
15 | + name: "addCarNum", | ||
16 | + components: { | ||
17 | + "vnp-input": VnpInput | ||
18 | + }, | ||
19 | + data() { | ||
20 | + return { | ||
21 | + show: false, | ||
22 | + value: "冀" | ||
23 | + }; | ||
24 | + }, | ||
25 | + methods: { | ||
26 | + toMyCarsPage() { | ||
27 | + console.log(this.value) | ||
28 | + console.log(this.value.length) | ||
29 | + this.$router.push({ | ||
30 | + name: "myCars" | ||
31 | + } | ||
32 | + ); | ||
33 | + } | ||
34 | + } | ||
35 | +}; | ||
36 | +</script> | ||
37 | + | ||
38 | +<style lang="less" scoped> | ||
39 | + h3 { | ||
40 | + text-align: center; | ||
41 | + padding-bottom: 20px; | ||
42 | + } | ||
43 | +</style> |
src/views/mySelf/myCars/myCars.vue
0 → 100644
1 | +<template> | ||
2 | + <section style="padding: 20px 15px;"> | ||
3 | + <p style="color: #343434;font-size: 30px;font-weight: 600;padding-bottom: 15px;">我的车辆</p> | ||
4 | + <div> | ||
5 | + <van-row> | ||
6 | + <van-col span="3" style="text-align: center"> | ||
7 | + <van-image style="margin-top: 18px;" :src="require('../../../assets/images/myCars/carNumBg.png')"/> | ||
8 | + </van-col> | ||
9 | + <van-col span="14" style="font-size: 16px;"> | ||
10 | + 京A1231231 | ||
11 | + </van-col> | ||
12 | + <van-col span="5"> | ||
13 | + <!--<p style="color: #FF555D">立即认证</p>--> | ||
14 | + <p style="color: #1aad19">通过认证</p> | ||
15 | + </van-col> | ||
16 | + <van-col span="2"> | ||
17 | + <p> | ||
18 | + <van-icon name="cross" color="#D1D1D6"/> | ||
19 | + </p> | ||
20 | + </van-col> | ||
21 | + </van-row> | ||
22 | + | ||
23 | + <van-row> | ||
24 | + <van-col span="3" style="text-align: center"> | ||
25 | + <van-image style="margin-top: 18px;" :src="require('../../../assets/images/myCars/carNumBg.png')"/> | ||
26 | + </van-col> | ||
27 | + <van-col span="14" style="font-size: 16px;"> | ||
28 | + 京A1231231 | ||
29 | + </van-col> | ||
30 | + <van-col span="5"> | ||
31 | + <p style="color: #FF555D" @click="toRzcarNumber">立即认证</p> | ||
32 | + </van-col> | ||
33 | + <van-col span="2"> | ||
34 | + <p> | ||
35 | + <van-icon name="cross" color="#D1D1D6"/> | ||
36 | + </p> | ||
37 | + </van-col> | ||
38 | + </van-row> | ||
39 | + | ||
40 | + <van-row> | ||
41 | + <van-col span="3" style="text-align: center"> | ||
42 | + <van-image style="margin-top: 18px;" :src="require('../../../assets/images/myCars/carNumBg.png')"/> | ||
43 | + </van-col> | ||
44 | + <van-col span="14" style="font-size: 16px;"> | ||
45 | + 京A1231231 | ||
46 | + </van-col> | ||
47 | + <van-col span="5"> | ||
48 | + <p style="color: #2282C5">审核中</p> | ||
49 | + </van-col> | ||
50 | + <van-col span="2"> | ||
51 | + <p> | ||
52 | + <van-icon name="cross" color="#D1D1D6"/> | ||
53 | + </p> | ||
54 | + </van-col> | ||
55 | + </van-row> | ||
56 | + | ||
57 | + <section class="addBtnBg" @click="toAddCarPage"> | ||
58 | + <van-image style="margin-top: 10px" :src="require('../../../assets/images/myCars/addBtn.png')"/> | ||
59 | + 添加车辆 | ||
60 | + </section> | ||
61 | + | ||
62 | + | ||
63 | + <section style="margin-top: 20px;"> | ||
64 | + 宣化停车友情提示: | ||
65 | + </section> | ||
66 | + | ||
67 | + <section> | ||
68 | + 1、每个车牌同一时间只能被一个用户绑定,如需被其他账户绑定,需先解绑; | ||
69 | + </section> | ||
70 | + | ||
71 | + <section> | ||
72 | + 2、车牌号非本人绑定时,可以拔打客服电话反馈进行解绑; | ||
73 | + </section> | ||
74 | + | ||
75 | + <section> | ||
76 | + 3、车牌绑定后可以提交行驶证进行真实性验证,48小时内反馈审核结果;如自行解绑车牌后,再次重新绑定需重新审核认证; | ||
77 | + </section> | ||
78 | + | ||
79 | + <section> | ||
80 | + 4、未认证的车牌只支持支付当前停车费和历史欠费记录; | ||
81 | + </section> | ||
82 | + | ||
83 | + <section> | ||
84 | + 5、认证的车牌支持查看历史停车记录; | ||
85 | + </section> | ||
86 | + | ||
87 | + <section> | ||
88 | + 6、一个账号最多允许绑定三个车牌号,该账号可为三辆车购买会员卡(购买会员卡仅限一车牌绑定使用)。 | ||
89 | + </section> | ||
90 | + | ||
91 | + | ||
92 | + </div> | ||
93 | + | ||
94 | + </section> | ||
95 | + | ||
96 | +</template> | ||
97 | + | ||
98 | +<script> | ||
99 | +export default { | ||
100 | + name: "myCars", | ||
101 | + methods: { | ||
102 | + toAddCarPage() { | ||
103 | + this.$router.push({ | ||
104 | + name: "addCarNum" | ||
105 | + } | ||
106 | + ); | ||
107 | + }, | ||
108 | + toRzcarNumber(){ | ||
109 | + this.$router.push({ | ||
110 | + name: "rzCarNumber" | ||
111 | + } | ||
112 | + ); | ||
113 | + } | ||
114 | + } | ||
115 | +}; | ||
116 | +</script> | ||
117 | + | ||
118 | +<style scoped> | ||
119 | + .van-row { | ||
120 | + margin-bottom: 20px; | ||
121 | + height: 60px; | ||
122 | + line-height: 60px; | ||
123 | + background: #FFFFFF; | ||
124 | + box-shadow: 0px 2px 6px 0px rgba(114, 124, 143, 0.2); | ||
125 | + border-radius: 8px; | ||
126 | + } | ||
127 | + | ||
128 | + .addBtnBg { | ||
129 | + margin-top: 40px; | ||
130 | + height: 45px; | ||
131 | + line-height: 45px; | ||
132 | + background: url("../../../assets/images/myCars/addBtnBg.png") no-repeat; | ||
133 | + background-size: 100% 100%; | ||
134 | + color: #2282C5; | ||
135 | + font-size: 14px; | ||
136 | + font-weight: 600; | ||
137 | + text-align: center; | ||
138 | + } | ||
139 | +</style> |
src/views/mySelf/myCars/rzCarNumber.vue
0 → 100644
1 | +<template> | ||
2 | + <div style="background: #fff;width: 100%;height: 100%"> | ||
3 | + <h3 style="padding: 10px 10px;border-bottom: 5px solid #f5f5f5"> | ||
4 | + 车牌号码: | ||
5 | + <b style="color:#2282C5">京A12321</b> | ||
6 | + </h3> | ||
7 | + | ||
8 | + <div style="padding: 10px 10px"> | ||
9 | + | ||
10 | + <van-uploader style="width: 100%" :after-read="afterRead" v-model="fileList" :max-count="1" preview-size="200"> | ||
11 | + | ||
12 | + <!--<!–<div class="uploadBg"></div>–>--> | ||
13 | + <!--<van-image style="width: 100%;height: 200px;"--> | ||
14 | + <!--:src="require('../../../assets/images/myCars/fornt.png')" />--> | ||
15 | + </van-uploader> | ||
16 | + | ||
17 | + <!--<div class="uploadBg">--> | ||
18 | + <!----> | ||
19 | + <!--</div>--> | ||
20 | + | ||
21 | + | ||
22 | + <h4> | ||
23 | + 照片须符合如下条件: | ||
24 | + </h4> | ||
25 | + <h6> | ||
26 | + 1、行驶证正面 | ||
27 | + </h6> | ||
28 | + <h6> | ||
29 | + 2、信息清晰显示真实有效 | ||
30 | + </h6> | ||
31 | + | ||
32 | + <van-button type="info" round block style="margin-top: 40px;" @click="toMyCarsPage">立即验证</van-button> | ||
33 | + | ||
34 | + | ||
35 | + | ||
36 | + </div> | ||
37 | + | ||
38 | + | ||
39 | + | ||
40 | + | ||
41 | + </div> | ||
42 | + | ||
43 | +</template> | ||
44 | + | ||
45 | +<script> | ||
46 | +export default { | ||
47 | + name: "rzCarNumber", | ||
48 | + data() { | ||
49 | + return { | ||
50 | + fileList: [], | ||
51 | + }; | ||
52 | + }, | ||
53 | + methods:{ | ||
54 | + afterRead(file) { | ||
55 | + // 此时可以自行将文件上传至服务器 | ||
56 | + console.log(file); | ||
57 | + }, | ||
58 | + toMyCarsPage() { | ||
59 | + console.log(this.fileList) | ||
60 | + console.log(this.fileList.length) | ||
61 | + this.$router.push({ | ||
62 | + name: "myCars" | ||
63 | + } | ||
64 | + ); | ||
65 | + } | ||
66 | + } | ||
67 | +}; | ||
68 | +</script> | ||
69 | + | ||
70 | +<style scoped> | ||
71 | +.uploadBg{ | ||
72 | + width: 100%; | ||
73 | + height: 200px; | ||
74 | + background:#eee url("../../../assets/images/myCars/fornt.png") no-repeat; | ||
75 | + background-size: 100% 100%; | ||
76 | + | ||
77 | +} | ||
78 | +</style> |
src/views/mySelf/selfNav.vue
@@ -4,32 +4,112 @@ | @@ -4,32 +4,112 @@ | ||
4 | <div class="person-ifo"> | 4 | <div class="person-ifo"> |
5 | <div class="person-pic"></div> | 5 | <div class="person-pic"></div> |
6 | <ul class="person-con"> | 6 | <ul class="person-con"> |
7 | - <li>15911111111</li> | ||
8 | - <li>账户余额: <span>¥100.00</span></li> | ||
9 | - <li>我的卡券:<span>20张</span></li> | 7 | + <li></li> |
8 | + <li style="padding-top: 20px;font-size: 20px;">{{phoneNum}}</li> | ||
9 | + <!--<li>账户余额: <span>¥100.00</span></li>--> | ||
10 | + <!--<li>我的卡券:<span>20张</span></li>--> | ||
10 | </ul> | 11 | </ul> |
11 | </div> | 12 | </div> |
12 | </div> | 13 | </div> |
13 | 14 | ||
14 | - <mt-cell title="会员卡" is-link :to="{ name: 'Toast' }"></mt-cell> | 15 | + <!--<mt-cell title="会员卡" is-link :to="{ name: 'cardList' }"></mt-cell>--> |
15 | 16 | ||
16 | - <mt-cell title="车辆管理" is-link :to="{ name: 'Toast' }"></mt-cell> | 17 | + <!--<mt-cell title="车辆管理" is-link :to="{ name: 'myCars' }"></mt-cell>--> |
17 | 18 | ||
18 | - <mt-cell title="停车记录" is-link :to="{ name: 'parkNotes' }"></mt-cell> | 19 | + <!--<mt-cell title="车辆管理" is-link :to="{ name: 'parkNotes' }"></mt-cell>--> |
19 | 20 | ||
20 | - <mt-cell title="建议反馈" is-link :to="{ name: 'suggestionBack' }"></mt-cell> | 21 | + <!--<mt-cell title="建议反馈" is-link :to="{ name: 'suggestionBack' }"></mt-cell>--> |
21 | 22 | ||
22 | - <div class="leftRightPadding" style="margin-top: 34px"> | ||
23 | - <mt-button type="danger" size="large">退出账户</mt-button> | 23 | + <van-cell-group> |
24 | + <van-cell v-for="i in navList" :key="i.title" :title="i.title" size="large" is-link @click="toNextPage(i.path)"/> | ||
25 | + </van-cell-group> | ||
26 | + | ||
27 | + | ||
28 | + <div class="leftRightPadding" style="margin-top: 34px" v-if="openId"> | ||
29 | + <!--<mt-button type="danger" size="large"></mt-button>--> | ||
30 | + <van-button type="info" block>退出账户</van-button> | ||
31 | + </div> | ||
32 | + <div class="leftRightPadding" style="margin-top: 34px" v-else> | ||
33 | + <van-button type="info" block @click="toBindingPage">登录绑定</van-button> | ||
24 | </div> | 34 | </div> |
25 | 35 | ||
26 | </div> | 36 | </div> |
27 | </template> | 37 | </template> |
28 | 38 | ||
29 | <script> | 39 | <script> |
40 | + | ||
41 | +import { getTokenByOpenId } from '@/api/getUserIfo' | ||
30 | export default { | 42 | export default { |
31 | - name: 'selfNav' | ||
32 | -} | 43 | + name: "selfNav", |
44 | + data() { | ||
45 | + return { | ||
46 | + navList: [ | ||
47 | + { | ||
48 | + title: "会员卡", path: "cardList" | ||
49 | + }, | ||
50 | + { | ||
51 | + title: "车辆管理", path: "myCars" | ||
52 | + }, | ||
53 | + { | ||
54 | + title: "停车记录", path: "parkNotes" | ||
55 | + }, | ||
56 | + { | ||
57 | + title: "建议反馈", path: "suggestionBack" | ||
58 | + } | ||
59 | + ], | ||
60 | + openId: "", | ||
61 | + phoneNum:'',//手机号 | ||
62 | + }; | ||
63 | + }, | ||
64 | + mounted() { | ||
65 | + this.openId = this.$utils.openId; | ||
66 | + if(this.openId){ | ||
67 | + this.getTokenAndphoneNum() | ||
68 | + } | ||
69 | + console.log(this.openId); | ||
70 | + }, | ||
71 | + created() { | ||
72 | + // this.carNumber = this.$route.query.carNumber // 获取车牌号 | ||
73 | + // this.carColor = this.$route.query.carNumberColor // 获取颜色 0:蓝牌;1:黄牌;2:白牌;3:黑牌;4:绿色 | ||
74 | + // this.currentTabActive = this.$route.query.parkFlag ? this.$route.query.parkFlag : 0 // 0在停 1历史 | ||
75 | + // console.log(this.carNumber) | ||
76 | + // this.parkRecordList(this.carNumber) | ||
77 | + }, | ||
78 | + methods: { | ||
79 | + toNextPage(path) { | ||
80 | + if (this.openId) { | ||
81 | + this.$router.push({ | ||
82 | + name: path | ||
83 | + } | ||
84 | + ); | ||
85 | + } else { | ||
86 | + this.$toast("请先登录"); | ||
87 | + this.$router.push({ | ||
88 | + name: "binDing" | ||
89 | + } | ||
90 | + ); | ||
91 | + } | ||
92 | + }, | ||
93 | + toBindingPage() { | ||
94 | + this.$router.push({ | ||
95 | + name: "binDing" | ||
96 | + } | ||
97 | + ); | ||
98 | + }, | ||
99 | + getTokenAndphoneNum(){ | ||
100 | + let jsondata = { | ||
101 | + openid: this.$utils.openId, | ||
102 | + } | ||
103 | + jsondata.sign = this.$utils.signObject(jsondata) | ||
104 | + console.log('停车记录传参 ' + JSON.stringify(jsondata)); | ||
105 | + getTokenByOpenId(jsondata).then(response => { | ||
106 | + console.log(response) | ||
107 | + this.phoneNum = response.data.phoneNum | ||
108 | + console.log(response.data.token) | ||
109 | + }) | ||
110 | + } | ||
111 | + } | ||
112 | +}; | ||
33 | </script> | 113 | </script> |
34 | 114 | ||
35 | <style scoped lang="scss"> | 115 | <style scoped lang="scss"> |
@@ -44,21 +124,20 @@ export default { | @@ -44,21 +124,20 @@ export default { | ||
44 | padding-top: 45px; | 124 | padding-top: 45px; |
45 | display: flex; | 125 | display: flex; |
46 | color: #ffbfbf; | 126 | color: #ffbfbf; |
47 | - .person-pic{ | 127 | + .person-pic { |
48 | width: 64px; | 128 | width: 64px; |
49 | height: 64px; | 129 | height: 64px; |
50 | margin-right: 15px; | 130 | margin-right: 15px; |
51 | background: url("../../assets/images/mySelf/photoBG.png") no-repeat; | 131 | background: url("../../assets/images/mySelf/photoBG.png") no-repeat; |
52 | } | 132 | } |
53 | } | 133 | } |
54 | - .person-con{ | ||
55 | - span{ | 134 | + |
135 | + .person-con { | ||
136 | + span { | ||
56 | font-size: 16px; | 137 | font-size: 16px; |
57 | font-weight: bold; | 138 | font-weight: bold; |
58 | } | 139 | } |
59 | } | 140 | } |
60 | 141 | ||
61 | - .mint-cell{ | ||
62 | - border-bottom: 1px solid #EFEDED; | ||
63 | - } | 142 | + |
64 | </style> | 143 | </style> |
vue.config.js
0 → 100644
1 | +const path = require('path') | ||
2 | +module.exports = { | ||
3 | + css:{ | ||
4 | + loaderOptions:{ | ||
5 | + less:{ | ||
6 | + modifyVars:{ | ||
7 | + //通过本地less文件覆盖变量 | ||
8 | + // true; @import "your-less-file-path.less"; | ||
9 | + modifyVars: { | ||
10 | + hack: `true; @import "${path.resolve(__dirname, './src/assets/css/resetVantUi.less')}";` | ||
11 | + } | ||
12 | + } | ||
13 | + } | ||
14 | + } | ||
15 | + } | ||
16 | +} | ||
17 | + | ||
18 | +} |