备份
Showing
46 changed files
with
2239 additions
and
133 deletions
... | @@ -1942,6 +1942,13 @@ | ... | @@ -1942,6 +1942,13 @@ |
1942 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", | 1942 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", |
1943 | "dev": true | 1943 | "dev": true |
1944 | }, | 1944 | }, |
1945 | "asap": { | ||
1946 | "version": "2.0.6", | ||
1947 | "resolved": "https://registry.npm.taobao.org/asap/download/asap-2.0.6.tgz", | ||
1948 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", | ||
1949 | "dev": true, | ||
1950 | "optional": true | ||
1951 | }, | ||
1945 | "asn1": { | 1952 | "asn1": { |
1946 | "version": "0.2.4", | 1953 | "version": "0.2.4", |
1947 | "resolved": "http://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", | 1954 | "resolved": "http://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", |
... | @@ -5412,7 +5419,8 @@ | ... | @@ -5412,7 +5419,8 @@ |
5412 | "ansi-regex": { | 5419 | "ansi-regex": { |
5413 | "version": "2.1.1", | 5420 | "version": "2.1.1", |
5414 | "bundled": true, | 5421 | "bundled": true, |
5415 | "dev": true | 5422 | "dev": true, |
5423 | "optional": true | ||
5416 | }, | 5424 | }, |
5417 | "aproba": { | 5425 | "aproba": { |
5418 | "version": "1.2.0", | 5426 | "version": "1.2.0", |
... | @@ -5433,12 +5441,14 @@ | ... | @@ -5433,12 +5441,14 @@ |
5433 | "balanced-match": { | 5441 | "balanced-match": { |
5434 | "version": "1.0.0", | 5442 | "version": "1.0.0", |
5435 | "bundled": true, | 5443 | "bundled": true, |
5436 | "dev": true | 5444 | "dev": true, |
5445 | "optional": true | ||
5437 | }, | 5446 | }, |
5438 | "brace-expansion": { | 5447 | "brace-expansion": { |
5439 | "version": "1.1.11", | 5448 | "version": "1.1.11", |
5440 | "bundled": true, | 5449 | "bundled": true, |
5441 | "dev": true, | 5450 | "dev": true, |
5451 | "optional": true, | ||
5442 | "requires": { | 5452 | "requires": { |
5443 | "balanced-match": "^1.0.0", | 5453 | "balanced-match": "^1.0.0", |
5444 | "concat-map": "0.0.1" | 5454 | "concat-map": "0.0.1" |
... | @@ -5453,17 +5463,20 @@ | ... | @@ -5453,17 +5463,20 @@ |
5453 | "code-point-at": { | 5463 | "code-point-at": { |
5454 | "version": "1.1.0", | 5464 | "version": "1.1.0", |
5455 | "bundled": true, | 5465 | "bundled": true, |
5456 | "dev": true | 5466 | "dev": true, |
5467 | "optional": true | ||
5457 | }, | 5468 | }, |
5458 | "concat-map": { | 5469 | "concat-map": { |
5459 | "version": "0.0.1", | 5470 | "version": "0.0.1", |
5460 | "bundled": true, | 5471 | "bundled": true, |
5461 | "dev": true | 5472 | "dev": true, |
5473 | "optional": true | ||
5462 | }, | 5474 | }, |
5463 | "console-control-strings": { | 5475 | "console-control-strings": { |
5464 | "version": "1.1.0", | 5476 | "version": "1.1.0", |
5465 | "bundled": true, | 5477 | "bundled": true, |
5466 | "dev": true | 5478 | "dev": true, |
5479 | "optional": true | ||
5467 | }, | 5480 | }, |
5468 | "core-util-is": { | 5481 | "core-util-is": { |
5469 | "version": "1.0.2", | 5482 | "version": "1.0.2", |
... | @@ -5580,7 +5593,8 @@ | ... | @@ -5580,7 +5593,8 @@ |
5580 | "inherits": { | 5593 | "inherits": { |
5581 | "version": "2.0.3", | 5594 | "version": "2.0.3", |
5582 | "bundled": true, | 5595 | "bundled": true, |
5583 | "dev": true | 5596 | "dev": true, |
5597 | "optional": true | ||
5584 | }, | 5598 | }, |
5585 | "ini": { | 5599 | "ini": { |
5586 | "version": "1.3.5", | 5600 | "version": "1.3.5", |
... | @@ -5592,6 +5606,7 @@ | ... | @@ -5592,6 +5606,7 @@ |
5592 | "version": "1.0.0", | 5606 | "version": "1.0.0", |
5593 | "bundled": true, | 5607 | "bundled": true, |
5594 | "dev": true, | 5608 | "dev": true, |
5609 | "optional": true, | ||
5595 | "requires": { | 5610 | "requires": { |
5596 | "number-is-nan": "^1.0.0" | 5611 | "number-is-nan": "^1.0.0" |
5597 | } | 5612 | } |
... | @@ -5606,6 +5621,7 @@ | ... | @@ -5606,6 +5621,7 @@ |
5606 | "version": "3.0.4", | 5621 | "version": "3.0.4", |
5607 | "bundled": true, | 5622 | "bundled": true, |
5608 | "dev": true, | 5623 | "dev": true, |
5624 | "optional": true, | ||
5609 | "requires": { | 5625 | "requires": { |
5610 | "brace-expansion": "^1.1.7" | 5626 | "brace-expansion": "^1.1.7" |
5611 | } | 5627 | } |
... | @@ -5613,12 +5629,14 @@ | ... | @@ -5613,12 +5629,14 @@ |
5613 | "minimist": { | 5629 | "minimist": { |
5614 | "version": "0.0.8", | 5630 | "version": "0.0.8", |
5615 | "bundled": true, | 5631 | "bundled": true, |
5616 | "dev": true | 5632 | "dev": true, |
5633 | "optional": true | ||
5617 | }, | 5634 | }, |
5618 | "minipass": { | 5635 | "minipass": { |
5619 | "version": "2.3.5", | 5636 | "version": "2.3.5", |
5620 | "bundled": true, | 5637 | "bundled": true, |
5621 | "dev": true, | 5638 | "dev": true, |
5639 | "optional": true, | ||
5622 | "requires": { | 5640 | "requires": { |
5623 | "safe-buffer": "^5.1.2", | 5641 | "safe-buffer": "^5.1.2", |
5624 | "yallist": "^3.0.0" | 5642 | "yallist": "^3.0.0" |
... | @@ -5637,6 +5655,7 @@ | ... | @@ -5637,6 +5655,7 @@ |
5637 | "version": "0.5.1", | 5655 | "version": "0.5.1", |
5638 | "bundled": true, | 5656 | "bundled": true, |
5639 | "dev": true, | 5657 | "dev": true, |
5658 | "optional": true, | ||
5640 | "requires": { | 5659 | "requires": { |
5641 | "minimist": "0.0.8" | 5660 | "minimist": "0.0.8" |
5642 | } | 5661 | } |
... | @@ -5717,7 +5736,8 @@ | ... | @@ -5717,7 +5736,8 @@ |
5717 | "number-is-nan": { | 5736 | "number-is-nan": { |
5718 | "version": "1.0.1", | 5737 | "version": "1.0.1", |
5719 | "bundled": true, | 5738 | "bundled": true, |
5720 | "dev": true | 5739 | "dev": true, |
5740 | "optional": true | ||
5721 | }, | 5741 | }, |
5722 | "object-assign": { | 5742 | "object-assign": { |
5723 | "version": "4.1.1", | 5743 | "version": "4.1.1", |
... | @@ -5729,6 +5749,7 @@ | ... | @@ -5729,6 +5749,7 @@ |
5729 | "version": "1.4.0", | 5749 | "version": "1.4.0", |
5730 | "bundled": true, | 5750 | "bundled": true, |
5731 | "dev": true, | 5751 | "dev": true, |
5752 | "optional": true, | ||
5732 | "requires": { | 5753 | "requires": { |
5733 | "wrappy": "1" | 5754 | "wrappy": "1" |
5734 | } | 5755 | } |
... | @@ -5814,7 +5835,8 @@ | ... | @@ -5814,7 +5835,8 @@ |
5814 | "safe-buffer": { | 5835 | "safe-buffer": { |
5815 | "version": "5.1.2", | 5836 | "version": "5.1.2", |
5816 | "bundled": true, | 5837 | "bundled": true, |
5817 | "dev": true | 5838 | "dev": true, |
5839 | "optional": true | ||
5818 | }, | 5840 | }, |
5819 | "safer-buffer": { | 5841 | "safer-buffer": { |
5820 | "version": "2.1.2", | 5842 | "version": "2.1.2", |
... | @@ -5850,6 +5872,7 @@ | ... | @@ -5850,6 +5872,7 @@ |
5850 | "version": "1.0.2", | 5872 | "version": "1.0.2", |
5851 | "bundled": true, | 5873 | "bundled": true, |
5852 | "dev": true, | 5874 | "dev": true, |
5875 | "optional": true, | ||
5853 | "requires": { | 5876 | "requires": { |
5854 | "code-point-at": "^1.0.0", | 5877 | "code-point-at": "^1.0.0", |
5855 | "is-fullwidth-code-point": "^1.0.0", | 5878 | "is-fullwidth-code-point": "^1.0.0", |
... | @@ -5869,6 +5892,7 @@ | ... | @@ -5869,6 +5892,7 @@ |
5869 | "version": "3.0.1", | 5892 | "version": "3.0.1", |
5870 | "bundled": true, | 5893 | "bundled": true, |
5871 | "dev": true, | 5894 | "dev": true, |
5895 | "optional": true, | ||
5872 | "requires": { | 5896 | "requires": { |
5873 | "ansi-regex": "^2.0.0" | 5897 | "ansi-regex": "^2.0.0" |
5874 | } | 5898 | } |
... | @@ -5912,12 +5936,14 @@ | ... | @@ -5912,12 +5936,14 @@ |
5912 | "wrappy": { | 5936 | "wrappy": { |
5913 | "version": "1.0.2", | 5937 | "version": "1.0.2", |
5914 | "bundled": true, | 5938 | "bundled": true, |
5915 | "dev": true | 5939 | "dev": true, |
5940 | "optional": true | ||
5916 | }, | 5941 | }, |
5917 | "yallist": { | 5942 | "yallist": { |
5918 | "version": "3.0.3", | 5943 | "version": "3.0.3", |
5919 | "bundled": true, | 5944 | "bundled": true, |
5920 | "dev": true | 5945 | "dev": true, |
5946 | "optional": true | ||
5921 | } | 5947 | } |
5922 | } | 5948 | } |
5923 | }, | 5949 | }, |
... | @@ -6673,6 +6699,13 @@ | ... | @@ -6673,6 +6699,13 @@ |
6673 | "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", | 6699 | "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", |
6674 | "dev": true | 6700 | "dev": true |
6675 | }, | 6701 | }, |
6702 | "image-size": { | ||
6703 | "version": "0.5.5", | ||
6704 | "resolved": "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz", | ||
6705 | "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", | ||
6706 | "dev": true, | ||
6707 | "optional": true | ||
6708 | }, | ||
6676 | "import-cwd": { | 6709 | "import-cwd": { |
6677 | "version": "2.1.0", | 6710 | "version": "2.1.0", |
6678 | "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz", | 6711 | "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz", |
... | @@ -7385,6 +7418,64 @@ | ... | @@ -7385,6 +7418,64 @@ |
7385 | "invert-kv": "^2.0.0" | 7418 | "invert-kv": "^2.0.0" |
7386 | } | 7419 | } |
7387 | }, | 7420 | }, |
7421 | "less": { | ||
7422 | "version": "3.9.0", | ||
7423 | "resolved": "https://registry.npm.taobao.org/less/download/less-3.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fless%2Fdownload%2Fless-3.9.0.tgz", | ||
7424 | "integrity": "sha1-t1EcQ/N89X3Iff/ZiD7BISibFHQ=", | ||
7425 | "dev": true, | ||
7426 | "requires": { | ||
7427 | "clone": "^2.1.2", | ||
7428 | "errno": "^0.1.1", | ||
7429 | "graceful-fs": "^4.1.2", | ||
7430 | "image-size": "~0.5.0", | ||
7431 | "mime": "^1.4.1", | ||
7432 | "mkdirp": "^0.5.0", | ||
7433 | "promise": "^7.1.1", | ||
7434 | "request": "^2.83.0", | ||
7435 | "source-map": "~0.6.0" | ||
7436 | }, | ||
7437 | "dependencies": { | ||
7438 | "clone": { | ||
7439 | "version": "2.1.2", | ||
7440 | "resolved": "https://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz", | ||
7441 | "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", | ||
7442 | "dev": true | ||
7443 | }, | ||
7444 | "mime": { | ||
7445 | "version": "1.6.0", | ||
7446 | "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz?cache=0&sync_timestamp=1560034758817&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.6.0.tgz", | ||
7447 | "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=", | ||
7448 | "dev": true, | ||
7449 | "optional": true | ||
7450 | }, | ||
7451 | "source-map": { | ||
7452 | "version": "0.6.1", | ||
7453 | "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", | ||
7454 | "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", | ||
7455 | "dev": true, | ||
7456 | "optional": true | ||
7457 | } | ||
7458 | } | ||
7459 | }, | ||
7460 | "less-loader": { | ||
7461 | "version": "5.0.0", | ||
7462 | "resolved": "https://registry.npm.taobao.org/less-loader/download/less-loader-5.0.0.tgz", | ||
7463 | "integrity": "sha1-SY3eOmxsT4h0WO6e0/CGoSrRtGY=", | ||
7464 | "dev": true, | ||
7465 | "requires": { | ||
7466 | "clone": "^2.1.1", | ||
7467 | "loader-utils": "^1.1.0", | ||
7468 | "pify": "^4.0.1" | ||
7469 | }, | ||
7470 | "dependencies": { | ||
7471 | "clone": { | ||
7472 | "version": "2.1.2", | ||
7473 | "resolved": "https://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz", | ||
7474 | "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", | ||
7475 | "dev": true | ||
7476 | } | ||
7477 | } | ||
7478 | }, | ||
7388 | "levn": { | 7479 | "levn": { |
7389 | "version": "0.3.0", | 7480 | "version": "0.3.0", |
7390 | "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", | 7481 | "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", |
... | @@ -9733,6 +9824,16 @@ | ... | @@ -9733,6 +9824,16 @@ |
9733 | "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", | 9824 | "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", |
9734 | "dev": true | 9825 | "dev": true |
9735 | }, | 9826 | }, |
9827 | "promise": { | ||
9828 | "version": "7.3.1", | ||
9829 | "resolved": "https://registry.npm.taobao.org/promise/download/promise-7.3.1.tgz", | ||
9830 | "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", | ||
9831 | "dev": true, | ||
9832 | "optional": true, | ||
9833 | "requires": { | ||
9834 | "asap": "~2.0.3" | ||
9835 | } | ||
9836 | }, | ||
9736 | "promise-inflight": { | 9837 | "promise-inflight": { |
9737 | "version": "1.0.1", | 9838 | "version": "1.0.1", |
9738 | "resolved": "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz", | 9839 | "resolved": "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz", |
... | @@ -10520,7 +10621,8 @@ | ... | @@ -10520,7 +10621,8 @@ |
10520 | "version": "4.0.8", | 10621 | "version": "4.0.8", |
10521 | "resolved": "https://registry.npm.taobao.org/rx-lite/download/rx-lite-4.0.8.tgz", | 10622 | "resolved": "https://registry.npm.taobao.org/rx-lite/download/rx-lite-4.0.8.tgz", |
10522 | "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", | 10623 | "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", |
10523 | "dev": true | 10624 | "dev": true, |
10625 | "optional": true | ||
10524 | }, | 10626 | }, |
10525 | "rx-lite-aggregates": { | 10627 | "rx-lite-aggregates": { |
10526 | "version": "4.0.8", | 10628 | "version": "4.0.8", | ... | ... |
... | @@ -34,6 +34,8 @@ | ... | @@ -34,6 +34,8 @@ |
34 | "babel-plugin-import": "^1.12.0", | 34 | "babel-plugin-import": "^1.12.0", |
35 | "eslint": "^5.16.0", | 35 | "eslint": "^5.16.0", |
36 | "eslint-plugin-vue": "^5.0.0", | 36 | "eslint-plugin-vue": "^5.0.0", |
37 | "less": "^3.9.0", | ||
38 | "less-loader": "^5.0.0", | ||
37 | "node-sass": "^4.12.0", | 39 | "node-sass": "^4.12.0", |
38 | "sass-loader": "^7.1.0", | 40 | "sass-loader": "^7.1.0", |
39 | "vue-template-compiler": "^2.6.10" | 41 | "vue-template-compiler": "^2.6.10" | ... | ... |
... | @@ -8,7 +8,7 @@ | ... | @@ -8,7 +8,7 @@ |
8 | <meta name="viewport" | 8 | <meta name="viewport" |
9 | content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> | 9 | content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> |
10 | <link rel="icon" href="<%= BASE_URL %>favicon.ico"> | 10 | <link rel="icon" href="<%= BASE_URL %>favicon.ico"> |
11 | <title>vue-cli3-framework</title> | 11 | <title></title> |
12 | </head> | 12 | </head> |
13 | 13 | ||
14 | <body> | 14 | <body> | ... | ... |
... | @@ -4,12 +4,13 @@ | ... | @@ -4,12 +4,13 @@ |
4 | <router-link to="/">Home</router-link> | | 4 | <router-link to="/">Home</router-link> | |
5 | <router-link to="/about">About</router-link> | 5 | <router-link to="/about">About</router-link> |
6 | </div>--> | 6 | </div>--> |
7 | <router-view/> | 7 | <router-view /> |
8 | </div> | 8 | </div> |
9 | </template> | 9 | </template> |
10 | 10 | ||
11 | |||
11 | <style lang="scss"> | 12 | <style lang="scss"> |
12 | @import './styles/support.scss'; | 13 | @import "./styles/support.scss"; |
13 | 14 | ||
14 | #app { | 15 | #app { |
15 | /* font-family: 'Avenir', Helvetica, Arial, sans-serif; | 16 | /* font-family: 'Avenir', Helvetica, Arial, sans-serif; |
... | @@ -30,6 +31,10 @@ div { | ... | @@ -30,6 +31,10 @@ div { |
30 | padding: 0; | 31 | padding: 0; |
31 | } | 32 | } |
32 | 33 | ||
34 | body { | ||
35 | background-color: #74cb35; | ||
36 | } | ||
37 | |||
33 | .app__width { | 38 | .app__width { |
34 | width: 750px; | 39 | width: 750px; |
35 | } | 40 | } |
... | @@ -83,5 +88,51 @@ div { | ... | @@ -83,5 +88,51 @@ div { |
83 | position: relative; | 88 | position: relative; |
84 | } | 89 | } |
85 | 90 | ||
91 | .sys-btn { | ||
92 | width: 430px; | ||
93 | height: 128px; | ||
94 | background: url(./assets/imgs/btn.png) no-repeat; | ||
95 | background-size: 100%; | ||
96 | text-align: center; | ||
97 | line-height: 118px; | ||
98 | color: #fff; | ||
99 | font-size: 50px; | ||
100 | font-weight: 600; | ||
101 | margin: auto; | ||
102 | } | ||
103 | |||
104 | .sys-btn-02 { | ||
105 | width: 342px; | ||
106 | height: 110px; | ||
107 | background: url(./assets/imgs/btn2.png) no-repeat; | ||
108 | background-size: 100%; | ||
109 | text-align: center; | ||
110 | line-height: 100px; | ||
111 | color: #fff; | ||
112 | font-size: 40px; | ||
113 | font-weight: 600; | ||
114 | margin: auto; | ||
115 | } | ||
86 | 116 | ||
117 | .sys-container-panel { | ||
118 | margin: auto; | ||
119 | width: 692px; | ||
120 | background-color: #fff; | ||
121 | border-radius: 50px; | ||
122 | box-shadow: 5px 5px 15px #8bc263; | ||
123 | position: relative; | ||
124 | .container-title { | ||
125 | width: 505px; | ||
126 | height: 84px; | ||
127 | line-height: 104px; | ||
128 | background: url(./assets/imgs/title-bg.png) no-repeat; | ||
129 | background-size: 100%; | ||
130 | position: absolute; | ||
131 | left: 93.5px; | ||
132 | top: -42px; | ||
133 | font-size: 38px; | ||
134 | font-weight: 600; | ||
135 | color: #e8e8e8; | ||
136 | } | ||
137 | } | ||
87 | </style> | 138 | </style> | ... | ... |
src/api/area.js
0 → 100644
1 | export default { | ||
2 | province_list: { | ||
3 | 110000: '北京市', | ||
4 | 120000: '天津市', | ||
5 | 130000: '河北省', | ||
6 | 140000: '山西省', | ||
7 | 150000: '内蒙古自治区', | ||
8 | 210000: '辽宁省', | ||
9 | 220000: '吉林省', | ||
10 | 230000: '黑龙江省', | ||
11 | 310000: '上海市', | ||
12 | 320000: '江苏省', | ||
13 | 330000: '浙江省', | ||
14 | 340000: '安徽省', | ||
15 | 350000: '福建省', | ||
16 | 360000: '江西省', | ||
17 | 370000: '山东省', | ||
18 | 410000: '河南省', | ||
19 | 420000: '湖北省', | ||
20 | 430000: '湖南省', | ||
21 | 440000: '广东省', | ||
22 | 450000: '广西壮族自治区', | ||
23 | 460000: '海南省', | ||
24 | 500000: '重庆市', | ||
25 | 510000: '四川省', | ||
26 | 520000: '贵州省', | ||
27 | 530000: '云南省', | ||
28 | 540000: '西藏自治区', | ||
29 | 610000: '陕西省', | ||
30 | 620000: '甘肃省', | ||
31 | 630000: '青海省', | ||
32 | 640000: '宁夏回族自治区', | ||
33 | 650000: '新疆维吾尔自治区', | ||
34 | 710000: '台湾省', | ||
35 | 810000: '香港特别行政区', | ||
36 | 820000: '澳门特别行政区', | ||
37 | 900000: '海外' | ||
38 | }, | ||
39 | city_list: { | ||
40 | 110100: '北京市', | ||
41 | 120100: '天津市', | ||
42 | 130100: '石家庄市', | ||
43 | 130200: '唐山市', | ||
44 | 130300: '秦皇岛市', | ||
45 | 130400: '邯郸市', | ||
46 | 130500: '邢台市', | ||
47 | 130600: '保定市', | ||
48 | 130700: '张家口市', | ||
49 | 130800: '承德市', | ||
50 | 130900: '沧州市', | ||
51 | 131000: '廊坊市', | ||
52 | 131100: '衡水市', | ||
53 | 140100: '太原市', | ||
54 | 140200: '大同市', | ||
55 | 140300: '阳泉市', | ||
56 | 140400: '长治市', | ||
57 | 140500: '晋城市', | ||
58 | 140600: '朔州市', | ||
59 | 140700: '晋中市', | ||
60 | 140800: '运城市', | ||
61 | 140900: '忻州市', | ||
62 | 141000: '临汾市', | ||
63 | 141100: '吕梁市', | ||
64 | 150100: '呼和浩特市', | ||
65 | 150200: '包头市', | ||
66 | 150300: '乌海市', | ||
67 | 150400: '赤峰市', | ||
68 | 150500: '通辽市', | ||
69 | 150600: '鄂尔多斯市', | ||
70 | 150700: '呼伦贝尔市', | ||
71 | 150800: '巴彦淖尔市', | ||
72 | 150900: '乌兰察布市', | ||
73 | 152200: '兴安盟', | ||
74 | 152500: '锡林郭勒盟', | ||
75 | 152900: '阿拉善盟', | ||
76 | 210100: '沈阳市', | ||
77 | 210200: '大连市', | ||
78 | 210300: '鞍山市', | ||
79 | 210400: '抚顺市', | ||
80 | 210500: '本溪市', | ||
81 | 210600: '丹东市', | ||
82 | 210700: '锦州市', | ||
83 | 210800: '营口市', | ||
84 | 210900: '阜新市', | ||
85 | 211000: '辽阳市', | ||
86 | 211100: '盘锦市', | ||
87 | 211200: '铁岭市', | ||
88 | 211300: '朝阳市', | ||
89 | 211400: '葫芦岛市', | ||
90 | 220100: '长春市', | ||
91 | 220200: '吉林市', | ||
92 | 220300: '四平市', | ||
93 | 220400: '辽源市', | ||
94 | 220500: '通化市', | ||
95 | 220600: '白山市', | ||
96 | 220700: '松原市', | ||
97 | 220800: '白城市', | ||
98 | 222400: '延边朝鲜族自治州', | ||
99 | 230100: '哈尔滨市', | ||
100 | 230200: '齐齐哈尔市', | ||
101 | 230300: '鸡西市', | ||
102 | 230400: '鹤岗市', | ||
103 | 230500: '双鸭山市', | ||
104 | 230600: '大庆市', | ||
105 | 230700: '伊春市', | ||
106 | 230800: '佳木斯市', | ||
107 | 230900: '七台河市', | ||
108 | 231000: '牡丹江市', | ||
109 | 231100: '黑河市', | ||
110 | 231200: '绥化市', | ||
111 | 232700: '大兴安岭地区', | ||
112 | 310100: '上海市', | ||
113 | 320100: '南京市', | ||
114 | 320200: '无锡市', | ||
115 | 320300: '徐州市', | ||
116 | 320400: '常州市', | ||
117 | 320500: '苏州市', | ||
118 | 320600: '南通市', | ||
119 | 320700: '连云港市', | ||
120 | 320800: '淮安市', | ||
121 | 320900: '盐城市', | ||
122 | 321000: '扬州市', | ||
123 | 321100: '镇江市', | ||
124 | 321200: '泰州市', | ||
125 | 321300: '宿迁市', | ||
126 | 330100: '杭州市', | ||
127 | 330200: '宁波市', | ||
128 | 330300: '温州市', | ||
129 | 330400: '嘉兴市', | ||
130 | 330500: '湖州市', | ||
131 | 330600: '绍兴市', | ||
132 | 330700: '金华市', | ||
133 | 330800: '衢州市', | ||
134 | 330900: '舟山市', | ||
135 | 331000: '台州市', | ||
136 | 331100: '丽水市', | ||
137 | 340100: '合肥市', | ||
138 | 340200: '芜湖市', | ||
139 | 340300: '蚌埠市', | ||
140 | 340400: '淮南市', | ||
141 | 340500: '马鞍山市', | ||
142 | 340600: '淮北市', | ||
143 | 340700: '铜陵市', | ||
144 | 340800: '安庆市', | ||
145 | 341000: '黄山市', | ||
146 | 341100: '滁州市', | ||
147 | 341200: '阜阳市', | ||
148 | 341300: '宿州市', | ||
149 | 341500: '六安市', | ||
150 | 341600: '亳州市', | ||
151 | 341700: '池州市', | ||
152 | 341800: '宣城市', | ||
153 | 350100: '福州市', | ||
154 | 350200: '厦门市', | ||
155 | 350300: '莆田市', | ||
156 | 350400: '三明市', | ||
157 | 350500: '泉州市', | ||
158 | 350600: '漳州市', | ||
159 | 350700: '南平市', | ||
160 | 350800: '龙岩市', | ||
161 | 350900: '宁德市', | ||
162 | 360100: '南昌市', | ||
163 | 360200: '景德镇市', | ||
164 | 360300: '萍乡市', | ||
165 | 360400: '九江市', | ||
166 | 360500: '新余市', | ||
167 | 360600: '鹰潭市', | ||
168 | 360700: '赣州市', | ||
169 | 360800: '吉安市', | ||
170 | 360900: '宜春市', | ||
171 | 361000: '抚州市', | ||
172 | 361100: '上饶市', | ||
173 | 370100: '济南市', | ||
174 | 370200: '青岛市', | ||
175 | 370300: '淄博市', | ||
176 | 370400: '枣庄市', | ||
177 | 370500: '东营市', | ||
178 | 370600: '烟台市', | ||
179 | 370700: '潍坊市', | ||
180 | 370800: '济宁市', | ||
181 | 370900: '泰安市', | ||
182 | 371000: '威海市', | ||
183 | 371100: '日照市', | ||
184 | 371200: '莱芜市', | ||
185 | 371300: '临沂市', | ||
186 | 371400: '德州市', | ||
187 | 371500: '聊城市', | ||
188 | 371600: '滨州市', | ||
189 | 371700: '菏泽市', | ||
190 | 410100: '郑州市', | ||
191 | 410200: '开封市', | ||
192 | 410300: '洛阳市', | ||
193 | 410400: '平顶山市', | ||
194 | 410500: '安阳市', | ||
195 | 410600: '鹤壁市', | ||
196 | 410700: '新乡市', | ||
197 | 410800: '焦作市', | ||
198 | 410900: '濮阳市', | ||
199 | 411000: '许昌市', | ||
200 | 411100: '漯河市', | ||
201 | 411200: '三门峡市', | ||
202 | 411300: '南阳市', | ||
203 | 411400: '商丘市', | ||
204 | 411500: '信阳市', | ||
205 | 411600: '周口市', | ||
206 | 411700: '驻马店市', | ||
207 | 419000: '省直辖县', | ||
208 | 420100: '武汉市', | ||
209 | 420200: '黄石市', | ||
210 | 420300: '十堰市', | ||
211 | 420500: '宜昌市', | ||
212 | 420600: '襄阳市', | ||
213 | 420700: '鄂州市', | ||
214 | 420800: '荆门市', | ||
215 | 420900: '孝感市', | ||
216 | 421000: '荆州市', | ||
217 | 421100: '黄冈市', | ||
218 | 421200: '咸宁市', | ||
219 | 421300: '随州市', | ||
220 | 422800: '恩施土家族苗族自治州', | ||
221 | 429000: '省直辖县', | ||
222 | 430100: '长沙市', | ||
223 | 430200: '株洲市', | ||
224 | 430300: '湘潭市', | ||
225 | 430400: '衡阳市', | ||
226 | 430500: '邵阳市', | ||
227 | 430600: '岳阳市', | ||
228 | 430700: '常德市', | ||
229 | 430800: '张家界市', | ||
230 | 430900: '益阳市', | ||
231 | 431000: '郴州市', | ||
232 | 431100: '永州市', | ||
233 | 431200: '怀化市', | ||
234 | 431300: '娄底市', | ||
235 | 433100: '湘西土家族苗族自治州', | ||
236 | 440100: '广州市', | ||
237 | 440200: '韶关市', | ||
238 | 440300: '深圳市', | ||
239 | 440400: '珠海市', | ||
240 | 440500: '汕头市', | ||
241 | 440600: '佛山市', | ||
242 | 440700: '江门市', | ||
243 | 440800: '湛江市', | ||
244 | 440900: '茂名市', | ||
245 | 441200: '肇庆市', | ||
246 | 441300: '惠州市', | ||
247 | 441400: '梅州市', | ||
248 | 441500: '汕尾市', | ||
249 | 441600: '河源市', | ||
250 | 441700: '阳江市', | ||
251 | 441800: '清远市', | ||
252 | 441900: '东莞市', | ||
253 | 442000: '中山市', | ||
254 | 445100: '潮州市', | ||
255 | 445200: '揭阳市', | ||
256 | 445300: '云浮市', | ||
257 | 450100: '南宁市', | ||
258 | 450200: '柳州市', | ||
259 | 450300: '桂林市', | ||
260 | 450400: '梧州市', | ||
261 | 450500: '北海市', | ||
262 | 450600: '防城港市', | ||
263 | 450700: '钦州市', | ||
264 | 450800: '贵港市', | ||
265 | 450900: '玉林市', | ||
266 | 451000: '百色市', | ||
267 | 451100: '贺州市', | ||
268 | 451200: '河池市', | ||
269 | 451300: '来宾市', | ||
270 | 451400: '崇左市', | ||
271 | 460100: '海口市', | ||
272 | 460200: '三亚市', | ||
273 | 460300: '三沙市', | ||
274 | 460400: '儋州市', | ||
275 | 469000: '省直辖县', | ||
276 | 500100: '重庆市', | ||
277 | 500200: '县', | ||
278 | 510100: '成都市', | ||
279 | 510300: '自贡市', | ||
280 | 510400: '攀枝花市', | ||
281 | 510500: '泸州市', | ||
282 | 510600: '德阳市', | ||
283 | 510700: '绵阳市', | ||
284 | 510800: '广元市', | ||
285 | 510900: '遂宁市', | ||
286 | 511000: '内江市', | ||
287 | 511100: '乐山市', | ||
288 | 511300: '南充市', | ||
289 | 511400: '眉山市', | ||
290 | 511500: '宜宾市', | ||
291 | 511600: '广安市', | ||
292 | 511700: '达州市', | ||
293 | 511800: '雅安市', | ||
294 | 511900: '巴中市', | ||
295 | 512000: '资阳市', | ||
296 | 513200: '阿坝藏族羌族自治州', | ||
297 | 513300: '甘孜藏族自治州', | ||
298 | 513400: '凉山彝族自治州', | ||
299 | 520100: '贵阳市', | ||
300 | 520200: '六盘水市', | ||
301 | 520300: '遵义市', | ||
302 | 520400: '安顺市', | ||
303 | 520500: '毕节市', | ||
304 | 520600: '铜仁市', | ||
305 | 522300: '黔西南布依族苗族自治州', | ||
306 | 522600: '黔东南苗族侗族自治州', | ||
307 | 522700: '黔南布依族苗族自治州', | ||
308 | 530100: '昆明市', | ||
309 | 530300: '曲靖市', | ||
310 | 530400: '玉溪市', | ||
311 | 530500: '保山市', | ||
312 | 530600: '昭通市', | ||
313 | 530700: '丽江市', | ||
314 | 530800: '普洱市', | ||
315 | 530900: '临沧市', | ||
316 | 532300: '楚雄彝族自治州', | ||
317 | 532500: '红河哈尼族彝族自治州', | ||
318 | 532600: '文山壮族苗族自治州', | ||
319 | 532800: '西双版纳傣族自治州', | ||
320 | 532900: '大理白族自治州', | ||
321 | 533100: '德宏傣族景颇族自治州', | ||
322 | 533300: '怒江傈僳族自治州', | ||
323 | 533400: '迪庆藏族自治州', | ||
324 | 540100: '拉萨市', | ||
325 | 540200: '日喀则市', | ||
326 | 540300: '昌都市', | ||
327 | 540400: '林芝市', | ||
328 | 540500: '山南市', | ||
329 | 540600: '那曲市', | ||
330 | 542500: '阿里地区', | ||
331 | 610100: '西安市', | ||
332 | 610200: '铜川市', | ||
333 | 610300: '宝鸡市', | ||
334 | 610400: '咸阳市', | ||
335 | 610500: '渭南市', | ||
336 | 610600: '延安市', | ||
337 | 610700: '汉中市', | ||
338 | 610800: '榆林市', | ||
339 | 610900: '安康市', | ||
340 | 611000: '商洛市', | ||
341 | 620100: '兰州市', | ||
342 | 620200: '嘉峪关市', | ||
343 | 620300: '金昌市', | ||
344 | 620400: '白银市', | ||
345 | 620500: '天水市', | ||
346 | 620600: '武威市', | ||
347 | 620700: '张掖市', | ||
348 | 620800: '平凉市', | ||
349 | 620900: '酒泉市', | ||
350 | 621000: '庆阳市', | ||
351 | 621100: '定西市', | ||
352 | 621200: '陇南市', | ||
353 | 622900: '临夏回族自治州', | ||
354 | 623000: '甘南藏族自治州', | ||
355 | 630100: '西宁市', | ||
356 | 630200: '海东市', | ||
357 | 632200: '海北藏族自治州', | ||
358 | 632300: '黄南藏族自治州', | ||
359 | 632500: '海南藏族自治州', | ||
360 | 632600: '果洛藏族自治州', | ||
361 | 632700: '玉树藏族自治州', | ||
362 | 632800: '海西蒙古族藏族自治州', | ||
363 | 640100: '银川市', | ||
364 | 640200: '石嘴山市', | ||
365 | 640300: '吴忠市', | ||
366 | 640400: '固原市', | ||
367 | 640500: '中卫市', | ||
368 | 650100: '乌鲁木齐市', | ||
369 | 650200: '克拉玛依市', | ||
370 | 650400: '吐鲁番市', | ||
371 | 650500: '哈密市', | ||
372 | 652300: '昌吉回族自治州', | ||
373 | 652700: '博尔塔拉蒙古自治州', | ||
374 | 652800: '巴音郭楞蒙古自治州', | ||
375 | 652900: '阿克苏地区', | ||
376 | 653000: '克孜勒苏柯尔克孜自治州', | ||
377 | 653100: '喀什地区', | ||
378 | 653200: '和田地区', | ||
379 | 654000: '伊犁哈萨克自治州', | ||
380 | 654200: '塔城地区', | ||
381 | 654300: '阿勒泰地区', | ||
382 | 659000: '自治区直辖县级行政区划', | ||
383 | 710100: '台北市', | ||
384 | 710200: '高雄市', | ||
385 | 710300: '台南市', | ||
386 | 710400: '台中市', | ||
387 | 710500: '金门县', | ||
388 | 710600: '南投县', | ||
389 | 710700: '基隆市', | ||
390 | 710800: '新竹市', | ||
391 | 710900: '嘉义市', | ||
392 | 711100: '新北市', | ||
393 | 711200: '宜兰县', | ||
394 | 711300: '新竹县', | ||
395 | 711400: '桃园县', | ||
396 | 711500: '苗栗县', | ||
397 | 711700: '彰化县', | ||
398 | 711900: '嘉义县', | ||
399 | 712100: '云林县', | ||
400 | 712400: '屏东县', | ||
401 | 712500: '台东县', | ||
402 | 712600: '花莲县', | ||
403 | 712700: '澎湖县', | ||
404 | 712800: '连江县', | ||
405 | 810100: '香港岛', | ||
406 | 810200: '九龙', | ||
407 | 810300: '新界', | ||
408 | 820100: '澳门半岛', | ||
409 | 820200: '离岛', | ||
410 | 900400: '阿富汗', | ||
411 | 900800: '阿尔巴尼亚', | ||
412 | 901000: '南极洲', | ||
413 | 901200: '阿尔及利亚', | ||
414 | 901600: '美属萨摩亚', | ||
415 | 902000: '安道尔', | ||
416 | 902400: '安哥拉', | ||
417 | 902800: '安提瓜和巴布达', | ||
418 | 903100: '阿塞拜疆', | ||
419 | 903200: '阿根廷', | ||
420 | 903600: '澳大利亚', | ||
421 | 904000: '奥地利', | ||
422 | 904400: '巴哈马', | ||
423 | 904800: '巴林', | ||
424 | 905000: '孟加拉', | ||
425 | 905100: '亚美尼亚', | ||
426 | 905200: '巴巴多斯', | ||
427 | 905600: '比利时', | ||
428 | 906000: '百慕大', | ||
429 | 906400: '不丹', | ||
430 | 906800: '玻利维亚', | ||
431 | 907000: '波黑', | ||
432 | 907200: '博茨瓦纳', | ||
433 | 907400: '布韦岛', | ||
434 | 907600: '巴西', | ||
435 | 908400: '伯利兹', | ||
436 | 908600: '英属印度洋领地', | ||
437 | 909000: '所罗门群岛', | ||
438 | 909200: '英属维尔京群岛', | ||
439 | 909600: '文莱', | ||
440 | 910000: '保加利亚', | ||
441 | 910400: '缅甸', | ||
442 | 910800: '布隆迪', | ||
443 | 911200: '白俄罗斯', | ||
444 | 911600: '柬埔寨', | ||
445 | 912000: '喀麦隆', | ||
446 | 912400: '加拿大', | ||
447 | 913200: '佛得角', | ||
448 | 913600: '开曼群岛', | ||
449 | 914000: '中非', | ||
450 | 914400: '斯里兰卡', | ||
451 | 914800: '乍得', | ||
452 | 915200: '智利', | ||
453 | 916200: '圣诞岛', | ||
454 | 916600: '科科斯群岛', | ||
455 | 917000: '哥伦比亚', | ||
456 | 917400: '科摩罗', | ||
457 | 917500: '马约特', | ||
458 | 917800: '刚果(布)', | ||
459 | 918000: '刚果(金)', | ||
460 | 918400: '库克群岛', | ||
461 | 918800: '哥斯达黎加', | ||
462 | 919100: '克罗地亚', | ||
463 | 919200: '古巴', | ||
464 | 919600: '塞浦路斯', | ||
465 | 920300: '捷克', | ||
466 | 920400: '贝宁', | ||
467 | 920800: '丹麦', | ||
468 | 921200: '多米尼克', | ||
469 | 921400: '多米尼加', | ||
470 | 921800: '厄瓜多尔', | ||
471 | 922200: '萨尔瓦多', | ||
472 | 922600: '赤道几内亚', | ||
473 | 923100: '埃塞俄比亚', | ||
474 | 923200: '厄立特里亚', | ||
475 | 923300: '爱沙尼亚', | ||
476 | 923400: '法罗群岛', | ||
477 | 923800: '马尔维纳斯群岛( 福克兰)', | ||
478 | 923900: '南乔治亚岛和南桑威奇群岛', | ||
479 | 924200: '斐济群岛', | ||
480 | 924600: '芬兰', | ||
481 | 924800: '奥兰群岛', | ||
482 | 925000: '法国', | ||
483 | 925400: '法属圭亚那', | ||
484 | 925800: '法属波利尼西亚', | ||
485 | 926000: '法属南部领地', | ||
486 | 926200: '吉布提', | ||
487 | 926600: '加蓬', | ||
488 | 926800: '格鲁吉亚', | ||
489 | 927000: '冈比亚', | ||
490 | 927500: '巴勒斯坦', | ||
491 | 927600: '德国', | ||
492 | 928800: '加纳', | ||
493 | 929200: '直布罗陀', | ||
494 | 929600: '基里巴斯', | ||
495 | 930000: '希腊', | ||
496 | 930400: '格陵兰', | ||
497 | 930800: '格林纳达', | ||
498 | 931200: '瓜德罗普', | ||
499 | 931600: '关岛', | ||
500 | 932000: '危地马拉', | ||
501 | 932400: '几内亚', | ||
502 | 932800: '圭亚那', | ||
503 | 933200: '海地', | ||
504 | 933400: '赫德岛和麦克唐纳群岛', | ||
505 | 933600: '梵蒂冈', | ||
506 | 934000: '洪都拉斯', | ||
507 | 934800: '匈牙利', | ||
508 | 935200: '冰岛', | ||
509 | 935600: '印度', | ||
510 | 936000: '印尼', | ||
511 | 936400: '伊朗', | ||
512 | 936800: '伊拉克', | ||
513 | 937200: '爱尔兰', | ||
514 | 937600: '以色列', | ||
515 | 938000: '意大利', | ||
516 | 938400: '科特迪瓦', | ||
517 | 938800: '牙买加', | ||
518 | 939200: '日本', | ||
519 | 939800: '哈萨克斯坦', | ||
520 | 940000: '约旦', | ||
521 | 940400: '肯尼亚', | ||
522 | 940800: '朝鲜 北朝鲜', | ||
523 | 941000: '韩国', | ||
524 | 941400: '科威特', | ||
525 | 941700: '吉尔吉斯斯坦', | ||
526 | 941800: '老挝', | ||
527 | 942200: '黎巴嫩', | ||
528 | 942600: '莱索托', | ||
529 | 942800: '拉脱维亚', | ||
530 | 943000: '利比里亚', | ||
531 | 943400: '利比亚', | ||
532 | 943800: '列支敦士登', | ||
533 | 944000: '立陶宛', | ||
534 | 944200: '卢森堡', | ||
535 | 945000: '马达加斯加', | ||
536 | 945400: '马拉维', | ||
537 | 945800: '马来西亚', | ||
538 | 946200: '马尔代夫', | ||
539 | 946600: '马里', | ||
540 | 947000: '马耳他', | ||
541 | 947400: '马提尼克', | ||
542 | 947800: '毛里塔尼亚', | ||
543 | 948000: '毛里求斯', | ||
544 | 948400: '墨西哥', | ||
545 | 949200: '摩纳哥', | ||
546 | 949600: '蒙古国', | ||
547 | 949800: '摩尔多瓦', | ||
548 | 949900: '黑山', | ||
549 | 950000: '蒙塞拉特岛', | ||
550 | 950400: '摩洛哥', | ||
551 | 950800: '莫桑比克', | ||
552 | 951200: '阿曼', | ||
553 | 951600: '纳米比亚', | ||
554 | 952000: '瑙鲁', | ||
555 | 952400: '尼泊尔', | ||
556 | 952800: '荷兰', | ||
557 | 953300: '阿鲁巴', | ||
558 | 953500: '荷兰加勒比区', | ||
559 | 954000: '新喀里多尼亚', | ||
560 | 954800: '瓦努阿图', | ||
561 | 955400: '新西兰', | ||
562 | 955800: '尼加拉瓜', | ||
563 | 956200: '尼日尔', | ||
564 | 956600: '尼日利亚', | ||
565 | 957000: '纽埃', | ||
566 | 957400: '诺福克岛', | ||
567 | 957800: '挪威', | ||
568 | 958000: '北马里亚纳群岛', | ||
569 | 958100: '美国本土外小岛屿', | ||
570 | 958300: '密克罗尼西亚联邦', | ||
571 | 958400: '马绍尔群岛', | ||
572 | 958500: '帕劳', | ||
573 | 958600: '巴基斯坦', | ||
574 | 959100: '巴拿马', | ||
575 | 959800: '巴布亚新几内亚', | ||
576 | 960000: '巴拉圭', | ||
577 | 960400: '秘鲁', | ||
578 | 960800: '菲律宾', | ||
579 | 961200: '皮特凯恩群岛', | ||
580 | 961600: '波兰', | ||
581 | 962000: '葡萄牙', | ||
582 | 962400: '几内亚比绍', | ||
583 | 962600: '东帝汶', | ||
584 | 963000: '波多黎各', | ||
585 | 963400: '卡塔尔', | ||
586 | 963800: '留尼汪', | ||
587 | 964200: '罗马尼亚', | ||
588 | 964300: '俄罗斯', | ||
589 | 964600: '卢旺达', | ||
590 | 965200: '圣巴泰勒米岛', | ||
591 | 965400: '圣赫勒拿', | ||
592 | 965900: '圣基茨和尼维斯', | ||
593 | 966000: '安圭拉', | ||
594 | 966200: '圣卢西亚', | ||
595 | 966300: '法属圣马丁', | ||
596 | 966600: '圣皮埃尔和密克隆', | ||
597 | 967000: '圣文森特和格林纳丁斯', | ||
598 | 967400: '圣马力诺', | ||
599 | 967800: '圣多美和普林西比', | ||
600 | 968200: '沙特阿拉伯', | ||
601 | 968600: '塞内加尔', | ||
602 | 968800: '塞尔维亚', | ||
603 | 969000: '塞舌尔', | ||
604 | 969400: '塞拉利昂', | ||
605 | 970200: '新加坡', | ||
606 | 970300: '斯洛伐克', | ||
607 | 970400: '越南', | ||
608 | 970500: '斯洛文尼亚', | ||
609 | 970600: '索马里', | ||
610 | 971000: '南非', | ||
611 | 971600: '津巴布韦', | ||
612 | 972400: '西班牙', | ||
613 | 972800: '南苏丹', | ||
614 | 972900: '苏丹', | ||
615 | 973200: '西撒哈拉', | ||
616 | 974000: '苏里南', | ||
617 | 974400: '斯瓦尔巴群岛和 扬马延岛', | ||
618 | 974800: '斯威士兰', | ||
619 | 975200: '瑞典', | ||
620 | 975600: '瑞士', | ||
621 | 976000: '叙利亚', | ||
622 | 976200: '塔吉克斯坦', | ||
623 | 976400: '泰国', | ||
624 | 976800: '多哥', | ||
625 | 977200: '托克劳', | ||
626 | 977600: '汤加', | ||
627 | 978000: '特立尼达和多巴哥', | ||
628 | 978400: '阿联酋', | ||
629 | 978800: '突尼斯', | ||
630 | 979200: '土耳其', | ||
631 | 979500: '土库曼斯坦', | ||
632 | 979600: '特克斯和凯科斯群岛', | ||
633 | 979800: '图瓦卢', | ||
634 | 980000: '乌干达', | ||
635 | 980400: '乌克兰', | ||
636 | 980700: '马其顿', | ||
637 | 981800: '埃及', | ||
638 | 982600: '英国', | ||
639 | 983100: '根西岛', | ||
640 | 983200: '泽西岛', | ||
641 | 983300: '马恩岛', | ||
642 | 983400: '坦桑尼亚', | ||
643 | 984000: '美国', | ||
644 | 985000: '美属维尔京群岛', | ||
645 | 985400: '布基纳法索', | ||
646 | 985800: '乌拉圭', | ||
647 | 986000: '乌兹别克斯坦', | ||
648 | 986200: '委内瑞拉', | ||
649 | 987600: '瓦利斯和富图纳', | ||
650 | 988200: '萨摩亚', | ||
651 | 988700: '也门', | ||
652 | 989400: '赞比亚' | ||
653 | } | ||
654 | }; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | import axios from 'axios'; | 1 | import axios from 'axios'; |
2 | import Vue from 'vue'; | ||
3 | import Router from '../router' | ||
4 | |||
2 | // import { | 5 | // import { |
3 | // Toast | 6 | // Toast |
4 | // } from 'vant'; | 7 | // } from 'vant'; |
... | @@ -12,23 +15,33 @@ function Toast(msg) { | ... | @@ -12,23 +15,33 @@ function Toast(msg) { |
12 | 15 | ||
13 | // 服务器地址 | 16 | // 服务器地址 |
14 | let base = "https://ow.go.qudone.com"; | 17 | let base = "https://ow.go.qudone.com"; |
18 | let baseWxAppid = "wx9fc8816188c0ef2a"; | ||
19 | let wxOauthUrl = "http://clubwxuat.hm.liby.com.cn/api/getOpenId.htm"; | ||
15 | if (location.href.indexOf("//k.wxpai.cn") > 0) { | 20 | if (location.href.indexOf("//k.wxpai.cn") > 0) { |
16 | base = "https://api.k.wxpai.cn/bizproxy" | 21 | base = "https://api.k.wxpai.cn/bizproxy" |
22 | baseWxAppid = "wx9fc8816188c0ef2a"; | ||
23 | wxOauthUrl = "http://clubwxuat.hm.liby.com.cn/api/getOpenId.htm"; | ||
17 | } | 24 | } |
25 | |||
26 | let whileList = [ | ||
27 | "https://api.k.wxpai.cn/bizproxy/kdapi/file/upload" | ||
28 | ] | ||
18 | // let base = COM.baseUrl; | 29 | // let base = COM.baseUrl; |
19 | 30 | ||
20 | // 请求拦截器 | 31 | // 请求拦截器 |
21 | // axios.interceptors.request.use( | 32 | axios.interceptors.request.use( |
22 | // config => { | 33 | config => { |
23 | // // 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了 | 34 | // 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了 |
24 | // // 即使本地存在token,也有可能token是过期的,所以在响应拦截器中要对返回状态进行判断 | 35 | // 即使本地存在token,也有可能token是过期的,所以在响应拦截器中要对返回状态进行判断 |
25 | // const token = "token"; //这里写入token | 36 | const token = store.getSession(); |
26 | // token && (config.headers.Authorization = token); | 37 | if (token && whileList.indexOf(config.url) < 0) { |
27 | // return config; | 38 | config.headers["sessionId"] = token; |
28 | // }, | 39 | } |
29 | // error => { | 40 | return config; |
30 | // return Promise.error(error); | 41 | }, |
31 | // }) | 42 | error => { |
43 | return Promise.error(error); | ||
44 | }) | ||
32 | 45 | ||
33 | // 响应拦截器 | 46 | // 响应拦截器 |
34 | axios.interceptors.response.use( | 47 | axios.interceptors.response.use( |
... | @@ -37,7 +50,11 @@ axios.interceptors.response.use( | ... | @@ -37,7 +50,11 @@ axios.interceptors.response.use( |
37 | if (response.data.code === 200) { | 50 | if (response.data.code === 200) { |
38 | return Promise.resolve(response); | 51 | return Promise.resolve(response); |
39 | } else { | 52 | } else { |
40 | Toast(response.data.bizMsg); | 53 | if (response.data.code == 404) { |
54 | store.removeSession(); | ||
55 | store.saveRedirectUrl(); | ||
56 | Router.push("/"); | ||
57 | } | ||
41 | return Promise.reject(response); | 58 | return Promise.reject(response); |
42 | } | 59 | } |
43 | } else { | 60 | } else { |
... | @@ -46,43 +63,9 @@ axios.interceptors.response.use( | ... | @@ -46,43 +63,9 @@ axios.interceptors.response.use( |
46 | }, | 63 | }, |
47 | // 服务器状态码不是200的情况 | 64 | // 服务器状态码不是200的情况 |
48 | error => { | 65 | error => { |
66 | console.log("Router.path === ", Router.history.current); | ||
49 | if (error.response.status) { | 67 | if (error.response.status) { |
50 | switch (error.response.status) { | 68 | switch (error.response.status) { |
51 | // 401: 未登录 | ||
52 | // 未登录则跳转登录页面,并携带当前页面的路径 | ||
53 | // 在登录成功后返回当前页面,这一步需要在登录页操作。 | ||
54 | case 401: | ||
55 | router.replace({ | ||
56 | path: '/login', | ||
57 | query: { | ||
58 | redirect: router.currentRoute.fullPath | ||
59 | } | ||
60 | }); | ||
61 | break; | ||
62 | // 403 token过期 | ||
63 | // 登录过期对用户进行提示 | ||
64 | // 清除本地token和清空vuex中token对象 | ||
65 | // 跳转登录页面 | ||
66 | case 403: | ||
67 | Toast({ | ||
68 | message: '登录过期,请重新登录', | ||
69 | duration: 1000, | ||
70 | forbidClick: true | ||
71 | }); | ||
72 | // 清除token | ||
73 | localStorage.removeItem('token'); | ||
74 | store.commit('loginSuccess', null); | ||
75 | // 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面 | ||
76 | setTimeout(() => { | ||
77 | router.replace({ | ||
78 | path: '/login', | ||
79 | query: { | ||
80 | redirect: router.currentRoute.fullPath | ||
81 | } | ||
82 | }); | ||
83 | }, 1000); | ||
84 | break; | ||
85 | // 404请求不存在 | ||
86 | case 404: | 69 | case 404: |
87 | Toast({ | 70 | Toast({ |
88 | message: '网络请求不存在', | 71 | message: '网络请求不存在', |
... | @@ -90,7 +73,7 @@ axios.interceptors.response.use( | ... | @@ -90,7 +73,7 @@ axios.interceptors.response.use( |
90 | forbidClick: true | 73 | forbidClick: true |
91 | }); | 74 | }); |
92 | break; | 75 | break; |
93 | // 其他错误,直接抛出错误提示 | 76 | // 其他错误,直接抛出错误提示 |
94 | default: | 77 | default: |
95 | Toast({ | 78 | Toast({ |
96 | message: error.response.data.message, | 79 | message: error.response.data.message, |
... | @@ -119,7 +102,9 @@ export const httpGet = params => { | ... | @@ -119,7 +102,9 @@ export const httpGet = params => { |
119 | url, | 102 | url, |
120 | data | 103 | data |
121 | } = params; | 104 | } = params; |
122 | return axios.get(`${base}${url}`, { | 105 | data = !data ? {} : data; |
106 | let requestUrl = url.indexOf("http:") >= 0 || url.indexOf("https:") >= 0 ? url : `${base}${url}`; | ||
107 | return axios.get(requestUrl, { | ||
123 | params: data | 108 | params: data |
124 | }).then(res => res.data.content); | 109 | }).then(res => res.data.content); |
125 | } | 110 | } |
... | @@ -133,9 +118,57 @@ export const httpPost = params => { | ... | @@ -133,9 +118,57 @@ export const httpPost = params => { |
133 | url, | 118 | url, |
134 | data | 119 | data |
135 | } = params; | 120 | } = params; |
136 | return axios.post(`${base}${url}`, data).then(res => res.data.content); | 121 | let requestUrl = url.indexOf("http:") >= 0 || url.indexOf("https:") >= 0 ? url : `${base}${url}`; |
122 | return axios.post(requestUrl, data).then(res => res.data.content); | ||
137 | } | 123 | } |
138 | 124 | ||
125 | export const store = { | ||
126 | putSession: function (sessionId) { | ||
127 | localStorage.setItem("_jiajia_childrenhost_sesson", sessionId); | ||
128 | }, | ||
129 | getSession: function () { | ||
130 | return localStorage.getItem("_jiajia_childrenhost_sesson"); | ||
131 | }, | ||
132 | removeSession: function () { | ||
133 | localStorage.removeItem("_jiajia_childrenhost_sesson"); | ||
134 | }, | ||
135 | saveRedirectUrl() { | ||
136 | let current = Router.history.current || {}; | ||
137 | let data = { | ||
138 | route: current.path, | ||
139 | params: current.query | ||
140 | } | ||
141 | localStorage.setItem("_jiajia_childrenhost_redirect", JSON.stringify(data)); | ||
142 | }, | ||
143 | getRedirectUrl() { | ||
144 | let dataStr = localStorage.getItem("_jiajia_childrenhost_redirect"); | ||
145 | if (dataStr) { | ||
146 | let data = JSON.parse(dataStr); | ||
147 | let path = data.route; | ||
148 | let sep = "?"; | ||
149 | if (data.params) { | ||
150 | for (let key in data.params) { | ||
151 | path += sep + key + "=" + data.params[key]; | ||
152 | sep = "&"; | ||
153 | } | ||
154 | } | ||
155 | return path; | ||
156 | } | ||
157 | return null; | ||
158 | }, | ||
159 | delRedirectUrl() { | ||
160 | localStorage.removeItem("_jiajia_childrenhost_redirect"); | ||
161 | }, | ||
162 | getWxAppId() { | ||
163 | return `${baseWxAppid}`; | ||
164 | }, | ||
165 | toWxLogin() { | ||
166 | let baseUrl = location.origin + location.pathname; | ||
167 | let returnUrl = encodeURIComponent(`${wxOauthUrl}` + "?returnUrl=" + baseUrl + "?openId=OPENID&p=p"); | ||
168 | let oauthUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + `${baseWxAppid}` + "&redirect_uri=" + returnUrl + "&response_type=code&scope=snsapi_userinfo&stats=" + new Date().getTime() + "#wechat_redirect"; | ||
169 | location.href = oauthUrl; | ||
170 | } | ||
171 | } | ||
139 | 172 | ||
140 | /** | 173 | /** |
141 | * 封装post方法 | 174 | * 封装post方法 |
... | @@ -152,5 +185,38 @@ export const formdata = params => { | ... | @@ -152,5 +185,38 @@ export const formdata = params => { |
152 | url, | 185 | url, |
153 | data | 186 | data |
154 | } = params; | 187 | } = params; |
155 | return axios.post(`${base}${url}`, data, formDataHeaders).then(res => res.data); | ||
156 | } | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
188 | let requestUrl = url.indexOf("http:") >= 0 || url.indexOf("https:") >= 0 ? url : `${base}${url}`; | ||
189 | return axios.post(requestUrl, data, formDataHeaders).then(res => res.data); | ||
190 | } | ||
191 | |||
192 | |||
193 | export const request = { | ||
194 | post(url, data) { | ||
195 | return axios.post(`${requestDomain}${url}`, data); | ||
196 | }, | ||
197 | get(url, data) { | ||
198 | return axios.get(`${requestDomain}${url}`, { params: data }); | ||
199 | }, | ||
200 | form(url, params) { | ||
201 | let formData = new FormData(); //使用formData对象 | ||
202 | for (let key in params) { | ||
203 | formData.append(key, params[key]); | ||
204 | } | ||
205 | let requestUrl = url.indexOf("://") >= 0 ? `${url}` : `${requestDomain}${url}`; | ||
206 | return axios.post(requestUrl, formData, formDataHeaders) | ||
207 | }, | ||
208 | build(url, params){ | ||
209 | let fullUrl = `${requestDomain}${url}`; | ||
210 | let split = ""; | ||
211 | for(let key in params){ | ||
212 | if(split){ | ||
213 | split = "&"; | ||
214 | } else { | ||
215 | split = "?" | ||
216 | } | ||
217 | fullUrl += split + key +"="+params[key]; | ||
218 | } | ||
219 | return fullUrl; | ||
220 | }, | ||
221 | /*test*/ | ||
222 | }; | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
src/assets/imgs/bottom-grassland.png
0 → 100644
84.4 KB
src/assets/imgs/btn.png
0 → 100644
7.9 KB
src/assets/imgs/btn2.png
0 → 100644
4.19 KB
src/assets/imgs/checkbox-checked.png
0 → 100644
770 Bytes
src/assets/imgs/checkbox-uncheck.png
0 → 100644
313 Bytes
src/assets/imgs/draw-down.png
0 → 100644
390 Bytes
src/assets/imgs/head-leap.png
0 → 100644
57.6 KB
src/assets/imgs/icon-01.png
0 → 100644
2.45 KB
src/assets/imgs/icon-02.png
0 → 100644
2.89 KB
src/assets/imgs/icon-03.png
0 → 100644
4.05 KB
src/assets/imgs/icon-04.png
0 → 100644
4.24 KB
src/assets/imgs/idx-head.jpg
0 → 100644
636 KB
src/assets/imgs/leap-01.png
0 → 100644
18.6 KB
src/assets/imgs/leap-02.png
0 → 100644
35.9 KB
src/assets/imgs/leap-03.png
0 → 100644
86.7 KB
src/assets/imgs/prize.png
0 → 100644
312 KB
src/assets/imgs/rule.png
0 → 100644
104 KB
src/assets/imgs/title-bg.png
0 → 100644
12.3 KB
src/assets/imgs/walfare-qrcode.png
0 → 100644
16.1 KB
src/assets/imgs/welfare-bg.jpg
0 → 100644
105 KB
src/assets/imgs/welfare-cj.png
0 → 100644
239 KB
src/assets/imgs/welfare-qy.png
0 → 100644
319 KB
src/assets/imgs/welfare-top.jpg
0 → 100644
120 KB
src/components/biz-model/biz-model.vue
0 → 100644
1 | <template> | ||
2 | <van-overlay :show="show" > | ||
3 | |||
4 | </van-overlay> | ||
5 | </template> | ||
6 | |||
7 | <script> | ||
8 | import Vue from "vue"; | ||
9 | import { Overlay } from "vant"; | ||
10 | Vue.use(Overlay); | ||
11 | |||
12 | export default { | ||
13 | props: ["value"], | ||
14 | data() { | ||
15 | return { | ||
16 | model: this.value, | ||
17 | show: false | ||
18 | }; | ||
19 | }, | ||
20 | methods: {}, | ||
21 | created() {} | ||
22 | }; | ||
23 | </script> | ||
24 | |||
25 | <style lang="less" scoped> | ||
26 | </style> |
src/components/bottom-tools/bottom-tools.vue
0 → 100644
1 | <template> | ||
2 | <div class="bottom-panel"> | ||
3 | <div class="bottom-tool-container"> | ||
4 | <div class="item" v-bind:class="{activity : activityIndex == 1}" @click="itemSelect(1)"> | ||
5 | <div class="white-bg"> | ||
6 | <div class="icon icon-01"></div> | ||
7 | </div> | ||
8 | <div class="name">大赛介绍</div> | ||
9 | </div> | ||
10 | <div class="item" v-bind:class="{activity : activityIndex == 2}" @click="itemSelect(2)"> | ||
11 | <div class="white-bg"> | ||
12 | <div class="icon icon-02"></div> | ||
13 | </div> | ||
14 | <div class="name">我要报名</div> | ||
15 | </div> | ||
16 | <div class="item" v-bind:class="{activity : activityIndex == 3}" @click="itemSelect(3)"> | ||
17 | <div class="white-bg"> | ||
18 | <div class="icon icon-03"></div> | ||
19 | </div> | ||
20 | <div class="name">人气评选</div> | ||
21 | </div> | ||
22 | <div class="item" v-bind:class="{activity : activityIndex == 4}" @click="itemSelect(4)"> | ||
23 | <div class="white-bg"> | ||
24 | <div class="icon icon-04"></div> | ||
25 | </div> | ||
26 | <div class="name">更多福利</div> | ||
27 | </div> | ||
28 | </div> | ||
29 | </div> | ||
30 | </template> | ||
31 | |||
32 | <script> | ||
33 | export default { | ||
34 | props: ["value"], | ||
35 | data() { | ||
36 | return { | ||
37 | activityIndex: this.value | ||
38 | }; | ||
39 | }, | ||
40 | methods: { | ||
41 | itemSelect(index) { | ||
42 | if (this.activityIndex == index) { | ||
43 | return; | ||
44 | } | ||
45 | this.activityIndex = index; | ||
46 | switch (this.activityIndex) { | ||
47 | case 1: | ||
48 | this.$router.push("/"); | ||
49 | break; | ||
50 | case 2: | ||
51 | this.$router.push("/sign"); | ||
52 | break; | ||
53 | case 3: | ||
54 | this.$router.push("/list"); | ||
55 | break; | ||
56 | case 4: | ||
57 | this.$router.push("/welfare"); | ||
58 | break; | ||
59 | } | ||
60 | this.$emit("selectChange", this.activityIndex); | ||
61 | } | ||
62 | }, | ||
63 | created() { | ||
64 | if (!this.activityIndex) { | ||
65 | this.activityIndex = 1; | ||
66 | } | ||
67 | } | ||
68 | }; | ||
69 | </script> | ||
70 | |||
71 | <style lang="less" scoped> | ||
72 | .bottom-panel { | ||
73 | z-index: 999; | ||
74 | position: fixed; | ||
75 | bottom: 0; | ||
76 | height: 165px; | ||
77 | width: 750px; | ||
78 | background: url(../../assets/imgs/bottom-grassland.png) no-repeat; | ||
79 | background-size: 100% auto; | ||
80 | background-position: bottom; | ||
81 | } | ||
82 | .bottom-tool-container { | ||
83 | margin: auto; | ||
84 | width: 680px; | ||
85 | display: flex; | ||
86 | justify-content: space-between; | ||
87 | } | ||
88 | |||
89 | .item { | ||
90 | width: 140px; | ||
91 | .icon { | ||
92 | margin: auto; | ||
93 | width: 86px; | ||
94 | height: 86px; | ||
95 | } | ||
96 | |||
97 | .icon-01 { | ||
98 | background: url(../../assets/imgs/icon-01.png); | ||
99 | background-size: 100%; | ||
100 | } | ||
101 | .icon-02 { | ||
102 | background: url(../../assets/imgs/icon-02.png); | ||
103 | background-size: 100%; | ||
104 | } | ||
105 | .icon-03 { | ||
106 | background: url(../../assets/imgs/icon-03.png); | ||
107 | background-size: 100%; | ||
108 | } | ||
109 | .icon-04 { | ||
110 | background: url(../../assets/imgs/icon-04.png); | ||
111 | background-size: 100%; | ||
112 | } | ||
113 | |||
114 | .name { | ||
115 | width: 100%; | ||
116 | text-align: center; | ||
117 | color: #fff; | ||
118 | font-size: 24px; | ||
119 | } | ||
120 | .white-bg { | ||
121 | margin: auto; | ||
122 | padding-top: 7px; | ||
123 | background-color: transparent; | ||
124 | width: 110px; | ||
125 | height: 103px; | ||
126 | border-radius: 55px; | ||
127 | } | ||
128 | } | ||
129 | |||
130 | .activity { | ||
131 | .white-bg { | ||
132 | background-color: #fff !important; | ||
133 | } | ||
134 | } | ||
135 | </style> |
1 | <template> | 1 | <template> |
2 | <div class="home">home</div> | 2 | <div class="home"> |
3 | <!-- <div class="title"></div> | ||
4 | <div class="sys-btn btn-margin">我要报名</div> | ||
5 | <div class="rule"></div> | ||
6 | <div class="prize"></div> | ||
7 | <div class="leap-01"></div> | ||
8 | <div class="leap-02"></div> | ||
9 | <div class="leap-03"></div> | ||
10 | <div class="remain"></div> | ||
11 | <bottom-tool v-model="activityIndex"></bottom-tool>--> | ||
12 | </div> | ||
3 | </template> | 13 | </template> |
4 | 14 | ||
5 | <script> | 15 | <script> |
16 | let urls = { | ||
17 | login: "/jiajiaCHApi/app/login" | ||
18 | }; | ||
19 | import { store, httpPost } from "@/api/fetch-api.js"; | ||
20 | |||
6 | export default { | 21 | export default { |
7 | name: 'home' | 22 | name: "home", |
8 | } | 23 | data() { |
24 | return { | ||
25 | activityIndex: 1, | ||
26 | loginParam: { | ||
27 | openid: "", | ||
28 | accessToken: "" | ||
29 | } | ||
30 | }; | ||
31 | }, | ||
32 | methods: { | ||
33 | init() { | ||
34 | if (store.getSession()) { | ||
35 | this.$router.push("/index"); | ||
36 | } else { | ||
37 | let params = this.analysisParams(); | ||
38 | if (params["openId"]) { | ||
39 | this.loginParam.openid = params["openId"]; | ||
40 | this.loginParam.accessToken = params["access_token"]; | ||
41 | this.login(); | ||
42 | } else { | ||
43 | store.toWxLogin(); | ||
44 | } | ||
45 | } | ||
46 | }, | ||
47 | analysisParams() { | ||
48 | let params = {}; | ||
49 | var query = window.location.search.substring(1); | ||
50 | var vars = query.split("&"); | ||
51 | for (var i = 0; i < vars.length; i++) { | ||
52 | var pair = vars[i].split("="); | ||
53 | params[pair[0]] = pair[1]; | ||
54 | } | ||
55 | return params; | ||
56 | }, | ||
57 | login() { | ||
58 | httpPost({ url: urls.login, data: this.loginParam }).then(res => { | ||
59 | store.putSession(res.sessionId); | ||
60 | let path = store.getRedirectUrl(); | ||
61 | path = !path ? "/index" : path; | ||
62 | store.delRedirectUrl(); | ||
63 | this.$router.push(path); | ||
64 | }); | ||
65 | } | ||
66 | }, | ||
67 | created() { | ||
68 | this.init(); | ||
69 | } | ||
70 | }; | ||
9 | </script> | 71 | </script> |
10 | 72 | ||
11 | <style lang="scss" scoped> | 73 | <style lang="scss" scoped> |
12 | .home { | 74 | .home { |
75 | position: relative; | ||
13 | text-align: center; | 76 | text-align: center; |
77 | background-color: #74cb35; | ||
14 | } | 78 | } |
15 | </style> | 79 | </style> | ... | ... |
src/pages/demo/index.js
deleted
100644 → 0
1 | import api from '../../api/api' | ||
2 | import { | ||
3 | httpGet, | ||
4 | httpPost | ||
5 | } from '../../api/fetch-api.js' | ||
6 | |||
7 | export default { | ||
8 | data() { | ||
9 | return { | ||
10 | key: 'value' | ||
11 | } | ||
12 | }, | ||
13 | components: {}, | ||
14 | methods: { | ||
15 | initData() {} | ||
16 | }, | ||
17 | mounted() {}, | ||
18 | created() { | ||
19 | console.log("demo created"); | ||
20 | } | ||
21 | } | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
src/pages/demo/index.scss
deleted
100644 → 0
1 | @import './../../styles/support'; |
src/pages/demo/index.vue
deleted
100644 → 0
1 | |||
2 | <template> | ||
3 | <div class="page"> | ||
4 | <div class="app__bgc bgc"></div> | ||
5 | <div class="app__bg bg"></div> | ||
6 | <div class="app__content main"> | ||
7 | <div class="top-space"></div> | ||
8 | <div class="content"> | ||
9 | <span class="iconfont iconclose">demo</span> | ||
10 | </div> | ||
11 | </div> | ||
12 | </div> | ||
13 | </template> | ||
14 | |||
15 | <script src="./index.js"></script> | ||
16 | <style lang="scss" scoped> | ||
17 | // @import './index.scss'; | ||
18 | </style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
src/pages/draw/index.vue
0 → 100644
File mode changed
src/pages/index/index.vue
0 → 100644
1 | <template> | ||
2 | <div class="home"> | ||
3 | <div class="title"></div> | ||
4 | <div class="sys-btn btn-margin" @click="toSign">立即报名</div> | ||
5 | <div class="rule"></div> | ||
6 | <div class="prize"></div> | ||
7 | <div class="leap-01"></div> | ||
8 | <div class="leap-02"></div> | ||
9 | <div class="leap-03"></div> | ||
10 | <div class="remain"></div> | ||
11 | <bottom-tool v-model="activityIndex"></bottom-tool> | ||
12 | </div> | ||
13 | </template> | ||
14 | |||
15 | <script> | ||
16 | import BottomTool from "@/components/bottom-tools/bottom-tools"; | ||
17 | |||
18 | export default { | ||
19 | name: "home", | ||
20 | data() { | ||
21 | return { | ||
22 | activityIndex: 1 | ||
23 | }; | ||
24 | }, | ||
25 | methods : { | ||
26 | toSign(){ | ||
27 | this.$router.push("/sign") | ||
28 | } | ||
29 | }, | ||
30 | components: { | ||
31 | BottomTool | ||
32 | } | ||
33 | }; | ||
34 | </script> | ||
35 | |||
36 | <style lang="scss" scoped> | ||
37 | .home { | ||
38 | position: relative; | ||
39 | text-align: center; | ||
40 | background-color: #74cb35; | ||
41 | } | ||
42 | .title { | ||
43 | width: 750px; | ||
44 | height: 955px; | ||
45 | background: url(../../assets/imgs/idx-head.jpg); | ||
46 | background-size: 100%; | ||
47 | } | ||
48 | .rule { | ||
49 | width: 689px; | ||
50 | height: 672px; | ||
51 | background: url(../../assets/imgs/rule.png); | ||
52 | background-size: 100%; | ||
53 | margin: auto; | ||
54 | margin-top: 26px; | ||
55 | } | ||
56 | .prize { | ||
57 | width: 684px; | ||
58 | height: 1570px; | ||
59 | background: url(../../assets/imgs/prize.png); | ||
60 | background-size: 100%; | ||
61 | margin: auto; | ||
62 | margin-top: 40px; | ||
63 | } | ||
64 | .btn-margin { | ||
65 | margin-top: 10px; | ||
66 | } | ||
67 | .leap-01 { | ||
68 | width: 87px; | ||
69 | height: 216px; | ||
70 | background: url(../../assets/imgs/leap-01.png); | ||
71 | background-size: 100%; | ||
72 | position: absolute; | ||
73 | right: 0; | ||
74 | top: 990px; | ||
75 | } | ||
76 | .leap-02 { | ||
77 | width: 138px; | ||
78 | height: 290px; | ||
79 | background: url(../../assets/imgs/leap-02.png); | ||
80 | background-size: 100%; | ||
81 | position: absolute; | ||
82 | right: 0; | ||
83 | top: 1665px; | ||
84 | } | ||
85 | .leap-03 { | ||
86 | width: 750px; | ||
87 | height: 355px; | ||
88 | background: url(../../assets/imgs/leap-03.png); | ||
89 | background-size: 100%; | ||
90 | position: absolute; | ||
91 | bottom: 0px; | ||
92 | } | ||
93 | .remain{ | ||
94 | height: 0px; | ||
95 | } | ||
96 | </style> |
src/pages/list/index.vue
0 → 100644
File mode changed
src/pages/sign/components/EditModel.vue
0 → 100644
1 | <template> | ||
2 | <div class="editClass"> | ||
3 | <div class="sys-container-panel content"> | ||
4 | <div class="container-title">我要报名</div> | ||
5 | <div class="head-line"></div> | ||
6 | |||
7 | <div class="text-container space"> | ||
8 | <div class="label">选手姓名:</div> | ||
9 | <div class="form-item"> | ||
10 | <input v-model="formData.name" placeholder="请填写参赛者姓名" /> | ||
11 | </div> | ||
12 | </div> | ||
13 | |||
14 | <div class="text-container space"> | ||
15 | <div class="label">所属地区:</div> | ||
16 | <div class="inline-group inline-group-width"> | ||
17 | <div class="form-item inline-group inline-02" @click="selectCityHandler"> | ||
18 | <div class="label">{{formData.province ? formData.province : "请选择"}}</div> | ||
19 | <div class="icon-draw-down"></div> | ||
20 | </div> | ||
21 | <div class="form-item inline-group inline-02" @click="selectCityHandler"> | ||
22 | <div class="label">{{formData.city ? formData.city : "请选择"}}</div> | ||
23 | <div class="icon-draw-down"></div> | ||
24 | </div> | ||
25 | </div> | ||
26 | </div> | ||
27 | |||
28 | <div class="text-container space"> | ||
29 | <div class="label">个人简介:</div> | ||
30 | <div class="form-item"> | ||
31 | <input v-model="formData.profile" placeholder="可填写参赛者获取过荣誉、特殊才艺技能等" /> | ||
32 | </div> | ||
33 | </div> | ||
34 | |||
35 | <div class="text-container space"> | ||
36 | <div class="label">竞赛宣言:</div> | ||
37 | <div class="form-item"> | ||
38 | <input v-model="formData.slogan" placeholder="参赛口号,不超过8个字" /> | ||
39 | </div> | ||
40 | </div> | ||
41 | <div class="text-container space"> | ||
42 | <div class="label">家长姓名:</div> | ||
43 | <div class="form-item"> | ||
44 | <input v-model="formData.parentName" placeholder="请填写父亲/母亲称呼" /> | ||
45 | </div> | ||
46 | </div> | ||
47 | <div class="text-container space"> | ||
48 | <div class="label">联系方式:</div> | ||
49 | <div class="form-item"> | ||
50 | <input v-model="formData.parentMobile" placeholder="请填写正确手机号码" /> | ||
51 | </div> | ||
52 | </div> | ||
53 | <div class="text-container space"> | ||
54 | <div class="label">照片/视频:</div> | ||
55 | <div class="item-group top"> | ||
56 | <div> | ||
57 | <upload-item v-model="formData.worksList"></upload-item> | ||
58 | </div> | ||
59 | <div class="tips">可上传1-3张照片,首张默认为海报图</div> | ||
60 | </div> | ||
61 | </div> | ||
62 | </div> | ||
63 | <div class="sys-btn-02" :class="{disabled : !autoRegister}" @click="submitFormHandler">确认提交</div> | ||
64 | |||
65 | <div class="center base-margin auto-register-tips" @click="acceptRegisterHandler"> | ||
66 | <div class="icon-register" :class="{activity : autoRegister}"></div> | ||
67 | <div class="tips">自动注册为立白集团会员,立享会员权益,详见“更多福利”</div> | ||
68 | </div> | ||
69 | |||
70 | <van-popup position="bottom" :style="{ height: '40%' }" v-model="area.show"> | ||
71 | <van-area | ||
72 | :area-list="areaList" | ||
73 | :columns-num="2" | ||
74 | title="选择城市" | ||
75 | :value="formData.cityCode" | ||
76 | @cancel="area.show = false" | ||
77 | @confirm="confirmSelectCityHandler" | ||
78 | /> | ||
79 | </van-popup> | ||
80 | </div> | ||
81 | </template> | ||
82 | |||
83 | <script> | ||
84 | let urls = { | ||
85 | area: "https://api.k.wxpai.cn/bizproxy/kdapi/area", | ||
86 | submit: "/jiajiaCHApi/app/works/submit" | ||
87 | }; | ||
88 | |||
89 | import UploadItem from "./UploadItem"; | ||
90 | import { httpGet, httpPost } from "@/api/fetch-api"; | ||
91 | import AreaList from "@/api/area"; | ||
92 | |||
93 | import Vue from "vue"; | ||
94 | import { Toast } from "vant"; | ||
95 | import { Area } from "vant"; | ||
96 | import { Popup } from "vant"; | ||
97 | |||
98 | Vue.use(Popup); | ||
99 | Vue.use(Area); | ||
100 | Vue.use(Toast); | ||
101 | |||
102 | export default { | ||
103 | props: ["value"], | ||
104 | data() { | ||
105 | return { | ||
106 | autoRegister: true, | ||
107 | successModelVisiable: true, | ||
108 | area: { | ||
109 | show: false | ||
110 | }, | ||
111 | formData: this.value | ||
112 | }; | ||
113 | }, | ||
114 | methods: { | ||
115 | selectCityHandler() { | ||
116 | if (!this.formData.cityCode) { | ||
117 | this.formData.cityCode = "110100"; | ||
118 | } | ||
119 | this.area.show = true; | ||
120 | }, | ||
121 | confirmSelectCityHandler(res) { | ||
122 | let province = res[0]; | ||
123 | let city = res[1]; | ||
124 | if (!city) { | ||
125 | return; | ||
126 | } | ||
127 | this.formData.province = province.name; | ||
128 | this.formData.provinceCode = province.code; | ||
129 | this.formData.city = city.name; | ||
130 | this.formData.cityCode = city.code; | ||
131 | this.area.show = false; | ||
132 | }, | ||
133 | acceptRegisterHandler() { | ||
134 | this.autoRegister = !this.autoRegister; | ||
135 | if (!this.autoRegister) { | ||
136 | } | ||
137 | }, | ||
138 | submitFormHandler() { | ||
139 | if (!this.autoRegister) { | ||
140 | return; | ||
141 | } | ||
142 | if (!this.formData.name) { | ||
143 | Toast("请填写“参数者姓名”"); | ||
144 | return; | ||
145 | } | ||
146 | if (!this.formData.province) { | ||
147 | Toast("请选择“所属地区”"); | ||
148 | return; | ||
149 | } | ||
150 | if (!this.formData.profile) { | ||
151 | Toast("请填写“个人简介”"); | ||
152 | return; | ||
153 | } | ||
154 | if (!this.formData.slogan) { | ||
155 | Toast("请填写“竞赛宣言”"); | ||
156 | return; | ||
157 | } | ||
158 | if (this.formData.slogan.length > 8) { | ||
159 | Toast("“竞赛宣言”不要超过8个字"); | ||
160 | return; | ||
161 | } | ||
162 | if (!this.formData.parentName) { | ||
163 | Toast("请填写“家长姓名”"); | ||
164 | return; | ||
165 | } | ||
166 | if (!this.formData.parentMobile) { | ||
167 | Toast("请填写“联系方式”"); | ||
168 | return; | ||
169 | } | ||
170 | if ( | ||
171 | this.formData.parentMobile.indexOf("1") != 0 || | ||
172 | this.formData.parentMobile.length != 11 | ||
173 | ) { | ||
174 | Toast("请填写正确的“联系方式”"); | ||
175 | return; | ||
176 | } | ||
177 | if (!this.formData.worksList || this.formData.worksList.length == 0) { | ||
178 | Toast("请上传作品"); | ||
179 | return; | ||
180 | } | ||
181 | |||
182 | Toast.loading({ | ||
183 | mask: true, | ||
184 | message: "数据提交中..." | ||
185 | }); | ||
186 | httpPost({ url: urls.submit, data: this.formData }).then(res => { | ||
187 | Toast.clear(); | ||
188 | this.$emit("submit", res); | ||
189 | }); | ||
190 | } | ||
191 | }, | ||
192 | computed: { | ||
193 | areaList() { | ||
194 | return AreaList; | ||
195 | } | ||
196 | }, | ||
197 | components: { | ||
198 | UploadItem | ||
199 | }, | ||
200 | created() {} | ||
201 | }; | ||
202 | </script> | ||
203 | |||
204 | <style lang="scss" scoped> | ||
205 | .content { | ||
206 | margin: 85px auto 60px auto; | ||
207 | padding-bottom: 60px; | ||
208 | |||
209 | .head-line { | ||
210 | height: 60px; | ||
211 | } | ||
212 | |||
213 | .edit { | ||
214 | width: 630px; | ||
215 | text-align: right; | ||
216 | u { | ||
217 | font-size: 24px; | ||
218 | color: #5db288; | ||
219 | position: relative; | ||
220 | z-index: 1000; | ||
221 | } | ||
222 | } | ||
223 | |||
224 | .swipe { | ||
225 | width: 630px; | ||
226 | height: 320px; | ||
227 | margin: auto; | ||
228 | border: 2px solid #82acae; | ||
229 | border-radius: 30px; | ||
230 | } | ||
231 | |||
232 | .space { | ||
233 | margin-top: 20px !important; | ||
234 | } | ||
235 | .top { | ||
236 | display: flex; | ||
237 | align-items: flex-start !important; | ||
238 | } | ||
239 | |||
240 | .inline-group-width { | ||
241 | width: 500px; | ||
242 | } | ||
243 | |||
244 | .inline-group { | ||
245 | display: flex; | ||
246 | justify-content: space-between; | ||
247 | align-items: center; | ||
248 | } | ||
249 | |||
250 | .text-container { | ||
251 | display: flex; | ||
252 | align-items: center; | ||
253 | width: 620px; | ||
254 | margin: auto; | ||
255 | |||
256 | .inline { | ||
257 | width: 315px !important; | ||
258 | } | ||
259 | |||
260 | .inline-02 { | ||
261 | width: 180px !important; | ||
262 | padding: 0 30px; | ||
263 | .label { | ||
264 | font-size: 20px; | ||
265 | } | ||
266 | } | ||
267 | |||
268 | .right { | ||
269 | justify-content: flex-end !important; | ||
270 | } | ||
271 | |||
272 | .label { | ||
273 | min-width: 128px; | ||
274 | font-size: 20px; | ||
275 | text-align: left; | ||
276 | } | ||
277 | .msg { | ||
278 | color: #303531; | ||
279 | font-size: 24px; | ||
280 | text-align: left; | ||
281 | } | ||
282 | .primay { | ||
283 | font-size: 32px !important; | ||
284 | font-weight: 600; | ||
285 | color: #ff9e30; | ||
286 | } | ||
287 | |||
288 | .form-item { | ||
289 | width: 500px; | ||
290 | height: 52px; | ||
291 | border: 1px solid #82acae; | ||
292 | background-color: #addfe1; | ||
293 | border-radius: 26px; | ||
294 | line-height: 52px; | ||
295 | display: flex; | ||
296 | align-items: center; | ||
297 | |||
298 | input { | ||
299 | margin-left: 25px; | ||
300 | line-height: 52px; | ||
301 | height: 52px; | ||
302 | border: none; | ||
303 | width: 90%; | ||
304 | height: 100%; | ||
305 | background-color: transparent; | ||
306 | position: relative; | ||
307 | z-index: 1000; | ||
308 | font-size: 22px; | ||
309 | } | ||
310 | } | ||
311 | } | ||
312 | |||
313 | input::-webkit-input-placeholder { | ||
314 | color: #4f9984; | ||
315 | font-size: 18px; | ||
316 | } | ||
317 | |||
318 | } | ||
319 | |||
320 | .view-btn-group { | ||
321 | display: flex; | ||
322 | width: 730px; | ||
323 | margin: auto; | ||
324 | justify-content: space-between; | ||
325 | margin-bottom: 200px; | ||
326 | |||
327 | .sys-btn-02 { | ||
328 | width: 300px; | ||
329 | line-height: 90px; | ||
330 | } | ||
331 | } | ||
332 | |||
333 | .auto-register-tips { | ||
334 | width: 700px; | ||
335 | margin: auto; | ||
336 | } | ||
337 | |||
338 | .icon-draw-down { | ||
339 | width: 30px; | ||
340 | height: 18px; | ||
341 | background: url(../../../assets/imgs/draw-down.png) no-repeat; | ||
342 | background-size: 100%; | ||
343 | } | ||
344 | |||
345 | .base-margin { | ||
346 | margin-top: 40px; | ||
347 | } | ||
348 | |||
349 | .icon-register { | ||
350 | width: 30px; | ||
351 | height: 30px; | ||
352 | background: url(../../../assets/imgs/checkbox-uncheck.png) no-repeat; | ||
353 | background-size: 100%; | ||
354 | } | ||
355 | |||
356 | .icon-register.activity { | ||
357 | width: 30px; | ||
358 | height: 30px; | ||
359 | background: url(../../../assets/imgs/checkbox-checked.png) no-repeat; | ||
360 | background-size: 100%; | ||
361 | } | ||
362 | |||
363 | .center { | ||
364 | display: flex; | ||
365 | justify-content: center; | ||
366 | align-items: center; | ||
367 | } | ||
368 | |||
369 | .disabled { | ||
370 | filter: grayscale(100%); | ||
371 | } | ||
372 | |||
373 | .tips { | ||
374 | font-size: 20px; | ||
375 | color: #064e39; | ||
376 | padding-left: 10px; | ||
377 | text-align: left; | ||
378 | } | ||
379 | </style> |
src/pages/sign/components/UploadItem.vue
0 → 100644
1 | <template> | ||
2 | <div> | ||
3 | <div class="img-container" v-for="(item,index) in fileList" :key="index"> | ||
4 | <img :src="item.worksUrl" /> | ||
5 | <i class="van-icon van-icon-delete" @click="deleteImageHandler(index)"></i> | ||
6 | </div> | ||
7 | <van-uploader | ||
8 | ref="vanUploader" | ||
9 | class="uploader" | ||
10 | :after-read="uploadSumit" | ||
11 | v-if="!fileList || fileList.length < 3" | ||
12 | >+</van-uploader> | ||
13 | </div> | ||
14 | </template> | ||
15 | |||
16 | |||
17 | |||
18 | <script> | ||
19 | import { request } from "@/api/fetch-api.js"; | ||
20 | |||
21 | import Vue from "vue"; | ||
22 | import { Uploader } from "vant"; | ||
23 | Vue.use(Uploader); | ||
24 | |||
25 | /** | ||
26 | * 外层插件可通过监听:v-on:before-upload;v-on:after-upload两个事件监听上传结果 | ||
27 | * after-upload(success, src) | ||
28 | */ | ||
29 | |||
30 | export default { | ||
31 | props: ["value"], | ||
32 | data() { | ||
33 | return { | ||
34 | fileList: this.value, | ||
35 | uploadUrl: "https://api.k.wxpai.cn/bizproxy/kdapi/file/upload", | ||
36 | }; | ||
37 | }, | ||
38 | methods: { | ||
39 | uploadSumit(params) { | ||
40 | console.log(params); | ||
41 | let data = { | ||
42 | path: "/pro/jiajiaChildrenHost", | ||
43 | file: params.file | ||
44 | }; | ||
45 | request | ||
46 | .form(this.uploadUrl, data) | ||
47 | .then(result => { | ||
48 | let uploadResult = { | ||
49 | worksUrl: result.data.content, | ||
50 | worksType: params.file.type.indexOf("image") >= 0 ? "pic" : "video" | ||
51 | }; | ||
52 | if (!this.fileList) { | ||
53 | this.fileList = []; | ||
54 | } | ||
55 | this.fileList.push(uploadResult); | ||
56 | this.$emit("input", this.fileList); | ||
57 | }) | ||
58 | .catch(res => {}); | ||
59 | }, | ||
60 | deleteImageHandler(index) { | ||
61 | this.fileList.splice(index, 1); | ||
62 | } | ||
63 | }, | ||
64 | computed: { | ||
65 | currentValue: function() { | ||
66 | return this.value; | ||
67 | } | ||
68 | } | ||
69 | }; | ||
70 | </script> | ||
71 | |||
72 | <style lang="scss" scoped> | ||
73 | .uploader { | ||
74 | border: 1px solid #82acae; | ||
75 | border-radius: 6px; | ||
76 | position: relative; | ||
77 | overflow: hidden; | ||
78 | padding: 10px; | ||
79 | background-color: #addfe1; | ||
80 | width: 120px; | ||
81 | min-height: 120px; | ||
82 | font-size: 40px; | ||
83 | line-height: 120px; | ||
84 | text-align: center; | ||
85 | font-weight: bold; | ||
86 | } | ||
87 | |||
88 | .img-container { | ||
89 | border: 1px solid #82acae; | ||
90 | border-radius: 6px; | ||
91 | position: relative; | ||
92 | overflow: hidden; | ||
93 | padding: 10px; | ||
94 | background-color: #addfe1; | ||
95 | width: 120px; | ||
96 | text-align: center; | ||
97 | font-weight: bold; | ||
98 | margin-bottom: 10px; | ||
99 | img { | ||
100 | width: 100%; | ||
101 | } | ||
102 | |||
103 | .van-icon { | ||
104 | background-color: rgba($color: #000000, $alpha: 0.3); | ||
105 | position: absolute; | ||
106 | right: 10px; | ||
107 | bottom: 5px; | ||
108 | font-size: 40px; | ||
109 | } | ||
110 | } | ||
111 | |||
112 | .avatar { | ||
113 | max-width: 120px; | ||
114 | max-height: 120px; | ||
115 | display: block; | ||
116 | } | ||
117 | </style> |
src/pages/sign/components/ViewModel.vue
0 → 100644
1 | <template> | ||
2 | <div class="viewClass"> | ||
3 | <div class="sys-container-panel content"> | ||
4 | <div class="container-title">我要报名</div> | ||
5 | <div class="head-line"></div> | ||
6 | <div class="edit"> | ||
7 | <u @click="formEditHandler">信息编辑</u> | ||
8 | </div> | ||
9 | <div class="swipe"> | ||
10 | <van-swipe :autoplay="5000"> | ||
11 | <van-swipe-item v-for="(works, index) in formData.worksList" :key="index"> | ||
12 | <img :src="works.worksUrl" /> | ||
13 | </van-swipe-item> | ||
14 | </van-swipe> | ||
15 | </div> | ||
16 | <div class="text-container space"> | ||
17 | <div class="text-container inline"> | ||
18 | <div class="label">参数编号:</div> | ||
19 | <div class="msg">{{formData.worksNo}}</div> | ||
20 | </div> | ||
21 | |||
22 | <div class="text-container inline right"> | ||
23 | <div class="label">目前人气值:</div> | ||
24 | <div class="msg primay">{{formData.praiseNumber}}</div> | ||
25 | </div> | ||
26 | </div> | ||
27 | |||
28 | <div class="text-container space"> | ||
29 | <div class="label">来自城市:</div> | ||
30 | <div class="msg">{{formData.province}} {{formData.city}}</div> | ||
31 | </div> | ||
32 | |||
33 | <div class="text-container space top"> | ||
34 | <div class="label">我的简介:</div> | ||
35 | <div class="msg">{{formData.profile}}</div> | ||
36 | </div> | ||
37 | |||
38 | <div class="text-container space top"> | ||
39 | <div class="label">竞赛宣言:</div> | ||
40 | <div class="msg">{{formData.slogan}}</div> | ||
41 | </div> | ||
42 | |||
43 | <div class="privacy"> | ||
44 | <hr /> | ||
45 | <div class="text-container space top"> | ||
46 | <div class="label">家长称呼:</div> | ||
47 | <div class="msg">{{formData.parentName}}</div> | ||
48 | </div> | ||
49 | </div> | ||
50 | </div> | ||
51 | |||
52 | <div class="view-btn-group"> | ||
53 | <div class="sys-btn-02" @click="selfPraiseHandler">投自己一票</div> | ||
54 | <div class="sys-btn-02" @click="showShareHandler">呼叫亲友团</div> | ||
55 | </div> | ||
56 | </div> | ||
57 | </template> | ||
58 | |||
59 | <script> | ||
60 | let urls = {}; | ||
61 | |||
62 | import { httpGet, httpPost } from "@/api/fetch-api"; | ||
63 | |||
64 | import Vue from "vue"; | ||
65 | import { Toast } from "vant"; | ||
66 | import { Popup } from "vant"; | ||
67 | |||
68 | Vue.use(Popup); | ||
69 | Vue.use(Toast); | ||
70 | |||
71 | export default { | ||
72 | props: ["value"], | ||
73 | data() { | ||
74 | return { | ||
75 | formData: this.value | ||
76 | }; | ||
77 | }, | ||
78 | methods: { | ||
79 | formEditHandler() { | ||
80 | this.$emit("edit"); | ||
81 | }, | ||
82 | selfPraiseHandler() { | ||
83 | // 自己点赞 | ||
84 | }, | ||
85 | showShareHandler() { | ||
86 | // 出现分享层 | ||
87 | } | ||
88 | }, | ||
89 | created() { | ||
90 | console.log("view model === ", this.formData); | ||
91 | } | ||
92 | }; | ||
93 | </script> | ||
94 | |||
95 | <style lang="scss" scoped> | ||
96 | .content { | ||
97 | margin: 85px auto 60px auto; | ||
98 | padding-bottom: 60px; | ||
99 | |||
100 | .head-line { | ||
101 | height: 60px; | ||
102 | } | ||
103 | |||
104 | .edit { | ||
105 | width: 630px; | ||
106 | text-align: right; | ||
107 | u { | ||
108 | font-size: 24px; | ||
109 | color: #5db288; | ||
110 | position: relative; | ||
111 | z-index: 1000; | ||
112 | } | ||
113 | } | ||
114 | |||
115 | .swipe { | ||
116 | width: 630px; | ||
117 | height: 320px; | ||
118 | margin: auto; | ||
119 | border: 2px solid #82acae; | ||
120 | border-radius: 30px; | ||
121 | |||
122 | img { | ||
123 | max-height: 300px; | ||
124 | max-width: 600px; | ||
125 | } | ||
126 | } | ||
127 | |||
128 | .space { | ||
129 | margin-top: 20px !important; | ||
130 | } | ||
131 | .top { | ||
132 | display: flex; | ||
133 | align-items: flex-start !important; | ||
134 | } | ||
135 | |||
136 | .inline-group-width { | ||
137 | width: 500px; | ||
138 | } | ||
139 | |||
140 | .inline-group { | ||
141 | display: flex; | ||
142 | justify-content: space-between; | ||
143 | align-items: center; | ||
144 | } | ||
145 | |||
146 | .text-container { | ||
147 | display: flex; | ||
148 | align-items: center; | ||
149 | width: 620px; | ||
150 | margin: auto; | ||
151 | |||
152 | .inline { | ||
153 | width: 315px !important; | ||
154 | } | ||
155 | |||
156 | .inline-02 { | ||
157 | width: 180px !important; | ||
158 | padding: 0 30px; | ||
159 | .label { | ||
160 | font-size: 20px; | ||
161 | } | ||
162 | } | ||
163 | |||
164 | .right { | ||
165 | justify-content: flex-end !important; | ||
166 | } | ||
167 | |||
168 | .label { | ||
169 | min-width: 128px; | ||
170 | font-size: 20px; | ||
171 | text-align: left; | ||
172 | } | ||
173 | .msg { | ||
174 | color: #303531; | ||
175 | font-size: 24px; | ||
176 | text-align: left; | ||
177 | } | ||
178 | .primay { | ||
179 | font-size: 32px !important; | ||
180 | font-weight: 600; | ||
181 | color: #ff9e30; | ||
182 | } | ||
183 | } | ||
184 | |||
185 | .privacy { | ||
186 | width: 630px; | ||
187 | margin: auto; | ||
188 | hr { | ||
189 | border-top: 3px dashed #d4d1c5; | ||
190 | margin: 60px auto; | ||
191 | } | ||
192 | } | ||
193 | } | ||
194 | |||
195 | .view-btn-group { | ||
196 | display: flex; | ||
197 | width: 730px; | ||
198 | margin: auto; | ||
199 | justify-content: space-between; | ||
200 | margin-bottom: 200px; | ||
201 | |||
202 | .sys-btn-02 { | ||
203 | width: 300px; | ||
204 | line-height: 90px; | ||
205 | } | ||
206 | } | ||
207 | |||
208 | .auto-register-tips { | ||
209 | width: 700px; | ||
210 | margin: auto; | ||
211 | } | ||
212 | |||
213 | .icon-draw-down { | ||
214 | width: 30px; | ||
215 | height: 18px; | ||
216 | background: url(../../../assets/imgs/draw-down.png) no-repeat; | ||
217 | background-size: 100%; | ||
218 | } | ||
219 | </style> |
src/pages/sign/index.vue
0 → 100644
1 | <template> | ||
2 | <div class="home"> | ||
3 | <div class="head-leap"></div> | ||
4 | |||
5 | <ViewModel v-model="formData" v-if="init && !formEdit" v-on:edit="formEdit=true"></ViewModel> | ||
6 | <EditModel v-model="formData" v-if="init && formEdit" v-on:submit="initActivity"></EditModel> | ||
7 | |||
8 | <div class="bottom-line"></div> | ||
9 | |||
10 | <bottom-tool v-model="activityIndex"></bottom-tool> | ||
11 | |||
12 | <!-- <van-popup class="messagePopue" v-model="successModelVisiable" :close-on-click-overlay="false"> | ||
13 | <div></div> | ||
14 | </van-popup>--> | ||
15 | </div> | ||
16 | </template> | ||
17 | |||
18 | <script> | ||
19 | let urls = { | ||
20 | myWork: "/jiajiaCHApi/app/works", | ||
21 | area: "https://api.k.wxpai.cn/bizproxy/kdapi/area" | ||
22 | }; | ||
23 | |||
24 | import BottomTool from "@/components/bottom-tools/bottom-tools"; | ||
25 | import EditModel from "./components/EditModel"; | ||
26 | import ViewModel from "./components/ViewModel"; | ||
27 | |||
28 | import { httpGet, httpPost } from "@/api/fetch-api"; | ||
29 | import AreaList from "@/api/area"; | ||
30 | |||
31 | import Vue from "vue"; | ||
32 | import { Toast } from "vant"; | ||
33 | import { Area } from "vant"; | ||
34 | import { Popup } from "vant"; | ||
35 | import { Swipe, SwipeItem } from "vant"; | ||
36 | |||
37 | Vue.use(Popup); | ||
38 | Vue.use(Area); | ||
39 | Vue.use(Toast); | ||
40 | Vue.use(Swipe).use(SwipeItem); | ||
41 | |||
42 | export default { | ||
43 | name: "home", | ||
44 | data() { | ||
45 | return { | ||
46 | activityIndex: 2, | ||
47 | formEdit: false, | ||
48 | init: false, | ||
49 | isMy: 1, | ||
50 | successModelVisiable: true, | ||
51 | formData: { | ||
52 | name: "", | ||
53 | province: "", | ||
54 | provinceCode: "", | ||
55 | city: "", | ||
56 | cityCode: "", | ||
57 | profile: "", | ||
58 | slogan: "", | ||
59 | parentName: "", | ||
60 | parentMobile: "", | ||
61 | worksList: [] | ||
62 | } | ||
63 | }; | ||
64 | }, | ||
65 | methods: { | ||
66 | initActivity() { | ||
67 | Toast.loading({ | ||
68 | mask: true, | ||
69 | message: "加载中..." | ||
70 | }); | ||
71 | |||
72 | httpGet({ url: urls.myWork }).then(res => { | ||
73 | this.init = true; | ||
74 | Toast.clear(); | ||
75 | this.formData = res.data || {}; | ||
76 | if (!res.data) { | ||
77 | this.formEdit = true; | ||
78 | } else { | ||
79 | this.formEdit = false; | ||
80 | } | ||
81 | }); | ||
82 | } | ||
83 | }, | ||
84 | components: { | ||
85 | BottomTool, | ||
86 | EditModel, | ||
87 | ViewModel | ||
88 | }, | ||
89 | created() { | ||
90 | this.initActivity(); | ||
91 | } | ||
92 | }; | ||
93 | </script> | ||
94 | |||
95 | <style lang="scss" scoped> | ||
96 | .home { | ||
97 | position: relative; | ||
98 | text-align: center; | ||
99 | } | ||
100 | |||
101 | .head-leap { | ||
102 | width: 750px; | ||
103 | height: 231px; | ||
104 | background: url(../../assets/imgs/head-leap.png); | ||
105 | background-size: 100%; | ||
106 | position: fixed; | ||
107 | left: 0; | ||
108 | top: 0; | ||
109 | z-index: 999; | ||
110 | } | ||
111 | |||
112 | .bottom-line { | ||
113 | height: 250px; | ||
114 | background-color: transparent; | ||
115 | } | ||
116 | </style> |
src/pages/welfare/index.vue
0 → 100644
1 | <template> | ||
2 | <div class="home"> | ||
3 | <div class="header"></div> | ||
4 | |||
5 | <div class="qy"> | ||
6 | <div class="qrcode"> | ||
7 | <img src="../../assets/imgs/walfare-qrcode.png" /> | ||
8 | </div> | ||
9 | </div> | ||
10 | <div class="cj"> | ||
11 | <div class="sys-btn-02 btn-position" @click="toDraw">马上抽奖</div> | ||
12 | </div> | ||
13 | |||
14 | <div class="remain"></div> | ||
15 | <bottom-tool v-model="activityIndex"></bottom-tool> | ||
16 | </div> | ||
17 | </template> | ||
18 | |||
19 | <script> | ||
20 | import BottomTool from "@/components/bottom-tools/bottom-tools"; | ||
21 | |||
22 | export default { | ||
23 | name: "home", | ||
24 | data() { | ||
25 | return { | ||
26 | activityIndex: 4 | ||
27 | }; | ||
28 | }, | ||
29 | methods: { | ||
30 | toDraw() { | ||
31 | this.$router.push("/draw"); | ||
32 | } | ||
33 | }, | ||
34 | components: { | ||
35 | BottomTool | ||
36 | } | ||
37 | }; | ||
38 | </script> | ||
39 | |||
40 | <style lang="scss" scoped> | ||
41 | .home { | ||
42 | position: relative; | ||
43 | text-align: center; | ||
44 | background: url(../../assets/imgs/welfare-bg.jpg); | ||
45 | background-size: 100% auto; | ||
46 | } | ||
47 | .header { | ||
48 | width: 750px; | ||
49 | height: 247px; | ||
50 | background: url(../../assets/imgs/welfare-top.jpg); | ||
51 | background-size: 100%; | ||
52 | } | ||
53 | |||
54 | .qy { | ||
55 | width: 708px; | ||
56 | height: 1136px; | ||
57 | background: url(../../assets/imgs/welfare-qy.png); | ||
58 | background-size: 100%; | ||
59 | margin: auto; | ||
60 | margin-top: -100px; | ||
61 | position: relative; | ||
62 | |||
63 | .qrcode { | ||
64 | position: absolute; | ||
65 | width: 171px; | ||
66 | height: 171px; | ||
67 | left: 270px; | ||
68 | bottom: 140px; | ||
69 | img { | ||
70 | width: 100%; | ||
71 | } | ||
72 | } | ||
73 | } | ||
74 | |||
75 | .cj { | ||
76 | width: 718px; | ||
77 | height: 968px; | ||
78 | background: url(../../assets/imgs/welfare-cj.png); | ||
79 | background-size: 100%; | ||
80 | margin: auto; | ||
81 | margin-top: 50px; | ||
82 | position: relative; | ||
83 | } | ||
84 | |||
85 | .btn-position { | ||
86 | position: absolute; | ||
87 | bottom: 80px; | ||
88 | left: 188px; | ||
89 | } | ||
90 | |||
91 | .remain { | ||
92 | height: 150px; | ||
93 | } | ||
94 | </style> |
... | @@ -5,29 +5,53 @@ import Home from './pages/Home.vue' | ... | @@ -5,29 +5,53 @@ import Home from './pages/Home.vue' |
5 | Vue.use(Router) | 5 | Vue.use(Router) |
6 | 6 | ||
7 | const routes = [{ | 7 | const routes = [{ |
8 | path: '/', | 8 | path: '/', |
9 | name: 'home', | 9 | name: 'home', |
10 | component: Home, | 10 | component: Home, |
11 | meta: { | 11 | meta: { |
12 | title: '首页' | 12 | title: '加载中...' |
13 | } | ||
14 | }, | ||
15 | { | ||
16 | path: '/demo', | ||
17 | name: 'demo', | ||
18 | component: () => import('./pages/demo/index.vue'), | ||
19 | meta: { | ||
20 | title: '模板' | ||
21 | } | ||
22 | }, | ||
23 | { | ||
24 | path: '/about', | ||
25 | name: 'about', | ||
26 | component: () => import('./pages/About.vue'), | ||
27 | meta: { | ||
28 | title: '关于' | ||
29 | } | ||
30 | } | 13 | } |
14 | }, | ||
15 | { | ||
16 | path: '/index', | ||
17 | name: 'index', | ||
18 | component: () => import('./pages/index/index.vue'), | ||
19 | meta: { | ||
20 | title: '大赛介绍' | ||
21 | } | ||
22 | }, | ||
23 | { | ||
24 | path: '/sign', | ||
25 | name: 'sign', | ||
26 | component: () => import('./pages/sign/index.vue'), | ||
27 | meta: { | ||
28 | title: '我要报名' | ||
29 | } | ||
30 | }, | ||
31 | { | ||
32 | path: '/list', | ||
33 | name: 'list', | ||
34 | component: () => import('./pages/list/index.vue'), | ||
35 | meta: { | ||
36 | title: '人气评选' | ||
37 | } | ||
38 | }, | ||
39 | { | ||
40 | path: '/welfare', | ||
41 | name: 'welfare', | ||
42 | component: () => import('./pages/welfare/index.vue'), | ||
43 | meta: { | ||
44 | title: '更多福利' | ||
45 | } | ||
46 | }, | ||
47 | { | ||
48 | path: '/draw', | ||
49 | name: 'draw', | ||
50 | component: () => import('./pages/draw/index.vue'), | ||
51 | meta: { | ||
52 | title: '幸运抽奖' | ||
53 | } | ||
54 | } | ||
31 | ] | 55 | ] |
32 | 56 | ||
33 | // add route path | 57 | // add route path | ... | ... |
... | @@ -38,7 +38,7 @@ module.exports = { | ... | @@ -38,7 +38,7 @@ module.exports = { |
38 | 38 | ||
39 | // 它支持webPack-dev-server的所有选项 | 39 | // 它支持webPack-dev-server的所有选项 |
40 | devServer: { | 40 | devServer: { |
41 | host: "localhost", | 41 | host: "192.168.0.101", |
42 | port: 9001, // 端口号 | 42 | port: 9001, // 端口号 |
43 | https: false, // https:{type:Boolean} | 43 | https: false, // https:{type:Boolean} |
44 | open: true, //配置自动启动浏览器 | 44 | open: true, //配置自动启动浏览器 | ... | ... |
-
Please register or sign in to post a comment