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 | 59 | return { |
| 60 | 60 | css: generateLoaders(), |
| 61 | 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 | 67 | sass: generateLoaders('sass', { indentedSyntax: true }), |
| 64 | 68 | scss: generateLoaders('sass').concat( |
| 65 | 69 | { | ... | ... |
package-lock.json
| ... | ... | @@ -4,6 +4,21 @@ |
| 4 | 4 | "lockfileVersion": 1, |
| 5 | 5 | "requires": true, |
| 6 | 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 | 22 | "@nodelib/fs.scandir": { |
| 8 | 23 | "version": "2.1.5", |
| 9 | 24 | "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", |
| ... | ... | @@ -41,6 +56,21 @@ |
| 41 | 56 | "integrity": "sha1-FZJUFOCtLNdlv+9YhC9+JqesyyQ=", |
| 42 | 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 | 74 | "abbrev": { |
| 45 | 75 | "version": "1.1.1", |
| 46 | 76 | "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", |
| ... | ... | @@ -1815,8 +1845,9 @@ |
| 1815 | 1845 | }, |
| 1816 | 1846 | "clone": { |
| 1817 | 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 | 1852 | "clone-deep": { |
| 1822 | 1853 | "version": "4.0.1", |
| ... | ... | @@ -2018,6 +2049,15 @@ |
| 2018 | 2049 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", |
| 2019 | 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 | 2061 | "copy-concurrently": { |
| 2022 | 2062 | "version": "1.0.5", |
| 2023 | 2063 | "resolved": "http://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz", |
| ... | ... | @@ -4821,6 +4861,13 @@ |
| 4821 | 4861 | "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", |
| 4822 | 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 | 4871 | "import-cwd": { |
| 4825 | 4872 | "version": "2.1.0", |
| 4826 | 4873 | "resolved": "https://registry.nlark.com/import-cwd/download/import-cwd-2.1.0.tgz", |
| ... | ... | @@ -5179,6 +5226,12 @@ |
| 5179 | 5226 | "resolved": "http://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz", |
| 5180 | 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 | 5235 | "is-windows": { |
| 5183 | 5236 | "version": "1.0.2", |
| 5184 | 5237 | "resolved": "http://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz", |
| ... | ... | @@ -5340,10 +5393,49 @@ |
| 5340 | 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 | 5434 | "less-loader": { |
| 5344 | 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 | 5439 | "requires": { |
| 5348 | 5440 | "clone": "^2.1.1", |
| 5349 | 5441 | "loader-utils": "^1.1.0", |
| ... | ... | @@ -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 | 6150 | "negotiator": { |
| 6018 | 6151 | "version": "0.6.2", |
| 6019 | 6152 | "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz", |
| ... | ... | @@ -6603,6 +6736,12 @@ |
| 6603 | 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 | 6745 | "parseurl": { |
| 6607 | 6746 | "version": "1.3.3", |
| 6608 | 6747 | "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz", |
| ... | ... | @@ -6697,7 +6836,8 @@ |
| 6697 | 6836 | "pify": { |
| 6698 | 6837 | "version": "3.0.0", |
| 6699 | 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 | 6842 | "pinkie": { |
| 6703 | 6843 | "version": "2.0.4", |
| ... | ... | @@ -9293,6 +9433,12 @@ |
| 9293 | 9433 | "integrity": "sha1-8shUBoALmw90yfdGW4HqrSQSUvg=", |
| 9294 | 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 | 9442 | "tty-browserify": { |
| 9297 | 9443 | "version": "0.0.0", |
| 9298 | 9444 | "resolved": "http://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz", |
| ... | ... | @@ -9684,6 +9830,25 @@ |
| 9684 | 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 | 9852 | "vary": { |
| 9688 | 9853 | "version": "1.1.2", |
| 9689 | 9854 | "resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", | ... | ... |
package.json
| ... | ... | @@ -13,11 +13,11 @@ |
| 13 | 13 | "axios": "^0.21.1", |
| 14 | 14 | "css-loader": "^3.6.0", |
| 15 | 15 | "js-base64": "^3.6.0", |
| 16 | - "less-loader": "^4.1.0", | |
| 17 | 16 | "mint-ui": "^2.2.13", |
| 18 | 17 | "moment": "^2.29.1", |
| 19 | 18 | "node-sass": "^4.14.1", |
| 20 | 19 | "sass-loader": "^7.3.1", |
| 20 | + "vant": "^2.12.54", | |
| 21 | 21 | "vue": "^2.5.2", |
| 22 | 22 | "vue-baidu-map": "^0.21.22", |
| 23 | 23 | "vue-h5-popup": "^1.0.2", |
| ... | ... | @@ -41,6 +41,8 @@ |
| 41 | 41 | "file-loader": "^1.1.4", |
| 42 | 42 | "friendly-errors-webpack-plugin": "^1.6.1", |
| 43 | 43 | "html-webpack-plugin": "^2.30.1", |
| 44 | + "less": "^4.1.3", | |
| 45 | + "less-loader": "^4.1.0", | |
| 44 | 46 | "node-notifier": "^5.1.2", |
| 45 | 47 | "optimize-css-assets-webpack-plugin": "^3.2.0", |
| 46 | 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 | 8 | |
| 9 | 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 | 33 | import 'mint-ui/lib/style.css' |
| 24 | 34 | import { MessageBox } from 'mint-ui' |
| ... | ... | @@ -32,6 +42,15 @@ import { Field } from 'mint-ui'; |
| 32 | 42 | |
| 33 | 43 | Vue.component(Field.name, Field); |
| 34 | 44 | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 35 | 54 | //全局设置的基本样式 |
| 36 | 55 | import './assets/css/base.scss' |
| 37 | 56 | |
| ... | ... | @@ -45,13 +64,21 @@ Vue.prototype.$moment = moment |
| 45 | 64 | import utils from './utils/utils' // 工具类 |
| 46 | 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 | 83 | import vueFilter from './utils/filters' // 公共filter |
| 57 | 84 | for (let key in vueFilter){ | ... | ... |
src/router/index.js
| ... | ... | @@ -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 | 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 | 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 | 54 | if (null != time && "" != time) { |
| 49 | - | |
| 50 | 55 | if (time > 60 && time < 60 * 60) { |
| 51 | - | |
| 52 | 56 | time = parseInt(time / 60.0) + "分钟" + parseInt((parseFloat(time / 60.0) - |
| 53 | - | |
| 54 | 57 | parseInt(time / 60.0)) * 60) + "秒"; |
| 55 | - | |
| 56 | 58 | } |
| 57 | - | |
| 58 | 59 | else if (time >= 60 * 60 && time < 60 * 60 * 24) { |
| 59 | - | |
| 60 | 60 | time = parseInt(time / 3600.0) + "小时" + parseInt((parseFloat(time / 3600.0) - |
| 61 | - | |
| 62 | 61 | parseInt(time / 3600.0)) * 60) + "分钟" + |
| 63 | - | |
| 64 | 62 | parseInt((parseFloat((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60) - |
| 65 | - | |
| 66 | 63 | parseInt((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60)) * 60) + "秒"; |
| 67 | - | |
| 68 | 64 | } else if (time >= 60 * 60 * 24) { |
| 69 | - | |
| 70 | 65 | time = parseInt(time / 3600.0 / 24) + "天" + parseInt((parseFloat(time / 3600.0 / 24) - |
| 71 | - | |
| 72 | 66 | parseInt(time / 3600.0 / 24)) * 24) + "小时" + parseInt((parseFloat(time / 3600.0) - |
| 73 | - | |
| 74 | 67 | parseInt(time / 3600.0)) * 60) + "分钟" + |
| 75 | - | |
| 76 | 68 | parseInt((parseFloat((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60) - |
| 77 | - | |
| 78 | 69 | parseInt((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60)) * 60) + "秒"; |
| 79 | - | |
| 80 | 70 | } |
| 81 | - | |
| 82 | 71 | else { |
| 83 | - | |
| 84 | 72 | time = parseInt(time) + "秒"; |
| 85 | - | |
| 86 | 73 | } |
| 87 | - | |
| 88 | 74 | } |
| 89 | - | |
| 90 | 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 | 86 | sort.push({ |
| 97 | 87 | keyname: k, |
| 98 | 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 | 94 | if (/MicroMessenger/.test(window.navigator.userAgent)) { |
| 106 | 95 | console.log("微信客户端"); |
| 107 | - return '微信' | |
| 96 | + return "微信"; | |
| 108 | 97 | } else if (/AlipayClient/.test(window.navigator.userAgent)) { |
| 109 | 98 | console.log("支付宝客户端"); |
| 110 | - return '支付宝' | |
| 99 | + return "支付宝"; | |
| 111 | 100 | } else if (/BankabciPhone/.test(window.navigator.userAgent)) { |
| 112 | 101 | console.log("农行客户端"); |
| 113 | - return '立即' | |
| 114 | - }else if (/BankabcAndroid/.test(window.navigator.userAgent)) { | |
| 102 | + return "立即"; | |
| 103 | + } else if (/BankabcAndroid/.test(window.navigator.userAgent)) { | |
| 115 | 104 | console.log("农行客户端"); |
| 116 | - return '立即' | |
| 117 | - }else { | |
| 105 | + return "立即"; | |
| 106 | + } else { | |
| 118 | 107 | console.log("其他浏览器"); |
| 119 | - return '支付宝' | |
| 108 | + return "支付宝"; | |
| 120 | 109 | } |
| 121 | 110 | }, |
| 122 | - | |
| 123 | 111 | // 1:支付宝 2:微信 3:银联 10:H5 4微信公众号 34 农行 |
| 124 | - clientBrowsePayType: function () { // 判断客户端 | |
| 112 | + clientBrowsePayType: function() { // 判断客户端 | |
| 125 | 113 | if (/MicroMessenger/.test(window.navigator.userAgent)) { |
| 126 | 114 | console.log("微信客户端"); |
| 127 | - return '4' | |
| 115 | + return "4"; | |
| 128 | 116 | } else if (/AlipayClient/.test(window.navigator.userAgent)) { |
| 129 | 117 | console.log("支付宝客户端"); |
| 130 | - return '1' | |
| 118 | + return "1"; | |
| 131 | 119 | } else if (/BankabciPhone/.test(window.navigator.userAgent)) { |
| 132 | 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 | 123 | console.log("农行客户端"); |
| 136 | - return '34' | |
| 137 | - }else { | |
| 124 | + return "34"; | |
| 125 | + } else { | |
| 138 | 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 | 137 | var val1 = obj1.keyname; |
| 162 | 138 | var val2 = obj2.keyname; |
| 163 | 139 | if (val1 < val2) { |
| ... | ... | @@ -167,19 +143,18 @@ export default { |
| 167 | 143 | } else { |
| 168 | 144 | return 0; |
| 169 | 145 | } |
| 170 | - } | |
| 146 | + }; | |
| 171 | 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 | 155 | // console.log('strmd5-------->'+strmd5); |
| 180 | 156 | strmd5 = md5(strmd5); |
| 181 | - strmd5=strmd5.toUpperCase(); | |
| 157 | + strmd5 = strmd5.toUpperCase(); | |
| 182 | 158 | return strmd5; |
| 183 | - }, | |
| 184 | - | |
| 185 | -} | |
| 159 | + } | |
| 160 | +}; | ... | ... |
src/views/binding/binDing.vue
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 | 5 | <li |
| 6 | 6 | @click="chooseHandle(index)" |
| 7 | 7 | v-for="(i, index) in suggestionList" |
| 8 | - :key="i.id" | |
| 8 | + :key="i.code" | |
| 9 | 9 | :class="{choosedActive: currentIndex==index}" |
| 10 | 10 | > |
| 11 | - {{i.text}} | |
| 11 | + {{i.name}} | |
| 12 | 12 | </li> |
| 13 | 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 | 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 | 31 | </div> |
| 22 | 32 | </div> |
| 23 | 33 | </template> |
| 24 | 34 | |
| 25 | 35 | <script> |
| 36 | + | |
| 37 | +import { saveFeedbackAndSuggest, getFeedbackType } from '@/api/getUserIfo' | |
| 26 | 38 | export default { |
| 27 | 39 | name: 'suggestionBack', |
| 28 | 40 | data() { |
| 29 | 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 | 43 | currentIndex: 0, |
| 39 | 44 | introduction: '', |
| 40 | 45 | } |
| 41 | 46 | }, |
| 47 | + created(){ | |
| 48 | + this.getFeedbackType() | |
| 49 | + }, | |
| 42 | 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 | 59 | chooseHandle: function (i) { |
| 44 | 60 | console.log(i) |
| 45 | 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 | 91 | } |
| 56 | 92 | |
| 57 | 93 | .suggestionList { |
| 94 | + overflow: hidden; | |
| 58 | 95 | |
| 59 | 96 | li { |
| 60 | 97 | float: left; |
| 61 | 98 | width: calc((100% - 19px) / 2); |
| 62 | - height: 33px; | |
| 63 | - line-height: 33px; | |
| 99 | + height: 45px; | |
| 100 | + line-height: 45px; | |
| 64 | 101 | margin-bottom: 16px; |
| 65 | - border: 1px solid #B18181; | |
| 102 | + border: 1px solid #2282C5; | |
| 66 | 103 | text-align: center; |
| 67 | - font-size: 13px; | |
| 104 | + font-size: 16px; | |
| 105 | + border-radius: 4px; | |
| 106 | + color: #2282C5; | |
| 68 | 107 | &:nth-child(odd) { |
| 69 | 108 | margin-right: 19px; |
| 70 | 109 | } |
| 71 | 110 | } |
| 72 | 111 | .choosedActive { |
| 73 | - background: #F75959; | |
| 74 | - border: 1px solid #A51E1E; | |
| 112 | + background: linear-gradient(180deg, #2282C5 0%, #4B8EF1 58%, #63BEFD 100%); | |
| 75 | 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 | 4 | <div class="person-ifo"> |
| 5 | 5 | <div class="person-pic"></div> |
| 6 | 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 | 11 | </ul> |
| 11 | 12 | </div> |
| 12 | 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 | 34 | </div> |
| 25 | 35 | |
| 26 | 36 | </div> |
| 27 | 37 | </template> |
| 28 | 38 | |
| 29 | 39 | <script> |
| 40 | + | |
| 41 | +import { getTokenByOpenId } from '@/api/getUserIfo' | |
| 30 | 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 | 113 | </script> |
| 34 | 114 | |
| 35 | 115 | <style scoped lang="scss"> |
| ... | ... | @@ -44,21 +124,20 @@ export default { |
| 44 | 124 | padding-top: 45px; |
| 45 | 125 | display: flex; |
| 46 | 126 | color: #ffbfbf; |
| 47 | - .person-pic{ | |
| 127 | + .person-pic { | |
| 48 | 128 | width: 64px; |
| 49 | 129 | height: 64px; |
| 50 | 130 | margin-right: 15px; |
| 51 | 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 | 137 | font-size: 16px; |
| 57 | 138 | font-weight: bold; |
| 58 | 139 | } |
| 59 | 140 | } |
| 60 | 141 | |
| 61 | - .mint-cell{ | |
| 62 | - border-bottom: 1px solid #EFEDED; | |
| 63 | - } | |
| 142 | + | |
| 64 | 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 | +} | ... | ... |