瀏覽代碼

静态页面

1002884655 4 年之前
父節點
當前提交
d2738b984a
共有 4 個文件被更改,包括 79 次插入5 次删除
  1. 21
    0
      package-lock.json
  2. 1
    0
      package.json
  3. 37
    4
      src/pages/WoDe/XiaZaiErWeiMa/index.vue
  4. 20
    1
      src/pages/WoDe/XiaZaiErWeiMa/page.scss

+ 21
- 0
package-lock.json 查看文件

2107
         }
2107
         }
2108
       }
2108
       }
2109
     },
2109
     },
2110
+    "base64-arraybuffer": {
2111
+      "version": "0.2.0",
2112
+      "resolved": "https://registry.npm.taobao.org/base64-arraybuffer/download/base64-arraybuffer-0.2.0.tgz",
2113
+      "integrity": "sha1-S5RPrAGRqlkHr+LYyZnMxXzoD0U="
2114
+    },
2110
     "base64-js": {
2115
     "base64-js": {
2111
       "version": "1.3.0",
2116
       "version": "1.3.0",
2112
       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
2117
       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
3430
       "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
3435
       "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
3431
       "dev": true
3436
       "dev": true
3432
     },
3437
     },
3438
+    "css-line-break": {
3439
+      "version": "1.1.1",
3440
+      "resolved": "https://registry.npm.taobao.org/css-line-break/download/css-line-break-1.1.1.tgz",
3441
+      "integrity": "sha1-1em90peEAJnrBQPHMQ/TSSegJu8=",
3442
+      "requires": {
3443
+        "base64-arraybuffer": "^0.2.0"
3444
+      }
3445
+    },
3433
     "css-loader": {
3446
     "css-loader": {
3434
       "version": "0.28.11",
3447
       "version": "0.28.11",
3435
       "resolved": "http://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz",
3448
       "resolved": "http://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz",
6633
         }
6646
         }
6634
       }
6647
       }
6635
     },
6648
     },
6649
+    "html2canvas": {
6650
+      "version": "1.0.0-rc.7",
6651
+      "resolved": "https://registry.npm.taobao.org/html2canvas/download/html2canvas-1.0.0-rc.7.tgz?cache=0&sync_timestamp=1597041911563&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml2canvas%2Fdownload%2Fhtml2canvas-1.0.0-rc.7.tgz",
6652
+      "integrity": "sha1-cMFZzg5jlUqRFpUxiU0IrVYnrJg=",
6653
+      "requires": {
6654
+        "css-line-break": "1.1.1"
6655
+      }
6656
+    },
6636
     "htmlparser2": {
6657
     "htmlparser2": {
6637
       "version": "3.3.0",
6658
       "version": "3.3.0",
6638
       "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
6659
       "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",

+ 1
- 0
package.json 查看文件

21
     "exports-loader": "^0.7.0",
21
     "exports-loader": "^0.7.0",
22
     "fundebug-javascript": "^2.4.2",
22
     "fundebug-javascript": "^2.4.2",
23
     "fundebug-vue": "0.0.1",
23
     "fundebug-vue": "0.0.1",
24
+    "html2canvas": "^1.0.0-rc.7",
24
     "js-md5": "^0.7.3",
25
     "js-md5": "^0.7.3",
25
     "mint-ui": "^2.2.13",
26
     "mint-ui": "^2.2.13",
26
     "qrcode": "^1.4.4",
27
     "qrcode": "^1.4.4",

+ 37
- 4
src/pages/WoDe/XiaZaiErWeiMa/index.vue 查看文件

1
 <template>
1
 <template>
2
   <div class="Page">
2
   <div class="Page">
3
-    <MainPageContainer @UserInfoChange="Init" :ShowMainHeader="true" :ShowMainHeaderBack="true" MainHeaderTitle="邀请注册">
4
-      <div class="PageContainer">
5
-        <img src="../../../assets/img/yaoqing.jpg" width="100%" alt="">
3
+    <MainPageContainer @UserInfoChange="Init" :ShowMainHeader="true" :ShowMainHeaderBack="true" MainHeaderTitle="邀请注册" :ShowMainHeaderRight="true" MainHeaderRightText="保存截图" :MainHeaderRightClick="SaveImg">
4
+      <div ref="PageContainer" class="PageContainer">
5
+        <img v-if="Base64Img !== null" :src="Base64Img" width="100%" alt="">
6
         <div class="centerLabel">
6
         <div class="centerLabel">
7
           <span>您的邀请码为</span>
7
           <span>您的邀请码为</span>
8
           <span v-if="UserInfo !== null">{{UserInfo.inviteCode}}</span>
8
           <span v-if="UserInfo !== null">{{UserInfo.inviteCode}}</span>
13
             </div>
13
             </div>
14
           </div>
14
           </div>
15
         </div>
15
         </div>
16
+        <img v-if="CanvasImg !== null" :src="CanvasImg" class="CanvasImg" alt="">
17
+        <a v-if="CanvasImg !== null" ref="CanvasImgDownload" :href="CanvasImg" download="xiaoniu.jpeg"></a>
16
       </div>
18
       </div>
17
     </MainPageContainer>
19
     </MainPageContainer>
18
   </div>
20
   </div>
19
 </template>
21
 </template>
20
 
22
 
21
 <script>
23
 <script>
24
+import html2canvas from 'html2canvas'
22
 import QRCode from 'qrcode'
25
 import QRCode from 'qrcode'
23
 import MainPageContainer from '../../../components/common/MainPageContainer'
26
 import MainPageContainer from '../../../components/common/MainPageContainer'
24
 import { createNamespacedHelpers } from 'vuex'
27
 import { createNamespacedHelpers } from 'vuex'
27
   name: '',
30
   name: '',
28
   data () {
31
   data () {
29
     return {
32
     return {
30
-      QrCodeUrl: null
33
+      QrCodeUrl: null,
34
+      CanvasImg: null,
35
+      Base64Img: null
31
     }
36
     }
32
   },
37
   },
33
   computed: {
38
   computed: {
39
     MainPageContainer
44
     MainPageContainer
40
   },
45
   },
41
   created () {
46
   created () {
47
+    let TargetImg = new Image()
48
+    TargetImg.src = require('../../../assets/img/yaoqing.jpg')
49
+    TargetImg.onload = () => {
50
+      this.Base64Img = this.GetBase64Image(TargetImg)
51
+    }
42
   },
52
   },
43
   mounted () {
53
   mounted () {
44
     this.$nextTick(() => {
54
     this.$nextTick(() => {
45
     })
55
     })
46
   },
56
   },
47
   methods: {
57
   methods: {
58
+    GetBase64Image (img) {
59
+      let canvas = document.createElement('canvas')
60
+      canvas.width = img.width
61
+      canvas.height = img.height
62
+      let ctx = canvas.getContext('2d')
63
+      ctx.drawImage(img, 0, 0, img.width, img.height)
64
+      let ext = img.src.substring(img.src.lastIndexOf('.') + 1).toLowerCase()
65
+      let dataURL = canvas.toDataURL('image/' + ext)
66
+      canvas.remove()
67
+      return dataURL
68
+    },
69
+    SaveImg () {
70
+      if (this.$refs.CanvasImgDownload) {
71
+        this.$refs.CanvasImgDownload.click()
72
+      }
73
+    },
48
     Init () {
74
     Init () {
49
       QRCode.toDataURL(`https://niucai.co/#/Register?code=${this.UserInfo.inviteCode}`).then((res) => {
75
       QRCode.toDataURL(`https://niucai.co/#/Register?code=${this.UserInfo.inviteCode}`).then((res) => {
50
         this.QrCodeUrl = res
76
         this.QrCodeUrl = res
77
+        let _that = this
78
+        window.setTimeout(() => {
79
+          html2canvas(this.$refs.PageContainer).then(function (canvas) {
80
+            document.body.appendChild(canvas)
81
+            _that.CanvasImg = canvas.toDataURL('image/jpeg', 1.0)
82
+          })
83
+        }, 1000)
51
       }).catch((res) => {
84
       }).catch((res) => {
52
         console.log(res)
85
         console.log(res)
53
       })
86
       })

+ 20
- 1
src/pages/WoDe/XiaZaiErWeiMa/page.scss 查看文件

7
     width: 100%;
7
     width: 100%;
8
     height: 100%;
8
     height: 100%;
9
     position: relative;
9
     position: relative;
10
+    > #Base64Canvas {
11
+      width: 100%;
12
+      height: 100%;
13
+      position: absolute;
14
+      left: -200%;
15
+    }
16
+    > .TargetImg {
17
+      width: 100%;
18
+      display: block;
19
+      position: absolute;
20
+      left: -200%;
21
+    }
22
+    > .CanvasImg {
23
+      position: absolute;
24
+      z-index: 300;
25
+      width: 50%;
26
+      opacity: 0;
27
+      left: -500%;
28
+    }
10
     > div {
29
     > div {
11
       z-index: 2;
30
       z-index: 2;
12
       width: 70%;
31
       width: 70%;
26
         &:nth-child(2) {
45
         &:nth-child(2) {
27
           font-size: 0.2rem;
46
           font-size: 0.2rem;
28
           font-weight: bold;
47
           font-weight: bold;
29
-          color: #ff5100;
48
+          color: #d91d36;
30
         }
49
         }
31
         &:nth-child(3) {
50
         &:nth-child(3) {
32
           font-size: 0.12rem;
51
           font-size: 0.12rem;