Parcourir la source

保存的时候,取第一页ppt当做封面图

黄琪勇 il y a 7 mois
Parent
commit
e365deb288
2 fichiers modifiés avec 21 ajouts et 2 suppressions
  1. 20 1
      src/store/pptWork.ts
  2. 1 1
      src/views/Editor/Thumbnails/index.vue

+ 20 - 1
src/store/pptWork.ts

@@ -7,6 +7,7 @@ import LoadingBar from "@/plugins/loadingBar"
 import { getHttpJson, jsonToPpt, getJsonToBlob } from "@/libs/jsonTool"
 import fileUpload from "@/utils/oss-file-upload"
 import { ElMessage } from "element-plus"
+import { toBlob } from "html-to-image"
 
 type pptWork = { id: string; coverImg: string; jsonUrl: string; isSave: boolean }
 const useStore = defineStore("pptWork", {
@@ -41,7 +42,8 @@ const useStore = defineStore("pptWork", {
         LoadingBar.loading(false)
       }
     },
-    updatePPT() {
+    async updatePPT() {
+      await this.updateCoverImg()
       const { blob, title } = getJsonToBlob()
       fileUpload(title, blob)
         .then(url => {
@@ -71,6 +73,23 @@ const useStore = defineStore("pptWork", {
             type: "error"
           })
         })
+    },
+    async updateCoverImg() {
+      LoadingBar.loading(true, "资源上传中")
+      try {
+        const coverImgDom = document.querySelector("#thumbnailSlide_0") as HTMLElement
+        if (coverImgDom) {
+          const dataBlob = await toBlob(coverImgDom)
+          if (dataBlob) {
+            const url = await fileUpload("coverImg", dataBlob)
+            url && (this.coverImg = url)
+          }
+        }
+        LoadingBar.loading(false)
+      } catch (err) {
+        LoadingBar.loading(false)
+        console.log(err, "上传coverImg错误")
+      }
     }
   }
 })

+ 1 - 1
src/views/Editor/Thumbnails/index.vue

@@ -68,7 +68,7 @@
           >
             <div class="label" :class="{ 'offset-left': index >= 99 }">{{ fillDigit(index + 1, 2) }}</div>
             <div class="thumbnail">
-              <ThumbnailSlide :slide="element" :size="180" :visible="index < slidesLoadLimit" />
+              <ThumbnailSlide :id="`thumbnailSlide_${index}`" :slide="element" :size="180" :visible="index < slidesLoadLimit" />
               <div class="tools" v-if="slideIndex === index">
                 <img src="./imgs/play.png" @click="enterScreening" alt="" />
                 <img src="./imgs/add.png" @click="createSlide" alt="" />