no message
Showing
16 changed files
with
673 additions
and
223 deletions
.editorconfig
0 → 100644
1 | # root = true | ||
2 | |||
3 | # [*] | ||
4 | # charset = utf-8 | ||
5 | # indent_style = space | ||
6 | # indent_size = 4 | ||
7 | # end_of_line = lf | ||
8 | # insert_final_newline = true | ||
9 | # trim_trailing_whitespace = true | ||
10 | |||
11 | |||
12 | root = true; | ||
13 | |||
14 | [*] | ||
15 | # indent_style = tab | ||
16 | indent_style = space | ||
17 | # indent_size = 4 | ||
18 | indent_size = 2 | ||
19 | tab_width = 2 | ||
20 | end_of_line = lf | ||
21 | trim_trailing_whitespace = true | ||
22 | insert_final_newline = true | ||
23 | |||
24 | [*.{json,yml,wxml,html,vue,js}] | ||
25 | indent_style = tab | ||
26 | indent_size = 2 | ||
27 | tab_width = 2 | ||
28 | |||
29 | |||
30 | [README.md] | ||
31 | trim_trailing_whitespace = ignore |
... | @@ -970,9 +970,9 @@ | ... | @@ -970,9 +970,9 @@ |
970 | "dev": true | 970 | "dev": true |
971 | }, | 971 | }, |
972 | "@vant/icons": { | 972 | "@vant/icons": { |
973 | "version": "1.1.7", | 973 | "version": "1.1.13", |
974 | "resolved": "https://registry.npm.taobao.org/@vant/icons/download/@vant/icons-1.1.7.tgz", | 974 | "resolved": "https://registry.npm.taobao.org/@vant/icons/download/@vant/icons-1.1.13.tgz", |
975 | "integrity": "sha1-KVYa3/+mp1DSedzNvpppt0OTTz8=" | 975 | "integrity": "sha1-6ncpj08rGczHYQBQaKLHQ2CY5NQ=" |
976 | }, | 976 | }, |
977 | "@vue/babel-helper-vue-jsx-merge-props": { | 977 | "@vue/babel-helper-vue-jsx-merge-props": { |
978 | "version": "1.0.0", | 978 | "version": "1.0.0", |
... | @@ -1942,13 +1942,6 @@ | ... | @@ -1942,13 +1942,6 @@ |
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 | }, | ||
1952 | "asn1": { | 1945 | "asn1": { |
1953 | "version": "0.2.4", | 1946 | "version": "0.2.4", |
1954 | "resolved": "http://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", | 1947 | "resolved": "http://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", |
... | @@ -6699,13 +6692,6 @@ | ... | @@ -6699,13 +6692,6 @@ |
6699 | "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", | 6692 | "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", |
6700 | "dev": true | 6693 | "dev": true |
6701 | }, | 6694 | }, |
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 | }, | ||
6709 | "import-cwd": { | 6695 | "import-cwd": { |
6710 | "version": "2.1.0", | 6696 | "version": "2.1.0", |
6711 | "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz", | 6697 | "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz", |
... | @@ -7244,6 +7230,11 @@ | ... | @@ -7244,6 +7230,11 @@ |
7244 | "resolved": "http://registry.npm.taobao.org/js-base64/download/js-base64-2.5.1.tgz", | 7230 | "resolved": "http://registry.npm.taobao.org/js-base64/download/js-base64-2.5.1.tgz", |
7245 | "integrity": "sha1-Hvo57yxfeYC7F4St5KivLeMpESE=" | 7231 | "integrity": "sha1-Hvo57yxfeYC7F4St5KivLeMpESE=" |
7246 | }, | 7232 | }, |
7233 | "js-cookie": { | ||
7234 | "version": "2.2.1", | ||
7235 | "resolved": "https://registry.npm.taobao.org/js-cookie/download/js-cookie-2.2.1.tgz", | ||
7236 | "integrity": "sha1-aeEG3F1YBolFYpAqpbrsN0Tpsrg=" | ||
7237 | }, | ||
7247 | "js-levenshtein": { | 7238 | "js-levenshtein": { |
7248 | "version": "1.1.6", | 7239 | "version": "1.1.6", |
7249 | "resolved": "https://registry.npm.taobao.org/js-levenshtein/download/js-levenshtein-1.1.6.tgz", | 7240 | "resolved": "https://registry.npm.taobao.org/js-levenshtein/download/js-levenshtein-1.1.6.tgz", |
... | @@ -7418,64 +7409,6 @@ | ... | @@ -7418,64 +7409,6 @@ |
7418 | "invert-kv": "^2.0.0" | 7409 | "invert-kv": "^2.0.0" |
7419 | } | 7410 | } |
7420 | }, | 7411 | }, |
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 | }, | ||
7479 | "levn": { | 7412 | "levn": { |
7480 | "version": "0.3.0", | 7413 | "version": "0.3.0", |
7481 | "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", | 7414 | "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", |
... | @@ -9824,16 +9757,6 @@ | ... | @@ -9824,16 +9757,6 @@ |
9824 | "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", | 9757 | "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", |
9825 | "dev": true | 9758 | "dev": true |
9826 | }, | 9759 | }, |
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 | }, | ||
9837 | "promise-inflight": { | 9760 | "promise-inflight": { |
9838 | "version": "1.0.1", | 9761 | "version": "1.0.1", |
9839 | "resolved": "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz", | 9762 | "resolved": "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz", |
... | @@ -12516,13 +12439,13 @@ | ... | @@ -12516,13 +12439,13 @@ |
12516 | } | 12439 | } |
12517 | }, | 12440 | }, |
12518 | "vant": { | 12441 | "vant": { |
12519 | "version": "1.6.21", | 12442 | "version": "2.1.7", |
12520 | "resolved": "https://registry.npm.taobao.org/vant/download/vant-1.6.21.tgz", | 12443 | "resolved": "https://registry.npm.taobao.org/vant/download/vant-2.1.7.tgz", |
12521 | "integrity": "sha1-7MdP1p/ND6EeQX5Q9XaEsFPgyzw=", | 12444 | "integrity": "sha1-/lgbzo/yixP3pyc0OG+VRu2mtvs=", |
12522 | "requires": { | 12445 | "requires": { |
12523 | "@babel/runtime": "^7.4.3", | 12446 | "@babel/runtime": "7.x", |
12524 | "@vant/icons": "1.1.7", | 12447 | "@vant/icons": "1.1.13", |
12525 | "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0-beta.3", | 12448 | "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", |
12526 | "vue-lazyload": "1.2.3" | 12449 | "vue-lazyload": "1.2.3" |
12527 | } | 12450 | } |
12528 | }, | 12451 | }, |
... | @@ -12609,7 +12532,7 @@ | ... | @@ -12609,7 +12532,7 @@ |
12609 | }, | 12532 | }, |
12610 | "vue-lazyload": { | 12533 | "vue-lazyload": { |
12611 | "version": "1.2.3", | 12534 | "version": "1.2.3", |
12612 | "resolved": "https://registry.npm.taobao.org/vue-lazyload/download/vue-lazyload-1.2.3.tgz", | 12535 | "resolved": "https://registry.npm.taobao.org/vue-lazyload/download/vue-lazyload-1.2.3.tgz?cache=0&sync_timestamp=1565348603567&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-lazyload%2Fdownload%2Fvue-lazyload-1.2.3.tgz", |
12613 | "integrity": "sha1-kB+ewVx+bKeHgaK65KNDaGve2yw=" | 12536 | "integrity": "sha1-kB+ewVx+bKeHgaK65KNDaGve2yw=" |
12614 | }, | 12537 | }, |
12615 | "vue-loader": { | 12538 | "vue-loader": { | ... | ... |
... | @@ -18,10 +18,11 @@ | ... | @@ -18,10 +18,11 @@ |
18 | "co": "^4.6.0", | 18 | "co": "^4.6.0", |
19 | "core-js": "^2.6.5", | 19 | "core-js": "^2.6.5", |
20 | "glob": "^7.1.4", | 20 | "glob": "^7.1.4", |
21 | "js-cookie": "^2.2.1", | ||
21 | "mockjs": "^1.0.1-beta3", | 22 | "mockjs": "^1.0.1-beta3", |
22 | "postcss-px2rem": "^0.3.0", | 23 | "postcss-px2rem": "^0.3.0", |
23 | "postcss-pxtorem": "^4.0.1", | 24 | "postcss-pxtorem": "^4.0.1", |
24 | "vant": "^1.6.21", | 25 | "vant": "^2.1.7", |
25 | "vue": "^2.6.10", | 26 | "vue": "^2.6.10", |
26 | "vue-router": "^3.0.3", | 27 | "vue-router": "^3.0.3", |
27 | "vuex": "^3.0.1" | 28 | "vuex": "^3.0.1" |
... | @@ -34,8 +35,6 @@ | ... | @@ -34,8 +35,6 @@ |
34 | "babel-plugin-import": "^1.12.0", | 35 | "babel-plugin-import": "^1.12.0", |
35 | "eslint": "^5.16.0", | 36 | "eslint": "^5.16.0", |
36 | "eslint-plugin-vue": "^5.0.0", | 37 | "eslint-plugin-vue": "^5.0.0", |
37 | "less": "^3.9.0", | ||
38 | "less-loader": "^5.0.0", | ||
39 | "node-sass": "^4.12.0", | 38 | "node-sass": "^4.12.0", |
40 | "sass-loader": "^7.1.0", | 39 | "sass-loader": "^7.1.0", |
41 | "vue-template-compiler": "^2.6.10" | 40 | "vue-template-compiler": "^2.6.10" | ... | ... |
... | @@ -4,7 +4,7 @@ module.exports = ({ | ... | @@ -4,7 +4,7 @@ module.exports = ({ |
4 | file | 4 | file |
5 | }) => { | 5 | }) => { |
6 | let remUnit; | 6 | let remUnit; |
7 | // file.dirname是绝对地址,所以项目名,文件目录不能带 'vant' | 7 | // file.dirname是绝对地址,所以项目名,文件目录不能带 'vant' |
8 | if (file && file.dirname && file.dirname.indexOf("vant") > -1) { | 8 | if (file && file.dirname && file.dirname.indexOf("vant") > -1) { |
9 | remUnit = 37.5; | 9 | remUnit = 37.5; |
10 | } else { | 10 | } else { |
... | @@ -17,4 +17,4 @@ module.exports = ({ | ... | @@ -17,4 +17,4 @@ module.exports = ({ |
17 | browsers: ["last 20 versions", "android >= 4.0"] | 17 | browsers: ["last 20 versions", "android >= 4.0"] |
18 | })] | 18 | })] |
19 | }; | 19 | }; |
20 | }; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
20 | }; | ... | ... |
src/assets/imgs/award-c1.png
0 → 100644
72.3 KB
src/assets/imgs/award-c2.png
0 → 100644
33.5 KB
1 | <template> | 1 | <template> |
2 | <div class="home"> | 2 | <div class="home"> |
3 | <!-- <div class="title"></div> | 3 | <!-- <div class="title"></div> |
4 | <div class="sys-btn btn-margin">我要报名</div> | 4 | <div class="sys-btn btn-margin">我要报名</div> |
5 | <div class="rule"></div> | 5 | <div class="rule"></div> |
6 | <div class="prize"></div> | 6 | <div class="prize"></div> |
... | @@ -9,7 +9,7 @@ | ... | @@ -9,7 +9,7 @@ |
9 | <div class="leap-03"></div> | 9 | <div class="leap-03"></div> |
10 | <div class="remain"></div> | 10 | <div class="remain"></div> |
11 | <bottom-tool v-model="activityIndex"></bottom-tool>--> | 11 | <bottom-tool v-model="activityIndex"></bottom-tool>--> |
12 | </div> | 12 | </div> |
13 | </template> | 13 | </template> |
14 | 14 | ||
15 | <script> | 15 | <script> |
... | @@ -40,12 +40,29 @@ export default { | ... | @@ -40,12 +40,29 @@ export default { |
40 | return; | 40 | return; |
41 | } | 41 | } |
42 | 42 | ||
43 | // SimonFungC 检测是否跳转中奖表单页 | ||
44 | let from = params["f"]; | ||
45 | if (from == "award") { | ||
46 | let data = { | ||
47 | route: "/award", | ||
48 | params: {} | ||
49 | }; | ||
50 | localStorage.setItem( | ||
51 | "_jiajia_childrenhost_redirect", | ||
52 | JSON.stringify(data) | ||
53 | ); | ||
54 | let link = location.origin + location.pathname; | ||
55 | location.href = link; | ||
56 | return; | ||
57 | } | ||
58 | |||
43 | if (store.getSession()) { | 59 | if (store.getSession()) { |
44 | this.toNextPath(); | 60 | this.toNextPath(); |
45 | } else { | 61 | } else { |
46 | if (params["openId"]) { | 62 | if (params["openId"]) { |
47 | this.loginParam.openid = params["openId"]; | 63 | this.loginParam.openid = params["openId"]; |
48 | this.loginParam.accessToken = params["access_token"]; | 64 | this.loginParam.accessToken = params["access_token"]; |
65 | console.log("this.loginParam:",this.loginParam) | ||
49 | this.login(); | 66 | this.login(); |
50 | } else { | 67 | } else { |
51 | store.toWxLogin(); | 68 | store.toWxLogin(); | ... | ... |
src/pages/award/award.js
0 → 100644
1 | import api from '../../api/api' | ||
2 | import { | ||
3 | httpGet, | ||
4 | httpPost | ||
5 | } from '../../api/fetch-api.js' | ||
6 | import { | ||
7 | Toast, | ||
8 | Dialog | ||
9 | } from 'vant'; | ||
10 | import { | ||
11 | checkMobile | ||
12 | } from "../../utils/utils"; | ||
13 | |||
14 | let urls = { | ||
15 | index: "/jiajiaCHApi/app/index" | ||
16 | }; | ||
17 | |||
18 | export default { | ||
19 | data() { | ||
20 | return { | ||
21 | key: 'value', | ||
22 | form: { | ||
23 | username: "", | ||
24 | mobile: "", | ||
25 | address: "", | ||
26 | }, | ||
27 | userInfo: {}, | ||
28 | rank: 0, | ||
29 | } | ||
30 | }, | ||
31 | components: {}, | ||
32 | computed: { | ||
33 | isAward() { | ||
34 | let rank = this.rank; | ||
35 | return rank > 0 && rank <= 80; | ||
36 | } | ||
37 | }, | ||
38 | methods: { | ||
39 | initData() { | ||
40 | let link = location.origin + location.pathname; | ||
41 | link += "?f=award"; | ||
42 | as.setShare(link, "", "", ""); | ||
43 | this.toSign().then((result) => { | ||
44 | this.getUserInfo(); | ||
45 | }) | ||
46 | }, | ||
47 | getUserInfo() { | ||
48 | return new Promise((resolve, reject) => { | ||
49 | as.queryFunV2('queryUserInfo', { | ||
50 | openid: this.userInfo.openid || "" | ||
51 | }, res => { | ||
52 | if (res && res[0] && res[0][0] && res[0][0].openid) { | ||
53 | // console.log("this.userInfo:",this.userInfo); | ||
54 | this.userInfo.hdp_id = res[0][0].hdp_id; | ||
55 | } | ||
56 | }) | ||
57 | }) | ||
58 | }, | ||
59 | toRule() { | ||
60 | this.$router.push({ | ||
61 | path: "/" | ||
62 | }) | ||
63 | }, | ||
64 | checkSubmit() { | ||
65 | return new Promise((resolve, reject) => { | ||
66 | let { | ||
67 | username, | ||
68 | mobile, | ||
69 | address | ||
70 | } = this.form; | ||
71 | let rank = this.rank; | ||
72 | if (this.isAward) { | ||
73 | Dialog.alert({ | ||
74 | message: `您的排行是${rank}名,非获奖用户` | ||
75 | }).then(() => { | ||
76 | // on close | ||
77 | }); | ||
78 | reject(); | ||
79 | return; | ||
80 | } | ||
81 | if (!username) { | ||
82 | Toast("请填写真实姓名"); | ||
83 | reject(); | ||
84 | return; | ||
85 | } | ||
86 | if (!mobile) { | ||
87 | Toast("请填写手机号码"); | ||
88 | reject(); | ||
89 | return; | ||
90 | } | ||
91 | if (!checkMobile(mobile)) { | ||
92 | Toast("请填写有效手机号码"); | ||
93 | reject(); | ||
94 | return; | ||
95 | } | ||
96 | if (!address) { | ||
97 | Toast("请填写真实收件地址"); | ||
98 | reject(); | ||
99 | return; | ||
100 | } | ||
101 | resolve(); | ||
102 | }) | ||
103 | |||
104 | }, | ||
105 | onSubmitHandler() { | ||
106 | this.checkSubmit().then((result) => { | ||
107 | Dialog.confirm({ | ||
108 | message: '确认提交?' | ||
109 | }).then(() => { | ||
110 | Toast.loading({ | ||
111 | mask: true, | ||
112 | message: '加载中...' | ||
113 | }); | ||
114 | let data = this.form; | ||
115 | let userInfo = this.userInfo; | ||
116 | data.rank = this.rank; | ||
117 | data.id = userInfo && userInfo.hdp_id || ""; | ||
118 | data.openid = userInfo && userInfo.openid || ""; | ||
119 | data.avatar = userInfo && userInfo.avatar || ""; | ||
120 | data.nickname = userInfo && userInfo.nickname || ""; | ||
121 | data.unionid = userInfo && userInfo.unionid || ""; | ||
122 | data.userid = userInfo && userInfo.userId || ""; | ||
123 | console.log("data:", data); | ||
124 | as.saveTable('user', data, res => { | ||
125 | console.log("saveTable:", res); | ||
126 | Toast.clear(); | ||
127 | if (res && res.id) { | ||
128 | if (!this.userInfo.hdp_id) { | ||
129 | this.userInfo.hdp_id = res.id | ||
130 | } | ||
131 | Dialog.alert({ | ||
132 | title: '提交成功', | ||
133 | message: '提交成功后,我们将尽快与您联系' | ||
134 | }).then(() => {}); | ||
135 | } else { | ||
136 | Toast("网络异常,提交失败"); | ||
137 | } | ||
138 | }) | ||
139 | }).catch(() => { | ||
140 | // on cancel | ||
141 | }); | ||
142 | }); | ||
143 | }, | ||
144 | toSign() { | ||
145 | return new Promise((resolve, reject) => { | ||
146 | Toast.loading({ | ||
147 | mask: true, | ||
148 | message: "请稍等..." | ||
149 | }); | ||
150 | |||
151 | httpGet({ | ||
152 | url: urls.index | ||
153 | }).then(res => { | ||
154 | Toast.clear(); | ||
155 | this.rank = res.rank; | ||
156 | // this.rank = 30; | ||
157 | this.userInfo = res.dto; | ||
158 | this.form.username = this.userInfo && this.userInfo.userName || ""; | ||
159 | this.form.mobile = this.userInfo && this.userInfo.mobile || ""; | ||
160 | resolve(); | ||
161 | }); | ||
162 | }) | ||
163 | } | ||
164 | }, | ||
165 | mounted() {}, | ||
166 | created() { | ||
167 | this.initData(); | ||
168 | } | ||
169 | } |
src/pages/award/award.scss
0 → 100644
1 | @import './../../styles/support.scss'; | ||
2 | @import './../../styles/utils.scss'; | ||
3 | |||
4 | $contentWidth:620px; | ||
5 | |||
6 | .page { | ||
7 | |||
8 | color: #303531; | ||
9 | |||
10 | .main { | ||
11 | .top-space { | ||
12 | height: 120px; | ||
13 | } | ||
14 | |||
15 | .content { | ||
16 | |||
17 | .table { | ||
18 | width: $contentWidth; | ||
19 | // min-height: 800px; | ||
20 | border-radius: 30px; | ||
21 | background-color: #fff; | ||
22 | margin: 0 auto; | ||
23 | padding: 38px 0 48px; | ||
24 | |||
25 | .tit { | ||
26 | text-align: center; | ||
27 | font-size: 40px; | ||
28 | font-weight: 500; | ||
29 | // padding: 38px 0 0; | ||
30 | |||
31 | .t1 { | ||
32 | font-size: 24px; | ||
33 | } | ||
34 | } | ||
35 | |||
36 | .prize { | ||
37 | position: relative; | ||
38 | background-color: #ffdf1a; | ||
39 | width: 210px; | ||
40 | height: 210px; | ||
41 | border-radius: 105px; | ||
42 | margin: 20px auto 0; | ||
43 | @extend .fcc; | ||
44 | text-align: center; | ||
45 | |||
46 | .img { | ||
47 | height: 164px; | ||
48 | } | ||
49 | } | ||
50 | |||
51 | .form { | ||
52 | margin: 36px auto 0; | ||
53 | |||
54 | &-item { | ||
55 | display: flex; | ||
56 | justify-content: space-between; | ||
57 | align-items: center; | ||
58 | @extend .bb; | ||
59 | padding: 0 32px; | ||
60 | font-size: 24px; | ||
61 | margin: 32px 0; | ||
62 | |||
63 | .label { | ||
64 | width: 132px; | ||
65 | } | ||
66 | |||
67 | .label2 { | ||
68 | align-self: flex-start; | ||
69 | } | ||
70 | |||
71 | .ipt { | ||
72 | flex: 1; | ||
73 | height: 52px; | ||
74 | border: 1px solid #82acae; | ||
75 | background-color: #addfe1; | ||
76 | border-radius: 26px; | ||
77 | line-height: 52px; | ||
78 | display: flex; | ||
79 | align-items: center; | ||
80 | @extend .bb; | ||
81 | padding: 0 16px; | ||
82 | |||
83 | } | ||
84 | |||
85 | .textarea { | ||
86 | min-height: 120px; | ||
87 | } | ||
88 | |||
89 | } | ||
90 | |||
91 | .btn-wrap { | ||
92 | margin: 60px auto 0; | ||
93 | position: relative; | ||
94 | z-index: 101; | ||
95 | |||
96 | .tips{ | ||
97 | text-align: center; | ||
98 | font-size: 22px; | ||
99 | padding: 12px 0; | ||
100 | color: #333333; | ||
101 | .rule-btn{ | ||
102 | color: $colorBlue; | ||
103 | text-decoration: underline; | ||
104 | } | ||
105 | } | ||
106 | |||
107 | .submit-btn { | ||
108 | width: 342px; | ||
109 | height: 110px; | ||
110 | line-height: 100px; | ||
111 | background-image: url("../../assets/imgs/btn2.png"); | ||
112 | @extend .bis; | ||
113 | text-align: center; | ||
114 | color: #fff; | ||
115 | font-size: 40px; | ||
116 | font-weight: 600; | ||
117 | margin: 0 auto; | ||
118 | } | ||
119 | |||
120 | .disable { | ||
121 | border-radius: 55px; | ||
122 | line-height: 110px; | ||
123 | background-image: none; | ||
124 | color: #ffffff; | ||
125 | background: #c9c9c9; | ||
126 | } | ||
127 | } | ||
128 | |||
129 | |||
130 | } | ||
131 | } | ||
132 | } | ||
133 | } | ||
134 | |||
135 | .top { | ||
136 | background-image: url('../../assets/imgs/head-leap.png'); | ||
137 | @extend .bis; | ||
138 | width: 750px; | ||
139 | height: 231px; | ||
140 | position: absolute; | ||
141 | top: 0; | ||
142 | left: 0; | ||
143 | } | ||
144 | |||
145 | .bottom { | ||
146 | background-image: url('../../assets/imgs/award-c1.png'); | ||
147 | @extend .bis; | ||
148 | width: 750px; | ||
149 | height: 565px; | ||
150 | position: fixed; | ||
151 | bottom: 0; | ||
152 | left: 0; | ||
153 | } | ||
154 | |||
155 | |||
156 | } |
src/pages/award/award.vue
0 → 100644
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"></div> | ||
8 | <div class="top-space"></div> | ||
9 | <div class="content"> | ||
10 | <div class="table"> | ||
11 | <div class="tit"> | ||
12 | <div class="t1">亲爱的{{userInfo.nickname}}</div> | ||
13 | <div class="t2">恭喜获奖</div> | ||
14 | </div> | ||
15 | |||
16 | <div class="prize"> | ||
17 | <img class="img" src="../../assets/imgs/award-c2.png"> | ||
18 | </div> | ||
19 | |||
20 | <div class="form"> | ||
21 | <div class="form-item"> | ||
22 | <div class="label">收件人:</div> | ||
23 | <input v-model="form.username" class="ipt" type="text" placeholder="请填写真实姓名"> | ||
24 | </div> | ||
25 | <div class="form-item"> | ||
26 | <div class="label">联系方式:</div> | ||
27 | <input v-model="form.mobile" class="ipt" type="text" placeholder="请填写手机号码"> | ||
28 | </div> | ||
29 | <div class="form-item"> | ||
30 | <div class="label label2">收件地址:</div> | ||
31 | <textarea v-model="form.address" class="ipt textarea" placeholder="请填写真实收件地址"></textarea> | ||
32 | </div> | ||
33 | |||
34 | <div class="btn-wrap"> | ||
35 | <template v-if="!isAward"> | ||
36 | <div class="tips">您的排行是{{rank}}名,非获奖用户,详情见 | ||
37 | <span @click="toRule" class="rule-btn">大赛介绍</span> | ||
38 | </div> | ||
39 | <div class="submit-btn disable">确认提交</div> | ||
40 | </template> | ||
41 | <template v-else> | ||
42 | <div @click="onSubmitHandler" class="submit-btn">确认提交</div> | ||
43 | </template> | ||
44 | </div> | ||
45 | |||
46 | </div> | ||
47 | </div> | ||
48 | </div> | ||
49 | <div class="bottom"></div> | ||
50 | </div> | ||
51 | </div> | ||
52 | </template> | ||
53 | |||
54 | <script src="./award.js"></script> | ||
55 | <style lang="scss" scoped> | ||
56 | @import "./award.scss"; | ||
57 | </style> |
src/pages/demo/demo.js
0 → 100644
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/demo.scss
0 → 100644
1 | @import './../../styles/support'; |
src/pages/demo/demo.vue
0 → 100644
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="./demo.js"></script> | ||
16 | <style lang="scss" scoped> | ||
17 | @import "./demo.scss"; | ||
18 | </style> |
... | @@ -5,80 +5,88 @@ import Home from './pages/Home.vue' | ... | @@ -5,80 +5,88 @@ 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 | } | 13 | } |
14 | }, | 14 | }, |
15 | { | 15 | { |
16 | path: '/index', | 16 | path: '/index', |
17 | name: 'index', | 17 | name: 'index', |
18 | component: () => import('./pages/index/index.vue'), | 18 | component: () => import('./pages/index/index.vue'), |
19 | meta: { | 19 | meta: { |
20 | title: '大赛介绍' | 20 | title: '大赛介绍' |
21 | } | 21 | } |
22 | }, | 22 | }, |
23 | { | 23 | { |
24 | path: '/sign', | 24 | path: '/award', |
25 | name: 'sign', | 25 | name: 'award', |
26 | component: () => import('./pages/sign/index.vue'), | 26 | component: () => import('./pages/award/award.vue'), |
27 | meta: { | 27 | meta: { |
28 | title: '我要报名' | 28 | title: '表单填写' |
29 | } | 29 | } |
30 | }, | 30 | }, |
31 | { | 31 | { |
32 | path: '/list', | 32 | path: '/sign', |
33 | name: 'list', | 33 | name: 'sign', |
34 | component: () => import('./pages/list/index.vue'), | 34 | component: () => import('./pages/sign/index.vue'), |
35 | meta: { | 35 | meta: { |
36 | title: '人气评选' | 36 | title: '我要报名' |
37 | } | 37 | } |
38 | }, | 38 | }, |
39 | { | 39 | { |
40 | path: '/welfare', | 40 | path: '/list', |
41 | name: 'welfare', | 41 | name: 'list', |
42 | component: () => import('./pages/welfare/index.vue'), | 42 | component: () => import('./pages/list/index.vue'), |
43 | meta: { | 43 | meta: { |
44 | title: '更多福利' | 44 | title: '人气评选' |
45 | } | 45 | } |
46 | }, | 46 | }, |
47 | { | 47 | { |
48 | path: '/draw', | 48 | path: '/welfare', |
49 | name: 'draw', | 49 | name: 'welfare', |
50 | component: () => import('./pages/draw/index.vue'), | 50 | component: () => import('./pages/welfare/index.vue'), |
51 | meta: { | 51 | meta: { |
52 | title: '幸运抽奖' | 52 | title: '更多福利' |
53 | } | 53 | } |
54 | }, | 54 | }, |
55 | { | 55 | { |
56 | path: '/prize', | 56 | path: '/draw', |
57 | name: 'prize', | 57 | name: 'draw', |
58 | component: () => import('./pages/prize/index.vue'), | 58 | component: () => import('./pages/draw/index.vue'), |
59 | meta: { | 59 | meta: { |
60 | title: '我的奖品' | 60 | title: '幸运抽奖' |
61 | } | 61 | } |
62 | } | 62 | }, |
63 | { | ||
64 | path: '/prize', | ||
65 | name: 'prize', | ||
66 | component: () => import('./pages/prize/index.vue'), | ||
67 | meta: { | ||
68 | title: '我的奖品' | ||
69 | } | ||
70 | } | ||
63 | ] | 71 | ] |
64 | 72 | ||
65 | // add route path | 73 | // add route path |
66 | routes.forEach(route => { | 74 | routes.forEach(route => { |
67 | route.path = route.path || '/' + (route.name || ''); | 75 | route.path = route.path || '/' + (route.name || ''); |
68 | }); | 76 | }); |
69 | 77 | ||
70 | const router = new Router({ | 78 | const router = new Router({ |
71 | routes | 79 | routes |
72 | }); | 80 | }); |
73 | 81 | ||
74 | router.beforeEach((to, from, next) => { | 82 | router.beforeEach((to, from, next) => { |
75 | let link = location.origin + location.pathname; | 83 | let link = location.origin + location.pathname; |
76 | as.setShare(link, "", "", ""); | 84 | as.setShare(link, "", "", ""); |
77 | const title = to.meta && to.meta.title; | 85 | const title = to.meta && to.meta.title; |
78 | if (title) { | 86 | if (title) { |
79 | document.title = title; | 87 | document.title = title; |
80 | } | 88 | } |
81 | next(); | 89 | next(); |
82 | }); | 90 | }); |
83 | 91 | ||
84 | export default router; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
92 | export default router; | ... | ... |
... | @@ -203,3 +203,39 @@ | ... | @@ -203,3 +203,39 @@ |
203 | } | 203 | } |
204 | } | 204 | } |
205 | 205 | ||
206 | |||
207 | |||
208 | .bis { | ||
209 | background-repeat: no-repeat; | ||
210 | background-size: 100% 100%; | ||
211 | } | ||
212 | |||
213 | |||
214 | //flex 布局和 子元素 对其方式 | ||
215 | .fl { | ||
216 | display: flex; | ||
217 | } | ||
218 | |||
219 | .fj { | ||
220 | display: flex; | ||
221 | justify-content: space-between; | ||
222 | } | ||
223 | |||
224 | //水平和垂直居中 | ||
225 | .fcc { | ||
226 | display: flex; | ||
227 | justify-content: center; | ||
228 | align-items: center; | ||
229 | } | ||
230 | |||
231 | // 为元素设定的宽度和高度决定了元素的边框盒。 | ||
232 | .bb { | ||
233 | box-sizing: border-box; | ||
234 | } | ||
235 | |||
236 | // 满屏 | ||
237 | .fullp { | ||
238 | width: 100%; | ||
239 | height: 100%; | ||
240 | } | ||
241 | ... | ... |
1 | 1 | // const merge = require("webpack-merge"); | |
2 | const MiniCssExtractPlugin = require('mini-css-extract-plugin'); | 2 | const MiniCssExtractPlugin = require('mini-css-extract-plugin'); |
3 | const Timestamp = new Date().getTime(); | 3 | // 打包目录 |
4 | |||
5 | // 打包目录 | ||
6 | let webpack_public_path = 'dist' | 4 | let webpack_public_path = 'dist' |
7 | if (process.env.NODE_ENV === 'production') { | 5 | if (process.env.NODE_ENV === 'production') { |
8 | webpack_public_path = process.env.VUE_APP_TITLE | 6 | webpack_public_path = process.env.VUE_APP_TITLE |
9 | } | 7 | } |
8 | const Timestamp = new Date().getTime(); | ||
10 | module.exports = { | 9 | module.exports = { |
11 | // 部署生产环境和开发环境下的URL。 | 10 | configureWebpack: { // webpack 配置 |
12 | // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上 | 11 | // 修改打包后js文件名 |
13 | //例如 https://www.my-app.com/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.my-app.com/my-app/,则设置 baseUrl 为 /my-app/。 | 12 | output: { // 输出重构 打包编译后的 文件名称 【模块名称.版本号.时间戳】 |
14 | //baseUrl 从 Vue CLI 3.3 起已弃用,请使用publicPath | 13 | filename: `static/js/[name].${Timestamp}.js`, |
15 | //baseUrl: process.env.NODE_ENV === "production" ? "./" : "/", | 14 | chunkFilename: `static/js/[name].${Timestamp}.js` |
16 | configureWebpack: { // webpack 配置 | 15 | }, |
17 | // 修改打包后js文件名 | 16 | // 修改打包后css文件名 |
18 | output: { // 输出重构 打包编译后的 文件名称 【模块名称.版本号.时间戳】 | 17 | plugins: [ |
19 | filename: `static/js/[name].${Timestamp}.js`, | 18 | new MiniCssExtractPlugin({ |
20 | chunkFilename: `static/js/[name].${Timestamp}.js` | 19 | filename: `static/css/[name].${Timestamp}.css`, |
21 | }, | 20 | chunkFilename: `static/css/[name].${Timestamp}.css` |
22 | // 修改打包后css文件名 | 21 | }) |
23 | plugins: [ | 22 | ] |
24 | new MiniCssExtractPlugin({ | 23 | }, |
25 | filename: `static/css/[name].${Timestamp}.css`, | 24 | // 修改打包后img文件名 |
26 | chunkFilename: `static/css/[name].${Timestamp}.css` | 25 | // chainWebpack: config => { |
27 | }) | 26 | // config.module |
28 | ] | 27 | // .rule('images') |
29 | }, | 28 | // .use('url-loader') |
29 | // .tap(options => { | ||
30 | // return { | ||
31 | // limit: 4096, | ||
32 | // fallback: { | ||
33 | // loader: 'file-loader', | ||
34 | // options: { | ||
35 | // name: `img/[name].${Timestamp}.[ext]` | ||
36 | // } | ||
37 | // } | ||
38 | // }; | ||
39 | // }) | ||
40 | // }, | ||
30 | 41 | ||
31 | publicPath: process.env.NODE_ENV === "dev" ? "/" : "https://kd.cdn.xyiyang.com/app/f2mb/", | 42 | // 部署生产环境和开发环境下的URL。 |
32 | // publicPath: process.env.NODE_ENV === "dev" ? "/" : "./", | 43 | // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上 |
44 | //例如 https://www.my-app.com/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.my-app.com/my-app/,则设置 baseUrl 为 /my-app/。 | ||
45 | //baseUrl 从 Vue CLI 3.3 起已弃用,请使用publicPath | ||
46 | //baseUrl: process.env.NODE_ENV === "production" ? "./" : "/", | ||
47 | publicPath: process.env.NODE_ENV === "dev" ? "/" : "./", | ||
33 | 48 | ||
34 | // outputDir: 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致) | 49 | // outputDir: 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致) |
35 | outputDir: webpack_public_path, | 50 | outputDir: webpack_public_path, |
36 | //用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) | 51 | //用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) |
37 | assetsDir: "assets", | 52 | assetsDir: "static", |
38 | //指定生成的 index.html 的输出路径 (打包之后,改变系统默认的index.html的文件名) | 53 | //指定生成的 index.html 的输出路径 (打包之后,改变系统默认的index.html的文件名) |
39 | // indexPath: "myIndex.html", | 54 | // indexPath: "myIndex.html", |
40 | //默认情况下,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存。你可以通过将这个选项设为 false 来关闭文件名哈希。(false的时候就是让原来的文件名不改变) | 55 | //默认情况下,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存。你可以通过将这个选项设为 false 来关闭文件名哈希。(false的时候就是让原来的文件名不改变) |
41 | filenameHashing: false, | 56 | filenameHashing: false, |
42 | 57 | ||
43 | // lintOnSave:{ type:Boolean default:true } 问你是否使用eslint | 58 | // lintOnSave:{ type:Boolean default:true } 问你是否使用eslint |
44 | lintOnSave: true, | 59 | lintOnSave: true, |
45 | //如果你想要在生产构建时禁用 eslint-loader,你可以用如下配置 | 60 | //如果你想要在生产构建时禁用 eslint-loader,你可以用如下配置 |
46 | // lintOnSave: process.env.NODE_ENV !== 'production', | 61 | // lintOnSave: process.env.NODE_ENV !== 'production', |
47 | 62 | ||
48 | //是否使用包含运行时编译器的 Vue 构建版本。设置为 true 后你就可以在 Vue 组件中使用 template 选项了,但是这会让你的应用额外增加 10kb 左右。(默认false) | 63 | //是否使用包含运行时编译器的 Vue 构建版本。设置为 true 后你就可以在 Vue 组件中使用 template 选项了,但是这会让你的应用额外增加 10kb 左右。(默认false) |
49 | // runtimeCompiler: false, | 64 | // runtimeCompiler: false, |
50 | 65 | ||
51 | /** | 66 | /** |
52 | * 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。 | 67 | * 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。 |
53 | * 打包之后发现map文件过大,项目文件体积很大,设置为false就可以不输出map文件 | 68 | * 打包之后发现map文件过大,项目文件体积很大,设置为false就可以不输出map文件 |
54 | * map文件的作用在于:项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。 | 69 | * map文件的作用在于:项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。 |
55 | * 有了map就可以像未加密的代码一样,准确的输出是哪一行哪一列有错。 | 70 | * 有了map就可以像未加密的代码一样,准确的输出是哪一行哪一列有错。 |
56 | * */ | 71 | * */ |
57 | productionSourceMap: false, | 72 | productionSourceMap: false, |
58 | 73 | ||
59 | // 它支持webPack-dev-server的所有选项 | ||
60 | devServer: { | ||
61 | // host: "192.168.0.101", | ||
62 | host: "localhost", | ||
63 | port: 9001, // 端口号 | ||
64 | https: false, // https:{type:Boolean} | ||
65 | open: true, //配置自动启动浏览器 | ||
66 | // proxy: 'http://localhost:4000' // 配置跨域处理,只有一个代理 | ||
67 | } | ||
68 | }; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
74 | // 它支持webPack-dev-server的所有选项 | ||
75 | devServer: { | ||
76 | // host: "localhost", | ||
77 | port: 9001, // 端口号 | ||
78 | https: false, // https:{type:Boolean} | ||
79 | open: true, //配置自动启动浏览器 | ||
80 | // proxy: 'http://localhost:4000' // 配置跨域处理,只有一个代理 | ||
81 | } | ||
82 | }; | ... | ... |
-
Please register or sign in to post a comment