c581f236 by joe

备份

1 parent a5fe4200
...@@ -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>
......
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
......
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>
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>
......
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
1 @import './../../styles/support';
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
File mode changed
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>
File mode changed
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>
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>
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>
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>
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
......
...@@ -202,3 +202,4 @@ ...@@ -202,3 +202,4 @@
202 background-color: $colorBlack; 202 background-color: $colorBlack;
203 } 203 }
204 } 204 }
205
......
...@@ -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, //配置自动启动浏览器
......