yuantianjiao 6 年前
父节点
当前提交
e65e962dc1

+ 30
- 3
package-lock.json 查看文件

1949
         }
1949
         }
1950
       }
1950
       }
1951
     },
1951
     },
1952
+    "base64-arraybuffer": {
1953
+      "version": "0.1.5",
1954
+      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
1955
+      "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
1956
+    },
1952
     "base64-js": {
1957
     "base64-js": {
1953
       "version": "1.3.0",
1958
       "version": "1.3.0",
1954
       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
1959
       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
2579
       "dev": true
2584
       "dev": true
2580
     },
2585
     },
2581
     "chromedriver": {
2586
     "chromedriver": {
2582
-      "version": "2.44.0",
2583
-      "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-2.44.0.tgz",
2584
-      "integrity": "sha512-/lDFxpSc3mJG/+RF657qDVa3XbfwG8+X2x0Y3kVkvZe6u6aZg+zTMHeGoQziUQGPaDQ9sj8sFYv4duv/AS6y7A==",
2587
+      "version": "2.45.0",
2588
+      "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-2.45.0.tgz",
2589
+      "integrity": "sha512-Qwmcr+2mU3INeR6mVsQ8gO00vZpL8ZeTJLclX44C0dcs88jrSDgckPqbG+qkVX+m2L/aOPnF0lYgPdOiOiLt5w==",
2585
       "dev": true,
2590
       "dev": true,
2586
       "requires": {
2591
       "requires": {
2587
         "del": "3.0.0",
2592
         "del": "3.0.0",
3234
       "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
3239
       "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
3235
       "dev": true
3240
       "dev": true
3236
     },
3241
     },
3242
+    "css-line-break": {
3243
+      "version": "1.0.1",
3244
+      "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.0.1.tgz",
3245
+      "integrity": "sha1-GfIGOjPpX7KDG4ZEbAuAwYivRQo=",
3246
+      "requires": {
3247
+        "base64-arraybuffer": "0.1.5"
3248
+      }
3249
+    },
3237
     "css-loader": {
3250
     "css-loader": {
3238
       "version": "0.28.11",
3251
       "version": "0.28.11",
3239
       "resolved": "http://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz",
3252
       "resolved": "http://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz",
6339
         }
6352
         }
6340
       }
6353
       }
6341
     },
6354
     },
6355
+    "html2canvas": {
6356
+      "version": "1.0.0-alpha.12",
6357
+      "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-alpha.12.tgz",
6358
+      "integrity": "sha1-OxmS48mz9WBjw1/WIElPN+uohRM=",
6359
+      "requires": {
6360
+        "css-line-break": "1.0.1"
6361
+      }
6362
+    },
6342
     "htmlparser2": {
6363
     "htmlparser2": {
6343
       "version": "3.3.0",
6364
       "version": "3.3.0",
6344
       "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
6365
       "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
15412
       "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
15433
       "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
15413
       "dev": true
15434
       "dev": true
15414
     },
15435
     },
15436
+    "weixin-jsapi": {
15437
+      "version": "1.1.0",
15438
+      "resolved": "https://registry.npmjs.org/weixin-jsapi/-/weixin-jsapi-1.1.0.tgz",
15439
+      "integrity": "sha1-UalaIiTFnR2PAv3bxt5S2hazRLM=",
15440
+      "dev": true
15441
+    },
15415
     "whatwg-encoding": {
15442
     "whatwg-encoding": {
15416
       "version": "1.0.5",
15443
       "version": "1.0.5",
15417
       "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
15444
       "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",

+ 2
- 1
package.json 查看文件

15
   },
15
   },
16
   "dependencies": {
16
   "dependencies": {
17
     "axios": "^0.18.0",
17
     "axios": "^0.18.0",
18
+    "html2canvas": "^1.0.0-alpha.12",
18
     "mescroll.js": "^1.3.8",
19
     "mescroll.js": "^1.3.8",
19
     "vant": "^1.4.5",
20
     "vant": "^1.4.5",
20
     "vue": "^2.5.2",
21
     "vue": "^2.5.2",
38
     "babel-preset-stage-2": "^6.22.0",
39
     "babel-preset-stage-2": "^6.22.0",
39
     "babel-register": "^6.22.0",
40
     "babel-register": "^6.22.0",
40
     "chalk": "^2.0.1",
41
     "chalk": "^2.0.1",
41
-    "chromedriver": "^2.27.2",
42
+    "chromedriver": "^2.45.0",
42
     "copy-webpack-plugin": "^4.0.1",
43
     "copy-webpack-plugin": "^4.0.1",
43
     "cross-spawn": "^5.0.1",
44
     "cross-spawn": "^5.0.1",
44
     "css-loader": "^0.28.0",
45
     "css-loader": "^0.28.0",

+ 122
- 95
src/pages/home/index.vue 查看文件

1
 <template>
1
 <template>
2
-  <div class="mainPage">
2
+  <div class="mainPage" id="canvasPage">
3
     <div class="imgArr" :hidden="true">
3
     <div class="imgArr" :hidden="true">
4
       <img
4
       <img
5
         v-for="item in imgTotal"
5
         v-for="item in imgTotal"
6
         :key="item"
6
         :key="item"
7
-        :src="'https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-' + item + '.png'"
7
+        :src="'http://wx.jinchengjiaye.com/h5-2019/static/images/icon-' + item + '.png'"
8
         @load="imgLoad"
8
         @load="imgLoad"
9
         alt
9
         alt
10
       >
10
       >
11
     </div>
11
     </div>
12
     <div class="subPage" v-if="showPage">
12
     <div class="subPage" v-if="showPage">
13
       <img
13
       <img
14
-        src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-12.png"
14
+        src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-12.png"
15
         style="z-index: 3;"
15
         style="z-index: 3;"
16
         class="centerLabel cover"
16
         class="centerLabel cover"
17
         alt
17
         alt
18
       >
18
       >
19
       <img
19
       <img
20
-        src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-10.png"
20
+        src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-10.png"
21
         class="icon10"
21
         class="icon10"
22
         style="position: absolute;left:9vw;top:3.7vh;z-index:100;width: 31.2vw;"
22
         style="position: absolute;left:9vw;top:3.7vh;z-index:100;width: 31.2vw;"
23
+        v-if="imgSrc === null"
23
         :class="{'active': currentPage !== 0}"
24
         :class="{'active': currentPage !== 0}"
24
         alt
25
         alt
25
       >
26
       >
26
-      <div class="page1" :class="{'show': currentPage === 1}">
27
+      <div class="page1" :class="{'show': currentPage === 1 && imgSrc === null}">
27
         <img
28
         <img
28
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-3.png"
29
+          src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-3.png"
29
           class="icon3"
30
           class="icon3"
30
           style="position: absolute;left:0;top:0;z-index:2;width: 87.5vw;"
31
           style="position: absolute;left:0;top:0;z-index:2;width: 87.5vw;"
31
           :class="{'active': currentPage === 1}"
32
           :class="{'active': currentPage === 1}"
32
           alt
33
           alt
33
         >
34
         >
34
         <img
35
         <img
35
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-4.png"
36
+          src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-4.png"
36
           class="icon4"
37
           class="icon4"
37
           style="position: absolute;right:0;bottom:0;z-index:2;width: 77vw;"
38
           style="position: absolute;right:0;bottom:0;z-index:2;width: 77vw;"
38
           :class="{'active': currentPage === 1}"
39
           :class="{'active': currentPage === 1}"
40
         >
41
         >
41
         <div class="centerLabel" style="z-index: 3">
42
         <div class="centerLabel" style="z-index: 3">
42
           <img
43
           <img
43
-            src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-11.png"
44
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-11.png"
44
             class="icon11"
45
             class="icon11"
45
             style="width: 36.5vw;"
46
             style="width: 36.5vw;"
46
             :class="{'active': currentPage === 1}"
47
             :class="{'active': currentPage === 1}"
51
             style="overflow: visible;position: relative;-webkit-transform-style: preserve-3d !important;transform-style: preserve-3d !important;"
52
             style="overflow: visible;position: relative;-webkit-transform-style: preserve-3d !important;transform-style: preserve-3d !important;"
52
           >
53
           >
53
             <img
54
             <img
54
-              src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-2.png"
55
+              src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-2.png"
55
               class="icon2"
56
               class="icon2"
56
               style="width:68vw;transform: translateY(.2rem);-webkit-transform: translateY(.2rem);"
57
               style="width:68vw;transform: translateY(.2rem);-webkit-transform: translateY(.2rem);"
57
               :class="{'active': currentPage === 1}"
58
               :class="{'active': currentPage === 1}"
61
             <div class="circle circle2 centerLabel" :class="{'active': currentPage === 1}"></div>
62
             <div class="circle circle2 centerLabel" :class="{'active': currentPage === 1}"></div>
62
           </div>
63
           </div>
63
           <img
64
           <img
64
-            src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-13.png"
65
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-13.png"
65
             class="icon13"
66
             class="icon13"
66
             style="width:56vw;display:inline-block;margin-top: .4rem;"
67
             style="width:56vw;display:inline-block;margin-top: .4rem;"
67
             :class="{'active': currentPage === 1}"
68
             :class="{'active': currentPage === 1}"
68
             alt
69
             alt
69
           >
70
           >
70
           <img
71
           <img
71
-            src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-1.png"
72
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-1.png"
72
             class="icon1"
73
             class="icon1"
73
             style="width: 35.7vw;margin-top: .2rem;"
74
             style="width: 35.7vw;margin-top: .2rem;"
74
             :class="{'active': currentPage === 1}"
75
             :class="{'active': currentPage === 1}"
77
           >
78
           >
78
         </div>
79
         </div>
79
       </div>
80
       </div>
80
-      <div class="page2" :class="{'show': currentPage === 2}">
81
+      <div class="page2" :class="{'show': currentPage === 2 && imgSrc === null}">
81
         <img
82
         <img
82
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-7.png"
83
+          src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-7.png"
83
           class="icon7"
84
           class="icon7"
84
           style="position: absolute;left:0;top:0;z-index:2;width: 100vw;"
85
           style="position: absolute;left:0;top:0;z-index:2;width: 100vw;"
85
           :class="{'active': currentPage === 2}"
86
           :class="{'active': currentPage === 2}"
86
           alt
87
           alt
87
         >
88
         >
88
         <img
89
         <img
89
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-6.png"
90
+          src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-6.png"
90
           class="icon6"
91
           class="icon6"
91
           style="position: absolute;right:0;bottom:0;z-index:2;width: 100vw;"
92
           style="position: absolute;right:0;bottom:0;z-index:2;width: 100vw;"
92
           :class="{'active': currentPage === 2}"
93
           :class="{'active': currentPage === 2}"
93
           alt
94
           alt
94
         >
95
         >
95
         <img
96
         <img
96
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-5.png"
97
+          src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-5.png"
97
           class="icon5"
98
           class="icon5"
98
           style="position: absolute;right:9vw;bottom:3.5vh;z-index:11;width: 43.7vw;"
99
           style="position: absolute;right:9vw;bottom:3.5vh;z-index:11;width: 43.7vw;"
99
           :class="{'active': currentPage === 2}"
100
           :class="{'active': currentPage === 2}"
100
           alt
101
           alt
101
         >
102
         >
103
+        <div class="nextStep" v-if="userSelectFlag.length" @click="nextStep">
104
+          <span>下一步</span>
105
+        </div>
102
         <div class="centerLabel">
106
         <div class="centerLabel">
103
           <img
107
           <img
104
-            src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-13.png"
108
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-13.png"
105
             class="icon13"
109
             class="icon13"
106
             style="width:66vw;display:inline-block;margin-top: .4rem;"
110
             style="width:66vw;display:inline-block;margin-top: .4rem;"
107
             :class="{'active': currentPage === 2}"
111
             :class="{'active': currentPage === 2}"
108
             alt
112
             alt
109
           >
113
           >
110
           <div class="content">
114
           <div class="content">
111
-            <span class="flagItem flagItem1" :class="{'active': currentPage === 2}">努力的目标</span>
112
-            <span class="flagItem flagItem2" :class="{'active': currentPage === 2}">努力的目标</span>
113
-            <span class="flagItem flagItem3" :class="{'active': currentPage === 2}">努力的目标</span>
114
-            <span class="flagItem flagItem4" :class="{'active': currentPage === 2}">努力的目标</span>
115
-            <span class="flagItem flagItem5" :class="{'active': currentPage === 2}">努力的目标</span>
116
-            <span class="flagItem flagItem6" :class="{'active': currentPage === 2}">努力的目标</span>
117
-            <span class="flagItem flagItem7" :class="{'active': currentPage === 2}">努力的目标</span>
118
-            <span class="flagItem flagItem8" :class="{'active': currentPage === 2}">努力的目标</span>
119
-            <span class="flagItem flagItem9" :class="{'active': currentPage === 2}">努力的目标</span>
120
-            <span class="flagItem flagItem10" :class="{'active': currentPage === 2}">努力的目标</span>
115
+            <span
116
+              v-for="(item, index) in selectFlag"
117
+              :key="index"
118
+              class="flagItem"
119
+              :class="{'active': currentPage === 2, [`flagItem${index+1}`]: true, 'selected': item.select}"
120
+              @click="selectFlagItem(item, index)"
121
+            >{{item.value}}</span>
121
           </div>
122
           </div>
122
         </div>
123
         </div>
123
       </div>
124
       </div>
124
-      <div class="page3" :hidden="currentPage !== 3">
125
-        <img
126
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-8.png"
127
-          class="icon8"
128
-          style="position: absolute;left:0;bottom:0;z-index:2;width: 100vw;"
129
-          alt
130
-        >
131
-        <img
132
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-9.png"
133
-          class="icon9"
134
-          style="position: absolute;left:0;bottom:0;z-index:3;width: 100vw;"
135
-          alt
136
-        >
137
-        <div class="centerLabel">
138
-          <span>亲爱的你,新年好</span>
139
-          <span>亲爱的你,新年好</span>
140
-          <span>亲爱的你,新年好</span>
141
-          <span>亲爱的你,新年好</span>
142
-          <span>亲爱的你,新年好</span>
143
-          <span>亲爱的你,新年好</span>
144
-          <span>亲爱的你,新年好</span>
145
-          <span>亲爱的你,新年好</span>
146
-          <span>亲爱的你,新年好</span>
147
-          <span>亲爱的你,新年好</span>
148
-        </div>
149
-      </div>
150
-      <div class="page4" :hidden="currentPage !== 4">
125
+      <div class="page3" :class="{'show': currentPage === 3 && imgSrc === null}">
151
         <img
126
         <img
152
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-8.png"
127
+          src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-8.png"
153
           class="icon8"
128
           class="icon8"
154
           style="position: absolute;left:0;bottom:0;z-index:2;width: 100vw;"
129
           style="position: absolute;left:0;bottom:0;z-index:2;width: 100vw;"
155
           alt
130
           alt
156
         >
131
         >
157
         <img
132
         <img
158
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-9.png"
133
+          src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-9.png"
159
           class="icon9"
134
           class="icon9"
160
           style="position: absolute;left:0;bottom:0;z-index:3;width: 100vw;"
135
           style="position: absolute;left:0;bottom:0;z-index:3;width: 100vw;"
161
           alt
136
           alt
162
         >
137
         >
163
-        <div class="centerLabel">
164
-          <span>亲爱的你,新年好</span>
165
-          <span>亲爱的你,新年好</span>
166
-          <span>亲爱的你,新年好</span>
167
-          <span></span>
168
-          <span>亲爱的你,新年好</span>
169
-          <span>亲爱的你,新年好</span>
170
-          <span>亲爱的你,新年好</span>
171
-          <span>亲爱的你,新年好</span>
172
-          <span>亲爱的你,新年好</span>
173
-          <span>亲爱的你,新年好</span>
174
-        </div>
175
-      </div>
176
-      <div class="page5" :hidden="currentPage !== 5">
177
-        <img
178
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-8.png"
179
-          class="icon8"
180
-          style="position: absolute;left:0;bottom:0;z-index:2;width: 100vw;"
181
-          alt
182
-        >
183
-        <img
184
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-9.png"
185
-          class="icon9"
186
-          style="position: absolute;left:0;bottom:0;z-index:3;width: 100vw;"
187
-          alt
188
-        >
189
-        <div class="userIcon">
138
+        <div class="userIcon" style="z-index: 20;">
190
           <a>
139
           <a>
191
             <img :src="userIcon" class="centerLabel cover" alt>
140
             <img :src="userIcon" class="centerLabel cover" alt>
192
           </a>
141
           </a>
193
         </div>
142
         </div>
194
-        <div class="centerLabel">
195
-          <span>亲爱的你,新年好</span>
196
-          <span>亲爱的你,新年好</span>
197
-          <span>亲爱的你,新年好</span>
143
+        <div class="centerLabel" style="z-index: 20">
144
+          <img
145
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-15.png"
146
+            width="100%"
147
+            alt
148
+          >
198
           <span></span>
149
           <span></span>
199
-          <span>亲爱的你,新年好</span>
200
-          <span>亲爱的你,新年好</span>
201
-          <span>亲爱的你,新年好</span>
202
-          <span>亲爱的你,新年好</span>
203
-          <span>亲爱的你,新年好</span>
204
-          <span>亲爱的你,新年好</span>
150
+          <img
151
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-16.png"
152
+            v-if="showEndTextIndex === 0"
153
+            width="100%"
154
+            alt
155
+          >
156
+          <img
157
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-17.png"
158
+            v-if="showEndTextIndex === 1"
159
+            width="100%"
160
+            alt
161
+          >
162
+          <img
163
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-18.png"
164
+            v-if="showEndTextIndex === 2"
165
+            width="100%"
166
+            alt
167
+          >
205
         </div>
168
         </div>
206
         <div class="bottomText">
169
         <div class="bottomText">
207
           <div class="qrCode">
170
           <div class="qrCode">
208
             <a>
171
             <a>
209
-              <img :src="qrCode" class="centerLabel cover" alt>
172
+              <img src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-19.png" class="centerLabel cover" alt>
210
             </a>
173
             </a>
211
           </div>
174
           </div>
212
           <span>长按二维码</span>
175
           <span>长按二维码</span>
213
           <span>祝福你的2019</span>
176
           <span>祝福你的2019</span>
214
         </div>
177
         </div>
215
       </div>
178
       </div>
179
+      <div class="page4" :class="{'show': currentPage === 4 && imgSrc !== null}">
180
+        <img :src="imgSrc" width="100%" class="cover" alt>
181
+      </div>
216
     </div>
182
     </div>
217
   </div>
183
   </div>
218
 </template>
184
 </template>
219
 
185
 
220
 <script>
186
 <script>
187
+import html2canvas from 'html2canvas'
188
+import musicPlay from '../../util/music'
221
 export default {
189
 export default {
222
   name: '',
190
   name: '',
223
   data () {
191
   data () {
224
     return {
192
     return {
225
       showPage: false,
193
       showPage: false,
226
       imgNum: 0,
194
       imgNum: 0,
227
-      imgTotal: 18,
195
+      imgTotal: 19,
228
       currentPage: 0,
196
       currentPage: 0,
229
       userIcon: '',
197
       userIcon: '',
230
       qrCode: '',
198
       qrCode: '',
255
         '实现财务自由',
223
         '实现财务自由',
256
         '方案一次过',
224
         '方案一次过',
257
         '男(女)神回复我信息'
225
         '男(女)神回复我信息'
258
-      ]
226
+      ],
227
+      selectFlag: [],
228
+      userSelectFlag: [],
229
+      showEndTextIndex: Math.floor(Math.random() * 3),
230
+      imgSrc: null
259
     }
231
     }
260
   },
232
   },
261
   computed: {
233
   computed: {
263
   components: {
235
   components: {
264
   },
236
   },
265
   created () {
237
   created () {
238
+    '*********'.split('*').forEach(x => {
239
+      while (true) {
240
+        const inx = Math.floor(Math.random() * this.flagList.length)
241
+        const res = this.flagList[inx]
242
+        if (this.selectFlag.indexOf(res) === -1) {
243
+          this.selectFlag.push({
244
+            select: false,
245
+            value: res
246
+          })
247
+          break
248
+        }
249
+      }
250
+    })
266
   },
251
   },
267
   mounted () {
252
   mounted () {
268
     this.$nextTick(() => {
253
     this.$nextTick(() => {
254
+      musicPlay('http://wx.jinchengjiaye.com/h5-2019/static/images/Thomas%20Greenberg.mp3')
269
     })
255
     })
270
   },
256
   },
271
   methods: {
257
   methods: {
258
+    nextStep () { // 下一步
259
+      this.currentPage = this.userSelectFlag.length ? 3 : 2
260
+      window.setTimeout(() => {
261
+        this.convert2canvas(document.getElementById('canvasPage')).then((res) => {
262
+          this.imgSrc = res
263
+          this.currentPage = 4
264
+        })
265
+      }, 300)
266
+    },
267
+    selectFlagItem (item, index) {
268
+      document.getElementsByClassName('flagItem')[index].style = 'transition: all .3s ease;-webkit-transition: all .3s ease;'
269
+      item.select = true
270
+      this.userSelectFlag.push(item)
271
+    },
272
     imgLoad () { // 图片加载进度存储
272
     imgLoad () { // 图片加载进度存储
273
       this.imgNum += 1
273
       this.imgNum += 1
274
       if (this.imgNum === this.imgTotal) {
274
       if (this.imgNum === this.imgTotal) {
280
     },
280
     },
281
     returnImgNum () { // 图片加载进度读取
281
     returnImgNum () { // 图片加载进度读取
282
       return Math.floor((this.imgNum / this.imgTotal) * 100)
282
       return Math.floor((this.imgNum / this.imgTotal) * 100)
283
+    },
284
+    convert2canvas (dom) {
285
+      return new Promise((resolve, reject) => {
286
+        var shareContent = dom
287
+        var width = shareContent.offsetWidth // 获取dom 宽度
288
+        var height = shareContent.offsetHeight // 获取dom 高度
289
+        var canvas = document.createElement('canvas') // 创建一个canvas节点
290
+        var scale = 1 // 定义任意放大倍数 支持小数
291
+        canvas.width = width * scale // 定义canvas 宽度 * 缩放
292
+        canvas.height = height * scale // 定义canvas高度 *缩放
293
+        canvas.getContext('2d').scale(scale, scale) // 获取context,设置scale
294
+        var opts = {
295
+          scale: scale, // 添加的scale 参数
296
+          canvas: canvas, // 自定义 canvas
297
+          width: width, // dom 原始宽度
298
+          height: height,
299
+          useCORS: true // 【重要】开启跨域配置
300
+        }
301
+        html2canvas(shareContent, opts).then(function (canvas) {
302
+          var context = canvas.getContext('2d') // 【重要】关闭抗锯齿
303
+          context.mozImageSmoothingEnabled = false
304
+          context.webkitImageSmoothingEnabled = false
305
+          context.msImageSmoothingEnabled = false
306
+          context.imageSmoothingEnabled = false
307
+          resolve(canvas.toDataURL('image/jpeg'))
308
+        })
309
+      })
283
     }
310
     }
284
   }
311
   }
285
 }
312
 }

+ 58
- 10
src/pages/home/page.scss 查看文件

108
         }
108
         }
109
       }
109
       }
110
       &.page2{
110
       &.page2{
111
+        .nextStep{
112
+          padding: .02rem;
113
+          border: 2px solid #fff;
114
+          position: absolute;
115
+          right: 12vw;
116
+          bottom: 4.5vh;
117
+          z-index: 200;
118
+          display: inline-block;
119
+          span{
120
+            background: #de7ba2;
121
+            color: #fff;
122
+            font-size: .18rem;
123
+            display: inline-block;
124
+            line-height: .3rem;
125
+            padding: 0 .1rem;
126
+          }
127
+        }
111
         >.centerLabel{
128
         >.centerLabel{
112
           width: 100%;
129
           width: 100%;
113
           z-index: 11;
130
           z-index: 11;
129
               display: inline-block;
146
               display: inline-block;
130
               position: absolute;
147
               position: absolute;
131
               padding: 0 .1rem;
148
               padding: 0 .1rem;
149
+              white-space: nowrap;
132
               z-index: 11;
150
               z-index: 11;
133
               &:nth-child(2n){
151
               &:nth-child(2n){
134
                 transform: translateX(-1rem);
152
                 transform: translateX(-1rem);
166
               background: #5bcff1;
184
               background: #5bcff1;
167
               border-radius: .1rem;
185
               border-radius: .1rem;
168
               overflow: visible;
186
               overflow: visible;
187
+              &.selected{
188
+                opacity: 0;
189
+              }
169
               &::after{
190
               &::after{
170
                 content: '';
191
                 content: '';
171
                 border-color: #5bcff1 transparent transparent transparent;
192
                 border-color: #5bcff1 transparent transparent transparent;
172
                 border-width: .15rem;
193
                 border-width: .15rem;
173
                 bottom: -.24rem;
194
                 bottom: -.24rem;
174
-                right: 50%;
195
+                right: 30%;
175
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
196
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
176
                 transform: rotateY(60deg) rotateZ(-20deg);
197
                 transform: rotateY(60deg) rotateZ(-20deg);
177
               }
198
               }
185
               background: #f8b551;
206
               background: #f8b551;
186
               border-radius: .1rem;
207
               border-radius: .1rem;
187
               overflow: visible;
208
               overflow: visible;
209
+              &.selected{
210
+                opacity: 0;
211
+              }
188
               &::after{
212
               &::after{
189
                 content: '';
213
                 content: '';
190
                 border-color: #f8b551 transparent transparent transparent;
214
                 border-color: #f8b551 transparent transparent transparent;
191
                 border-width: .15rem;
215
                 border-width: .15rem;
192
                 bottom: -.24rem;
216
                 bottom: -.24rem;
193
-                left: 50%;
217
+                left: 30%;
194
                 -webkit-transform: rotateY(60deg) rotateZ(20deg);
218
                 -webkit-transform: rotateY(60deg) rotateZ(20deg);
195
                 transform: rotateY(60deg) rotateZ(20deg);
219
                 transform: rotateY(60deg) rotateZ(20deg);
196
               }
220
               }
204
               background: #de7ba2;
228
               background: #de7ba2;
205
               border-radius: .1rem;
229
               border-radius: .1rem;
206
               overflow: visible;
230
               overflow: visible;
231
+              &.selected{
232
+                opacity: 0;
233
+              }
207
               &::after{
234
               &::after{
208
                 content: '';
235
                 content: '';
209
                 border-color: #de7ba2 transparent transparent transparent;
236
                 border-color: #de7ba2 transparent transparent transparent;
210
                 border-width: .15rem;
237
                 border-width: .15rem;
211
                 bottom: -.24rem;
238
                 bottom: -.24rem;
212
-                left: 50%;
239
+                left: 30%;
213
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
240
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
214
                 transform: rotateY(60deg) rotateZ(-20deg);
241
                 transform: rotateY(60deg) rotateZ(-20deg);
215
               }
242
               }
223
               background: #fdc17a;
250
               background: #fdc17a;
224
               border-radius: .1rem;
251
               border-radius: .1rem;
225
               overflow: visible;
252
               overflow: visible;
253
+              &.selected{
254
+                opacity: 0;
255
+              }
226
               &::after{
256
               &::after{
227
                 content: '';
257
                 content: '';
228
                 border-color: #fdc17a transparent transparent transparent;
258
                 border-color: #fdc17a transparent transparent transparent;
229
                 border-width: .15rem;
259
                 border-width: .15rem;
230
                 bottom: -.24rem;
260
                 bottom: -.24rem;
231
-                right: 50%;
261
+                right: 30%;
232
                 -webkit-transform: rotateY(60deg) rotateZ(20deg);
262
                 -webkit-transform: rotateY(60deg) rotateZ(20deg);
233
                 transform: rotateY(60deg) rotateZ(20deg);
263
                 transform: rotateY(60deg) rotateZ(20deg);
234
               }
264
               }
242
               background: #f8b551;
272
               background: #f8b551;
243
               border-radius: .1rem;
273
               border-radius: .1rem;
244
               overflow: visible;
274
               overflow: visible;
275
+              &.selected{
276
+                opacity: 0;
277
+              }
245
               &::after{
278
               &::after{
246
                 content: '';
279
                 content: '';
247
                 border-color: #f8b551 transparent transparent transparent;
280
                 border-color: #f8b551 transparent transparent transparent;
248
                 border-width: .15rem;
281
                 border-width: .15rem;
249
                 bottom: -.24rem;
282
                 bottom: -.24rem;
250
-                left: 60%;
283
+                left: 30%;
251
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
284
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
252
                 transform: rotateY(60deg) rotateZ(-20deg);
285
                 transform: rotateY(60deg) rotateZ(-20deg);
253
               }
286
               }
261
               background: #f8b551;
294
               background: #f8b551;
262
               border-radius: .1rem;
295
               border-radius: .1rem;
263
               overflow: visible;
296
               overflow: visible;
297
+              &.selected{
298
+                opacity: 0;
299
+              }
264
               &::after{
300
               &::after{
265
                 content: '';
301
                 content: '';
266
                 border-color: #f8b551 transparent transparent transparent;
302
                 border-color: #f8b551 transparent transparent transparent;
267
                 border-width: .15rem;
303
                 border-width: .15rem;
268
                 bottom: -.24rem;
304
                 bottom: -.24rem;
269
-                left: 50%;
305
+                left: 30%;
270
                 -webkit-transform: rotateY(60deg) rotateZ(20deg);
306
                 -webkit-transform: rotateY(60deg) rotateZ(20deg);
271
                 transform: rotateY(60deg) rotateZ(20deg);
307
                 transform: rotateY(60deg) rotateZ(20deg);
272
               }
308
               }
282
               overflow: visible;
318
               overflow: visible;
283
               transform: translateX(-50%);
319
               transform: translateX(-50%);
284
               -webkit-transform: translateX(-50%);
320
               -webkit-transform: translateX(-50%);
321
+              &.selected{
322
+                opacity: 0;
323
+              }
285
               &::after{
324
               &::after{
286
                 content: '';
325
                 content: '';
287
                 border-color: #a57dd1 transparent transparent transparent;
326
                 border-color: #a57dd1 transparent transparent transparent;
288
                 border-width: .15rem;
327
                 border-width: .15rem;
289
                 bottom: -.24rem;
328
                 bottom: -.24rem;
290
-                left: 60%;
329
+                left: 30%;
291
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
330
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
292
                 transform: rotateY(60deg) rotateZ(-20deg);
331
                 transform: rotateY(60deg) rotateZ(-20deg);
293
               }
332
               }
301
               background: #f8b551;
340
               background: #f8b551;
302
               border-radius: .1rem;
341
               border-radius: .1rem;
303
               overflow: visible;
342
               overflow: visible;
343
+              &.selected{
344
+                opacity: 0;
345
+              }
304
               &::after{
346
               &::after{
305
                 content: '';
347
                 content: '';
306
                 border-color: #f8b551 transparent transparent transparent;
348
                 border-color: #f8b551 transparent transparent transparent;
307
                 border-width: .15rem;
349
                 border-width: .15rem;
308
                 bottom: -.24rem;
350
                 bottom: -.24rem;
309
-                left: 60%;
351
+                left: 30%;
310
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
352
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
311
                 transform: rotateY(60deg) rotateZ(-20deg);
353
                 transform: rotateY(60deg) rotateZ(-20deg);
312
               }
354
               }
320
               background: #fdc17a;
362
               background: #fdc17a;
321
               border-radius: .1rem;
363
               border-radius: .1rem;
322
               overflow: visible;
364
               overflow: visible;
365
+              &.selected{
366
+                opacity: 0;
367
+              }
323
               &::after{
368
               &::after{
324
                 content: '';
369
                 content: '';
325
                 border-color: #fdc17a transparent transparent transparent;
370
                 border-color: #fdc17a transparent transparent transparent;
326
                 border-width: .15rem;
371
                 border-width: .15rem;
327
                 bottom: -.24rem;
372
                 bottom: -.24rem;
328
-                left: 60%;
373
+                left: 30%;
329
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
374
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
330
                 transform: rotateY(60deg) rotateZ(-20deg);
375
                 transform: rotateY(60deg) rotateZ(-20deg);
331
               }
376
               }
339
               background: #f8b551;
384
               background: #f8b551;
340
               border-radius: .1rem;
385
               border-radius: .1rem;
341
               overflow: visible;
386
               overflow: visible;
387
+              &.selected{
388
+                opacity: 0;
389
+              }
342
               &::after{
390
               &::after{
343
                 content: '';
391
                 content: '';
344
                 border-color: #f8b551 transparent transparent transparent;
392
                 border-color: #f8b551 transparent transparent transparent;
345
                 border-width: .15rem;
393
                 border-width: .15rem;
346
                 bottom: -.24rem;
394
                 bottom: -.24rem;
347
-                left: 50%;
395
+                left: 30%;
348
                 -webkit-transform: rotateY(60deg) rotateZ(20deg);
396
                 -webkit-transform: rotateY(60deg) rotateZ(20deg);
349
                 transform: rotateY(60deg) rotateZ(20deg);
397
                 transform: rotateY(60deg) rotateZ(20deg);
350
               }
398
               }

+ 51
- 0
src/util/music.js 查看文件

1
+/* eslint-disable */
2
+export default function musicPlay (src) {
3
+  var className = 'play'
4
+  var trigger = 'ontouchend' in document ? 'touchstart' : 'click'
5
+  var $musci = document.createElement('div')
6
+  var $audio = document.createElement('audio')
7
+
8
+  function start () {
9
+    document.removeEventListener(trigger, start, false)
10
+    if (!$audio.paused) return
11
+    $audio.play()
12
+  }
13
+
14
+  function toggle () {
15
+    if (!$audio.paused) return $audio.pause()
16
+
17
+    $audio.currentTime = 0
18
+    $audio.play()
19
+  }
20
+
21
+  function play (e) {
22
+    $musci.classList.add(className)
23
+  }
24
+
25
+  function pause (e) {
26
+    $musci.classList.remove(className)
27
+  }
28
+
29
+  $musci.className = 'music-icon'
30
+  $musci.classList.add('paused')
31
+  $audio.src = src
32
+  $audio.id = "audio"
33
+  $audio.loop = true
34
+  $audio.volume = 0.5
35
+  document.body.appendChild($musci)
36
+  document.body.appendChild($audio)
37
+
38
+  $audio.addEventListener('play', play, false)
39
+  $audio.addEventListener('pause', pause, false)
40
+  $audio.addEventListener('ended', pause, false)
41
+  $musci.addEventListener('click', toggle, false)
42
+  try {
43
+    $audio.play()
44
+  } catch (err) {
45
+  }
46
+  document.addEventListener("WeixinJSBridgeReady", function () {
47
+    $audio.play()
48
+  }, false)
49
+
50
+  document.addEventListener(trigger, start, false)
51
+}

二进制
static/images/icon-1.png 查看文件


二进制
static/images/icon-10.png 查看文件


二进制
static/images/icon-11.png 查看文件


二进制
static/images/icon-12.png 查看文件


二进制
static/images/icon-13.png 查看文件


二进制
static/images/icon-14.png 查看文件


二进制
static/images/icon-15.png 查看文件


二进制
static/images/icon-16.png 查看文件


二进制
static/images/icon-17.png 查看文件


二进制
static/images/icon-18.png 查看文件


二进制
static/images/icon-19.png 查看文件


二进制
static/images/icon-2.png 查看文件


二进制
static/images/icon-3.png 查看文件


二进制
static/images/icon-4.png 查看文件


二进制
static/images/icon-5.png 查看文件


二进制
static/images/icon-6.png 查看文件


二进制
static/images/icon-7.png 查看文件


二进制
static/images/icon-8.png 查看文件


二进制
static/images/icon-9.png 查看文件