zhangyujun 3 жил өмнө
parent
commit
cc8feb6cec

BIN
src/assets/img/close_gray.png


BIN
src/assets/img/email-icon.png


BIN
src/assets/img/letter.png


+ 127 - 9
src/views/pdf/preview.vue

@@ -1,5 +1,31 @@
 <template>
   <div class="head">
+    <van-popup round v-model:show="sendEamilVisible">
+      <div class="email">
+        <div @click="()=>{
+          sendEamilVisible=false
+
+        }" class="email-close">
+          <img  class="" src="@/assets/img/close_gray.png"/>
+        </div>
+        <img class="email-letter" src="@/assets/img/letter.png" />
+        <div class="email-text1">
+          <span>请输入您的邮箱</span>
+        </div>
+        <div class="email-text2">
+          <span>5分钟内将发送到您的邮箱,请注意查收。 </span>
+        </div>
+        <div class="email-filed">
+          <input v-model="emailAddress" class="email-filed-text" type="email" />
+          <div class="email-filed-icon">
+            <img src="@/assets/img/email-icon.png" />
+          </div>
+        </div>
+        <div @click="send" class="email-buttons">
+          <div class="email-buttons-sure">确认</div>
+        </div>
+      </div>
+    </van-popup>
     <span class="head-text">学习资料提取</span>
     <div class="head-button">
       <a :href="pdfUrl" class="head-button-download">
@@ -10,7 +36,14 @@
         />
         下载到本地
       </a>
-      <div class="head-button-send">
+      <div
+        @click="
+          () => {
+            sendEamilVisible = true;
+          }
+        "
+        class="head-button-send"
+      >
         <img
           style="width: 12px; height: 13px; margin-right: 5px"
           src="@/assets/img/sendIcon.png"
@@ -18,29 +51,44 @@
       </div>
     </div>
   </div>
-  <div id="pdf-canvas">
-  </div>
+  <div id="pdf-canvas"></div>
 </template>
 <script lang="ts">
-import {  defineComponent } from 'vue';
+import { defineComponent } from 'vue';
 import * as PDFJS from 'pdfjs-dist/legacy/build/pdf'; // 引入PDFJS
 import pdfjsWorker from 'pdfjs-dist/legacy/build/pdf.worker.entry.js'; // 引入workerSrc的地址
 import 'pdfjs-dist/web/pdf_viewer.css';
 import { PDFDocumentProxy } from 'pdfjs-dist/types/web/pdf_find_controller';
+
 PDFJS.GlobalWorkerOptions.workerSrc = pdfjsWorker; //设置PDFJS.GlobalWorkerOptions.workerSrc的地址
+document.title = '预览pdf';
 export default defineComponent({
   setup() {},
   data() {
     return {
       pdfPagesNum: 1,
       readerpdfDoc: null,
-      pdfUrl:""
+      sendEamilVisible: false,
+      pdfUrl: '',
+      emailAddress:""
     };
   },
   methods: {
+    send(){
+      let reg = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
+      if( reg.test(this.emailAddress)){
+
+      }
+      else{
+        this.$notify('邮箱格式错误');
+
+      }
+     
+
+    },
     getPdf(url: string) {
       let that = this;
-      document.getElementById('pdf-canvas').innerHTML=""
+      document.getElementById('pdf-canvas').innerHTML = '';
       PDFJS.getDocument(url).promise.then((pdfDoc) => {
         this.pdfPagesNum = pdfDoc.numPages; // pdf的总页数
         //获取第pageNum页的数据
@@ -53,7 +101,7 @@ export default defineComponent({
       pdfDoc.getPage(pageNum).then((page) => {
         // 设置canvas相关的属性
         // console.log(canvasDomArr.value)
-        const canvas:HTMLCanvasElement =  document.createElement('canvas')
+        const canvas: HTMLCanvasElement = document.createElement('canvas');
         canvas.classList.add('pdf-canvas');
         const ctx = canvas.getContext('2d');
         const dpr = window.devicePixelRatio || 1;
@@ -78,11 +126,11 @@ export default defineComponent({
         // 数据渲染到canvas画布上
         page.render(context);
         //插入canvas
-        document.getElementById('pdf-canvas')?.appendChild(canvas)
+        document.getElementById('pdf-canvas')?.appendChild(canvas);
       });
     },
   },
-  mounted () {
+  mounted() {
     this.getPdf('./web/科目一标识.pdf');
   },
 });
@@ -160,6 +208,75 @@ export default defineComponent({
 // });
 </script>
 <style lang="scss">
+.email {
+  position: relative;
+  width: 580px;
+  .email-close{
+    position: absolute;
+    top: 48px;
+    right: 28px;
+    >img{
+      width: 32px;
+      height: 32px;
+    }
+  }
+  .email-letter {
+    width: 580px;
+    height: 18px;
+  }
+  .email-text1 {
+    padding-top: 44px;
+    padding-bottom: 40px;
+    font-weight: 600;
+  }
+  .email-text2{
+    font-size: 26px;
+    color: #5C6066;
+    margin-bottom: 30px;
+  }
+  .email-buttons{
+    padding-top: 40px;
+    padding-bottom: 52px;
+    display: flex;
+    justify-content: center;
+    .email-buttons-sure{
+      width: 200px;
+      font-size: 26px;
+      height: 60px;
+      line-height: 60px;
+      background: #498ef5;
+      color: #fff;
+      border-radius: 30px;
+      overflow: hidden;
+
+    }
+  }
+  .email-filed{
+    width: 100%;
+    display: flex;
+    justify-content: center;
+    position: relative;
+    .email-filed-icon{
+      position: absolute;
+      left: 50px;
+      top: 12px;
+      >img{
+        width: 29px;
+        height: 22px;
+      }
+    }
+    .email-filed-text{
+      width: 500px;
+      background: #F2F3F5;
+      border: 2px solid #E8E8E8;
+      border-radius: 16px;
+      overflow: hidden;
+      color: #6f747c;
+      height: 60px;
+      padding-left: 60px;
+    }
+  }
+}
 .head {
   width: 100%;
   height: 118px;
@@ -169,6 +286,7 @@ export default defineComponent({
   align-content: center;
   align-items: center;
   justify-content: space-between;
+
   .head-text {
     color: #498ef5;
     font-size: 34px;