Veronique 1 год назад
Родитель
Сommit
3183f2bf29
2 измененных файлов с 60 добавлено и 28 удалено
  1. 39 12
      src/views/Editor/CanvasCenter/index.vue
  2. 21 16
      src/views/Editor/computer.vue

+ 39 - 12
src/views/Editor/CanvasCenter/index.vue

@@ -15,7 +15,7 @@ import {onMounted, onUnmounted} from 'vue'
 import {useFabricStore, useMainStore, useTemplatesStore, useUserStore} from '@/store'
 import {useRouter} from 'vue-router'
 import {unzip} from "@/utils/crypto"
-import {getDesignTemplateEdit, getPreViewTemplate, getTemplateData, tmpSaveUserDesign, updateDesignTemplate} from '@/api/template'
+import {getDesignTemplateEdit, getPreViewTemplate, getTemplateData, newDesignOrder, tmpSaveUserDesign, updateDesignTemplate} from '@/api/template'
 import {contextMenus} from '@/configs/contextMenu'
 import {initEditor} from '@/views/Canvas/useCanvas'
 import {initPixi} from '@/views/Canvas/usePixi'
@@ -30,8 +30,9 @@ const templatesStore = useTemplatesStore()
 const userStore = useUserStore()
 const {uuid} = storeToRefs(userStore);
 const {wrapperRef, canvasRef} = storeToRefs(fabricStore)
-const {getJSONData} = useCanvasExport()
+const {getJSONData, getSVGData} = useCanvasExport()
 let outerSessionId = ""
+let tmpSaveFlag = true
 
 const {drawAreaFocus} = storeToRefs(mainStore)
 const {keydownListener, keyupListener, pasteListener} = useCanvasHotkey()
@@ -143,17 +144,19 @@ const initRouter = async (templateId: number, runMode: number, outerSessionId: a
 
 //递归调用的目的是不会导致任务堆积,虽然也没什么可能存一下超过5秒
 const tmpSaveCurrentTemplate = () => {
-  const tmpTemplate = {
-    templateName: outerSessionId,
-    jsonContent: getJSONData()
-  }
-
-  tmpSaveUserDesign(JSON.stringify(tmpTemplate)).then((res) => {
-    if (res.httpCode == 200) {
-      // ElMessage.success('暂存成功')
-      setTimeout(tmpSaveCurrentTemplate, 5000);
+  if (tmpSaveFlag) {
+    const tmpTemplate = {
+      templateName: outerSessionId,
+      jsonContent: getJSONData()
     }
-  })
+
+    tmpSaveUserDesign(JSON.stringify(tmpTemplate)).then((res) => {
+      if (res.httpCode == 200) {
+        // ElMessage.success('暂存成功')
+        setTimeout(tmpSaveCurrentTemplate, 5000);
+      }
+    })
+  }
 }
 
 onMounted(async () => {
@@ -190,6 +193,30 @@ onMounted(async () => {
 
       if (message.msgType == "loadTemplate") {
         getPreviewTemplateDetail(query.template, message.data, uuid.value)
+      } else if (message.msgType == "submitOrder") {
+        //提交当前设计
+        // const svgData: string[] = []
+        // svgData.push(btoa(unescape(encodeURIComponent(getSVGData()))))
+
+        // exportSVG()
+
+        //先停止自动暂存定时器
+        tmpSaveFlag = false
+
+        const svgHtml = getSVGData()
+        console.log(svgHtml)
+        newDesignOrder(svgHtml, uuid.value).then((response) => {
+          if (response.httpCode == 200) {
+            console.log(response.data)
+
+            //给父页面发送canClose消息,表示可以关掉本页面了
+            const closeMsg = {
+              msgType: 'canClose'
+            }
+            window.parent.postMessage(JSON.stringify(closeMsg), '*');
+          }
+        });
+
       }
     })
 

+ 21 - 16
src/views/Editor/computer.vue

@@ -89,6 +89,8 @@ onMounted(() => {
 
     // 使用iframe方案,本网页是内嵌页面
     // 监听来自父页面的消息
+    // 20250317 全部iframe消息放在CanvasCenter中处理
+    /*
     window.addEventListener("message", function (event) {
       // 确保消息来自信任的来源
       // if (event.origin !== "https://sd2000.com") {
@@ -104,23 +106,26 @@ onMounted(() => {
       // }
       const message = JSON.parse(event.data);
 
-      if (message.msgType == "submitOrder") {
-        //提交当前设计
-        // const svgData: string[] = []
-        // svgData.push(btoa(unescape(encodeURIComponent(getSVGData()))))
-
-        // exportSVG()
-        const svgHtml = getSVGData()
-        console.log(svgHtml)
-        newDesignOrder(svgHtml, uuid.value).then((response) => {
-          if (response.httpCode == 200) {
-            console.log(response.data)
-            // 下载文件or直接后台拷贝至固定路径
-          }
-        });
-
-      }
+      // if (message.msgType == "submitOrder") {
+      //   //提交当前设计
+      //   // const svgData: string[] = []
+      //   // svgData.push(btoa(unescape(encodeURIComponent(getSVGData()))))
+      //
+      //   // exportSVG()
+      //
+      //   const svgHtml = getSVGData()
+      //   console.log(svgHtml)
+      //   newDesignOrder(svgHtml, uuid.value).then((response) => {
+      //     if (response.httpCode == 200) {
+      //       console.log(response.data)
+      //       // 下载文件or直接后台拷贝至固定路径
+      //     }
+      //   });
+      //
+      // }
     });
+
+     */
     //延迟加载
     setTimeout(() => {
       loadFrontEditorPool.value = true;