Bladeren bron

feat:购买方案后另存为

ananzhusen 1 jaar geleden
bovenliggende
commit
940e97d4ea
4 gewijzigde bestanden met toevoegingen van 79 en 11 verwijderingen
  1. 28 2
      src/services/common.ts
  2. 39 7
      src/views/components/Graphics.vue
  3. 5 2
      src/views/components/Header.vue
  4. 7 0
      src/views/components/View.vue

+ 28 - 2
src/services/common.ts

@@ -8,7 +8,7 @@ import { useUser } from '@/services/user';
 import { showNotification, Meta2dBackData, checkData } from '@/services/utils';
 import { noLoginTip, localStorageName } from '@/services/utils';
 import { upload, dataURLtoBlob } from '@/services/file';
-import { delImage, addCollection, updateCollection } from '@/services/api';
+import { delImage, addCollection, updateCollection, getLe5leV } from '@/services/api';
 import { baseVer } from '@/services/upgrade';
 import { debounce } from './debouce';
 import { deepClone, isDomShapes } from '@meta2d/core';
@@ -590,7 +590,7 @@ export const save = async (
     image:data.image,
     name:data.name,
     folder:data.folder,
-    shared:true,
+    // shared:true,
     userFlag
   }
   delete data.name;
@@ -650,6 +650,32 @@ export const save = async (
   return true;
 };
 
+
+export const autoSaveAS = async(id:string)=>{
+  //先请求打开图纸 
+  const ret: any = await getLe5leV(id);
+  if(!ret.data && ret.price>0){
+    return;
+  }
+  sessionStorage.setItem('opening', '1');
+  router.push({
+    path: '/',
+    query: {
+      r: Date.now() + '',
+    },
+  });
+  //去除图纸一些信息
+  for (const k of delAttrs) {
+    delete ret[k];
+  }
+  meta2d.open(ret.data);
+  meta2d.fitView();
+  //另存为付费用户图纸
+  setTimeout(()=>{
+    save(SaveType.SaveAs, '', undefined, 1);
+  },500)
+}
+
 const pen = ref(false);
 export const drawPen = () => {
   meta2d.inactive();

+ 39 - 7
src/views/components/Graphics.vue

@@ -246,7 +246,7 @@
     >
       确定删除该数据吗?删除后不可恢复!
     </t-dialog>
-    <t-dialog
+    <!-- <t-dialog
       v-if="chargeDialog.show"
       :header="chargeDialog.data.name"
       :visible="true"
@@ -267,8 +267,26 @@
           </div>
         </div>
       </template>
-    </t-dialog>
+    </t-dialog> -->
 
+    <t-dialog
+     class="dialog-charge"
+      v-if="chargeDialog.show"
+      :header="chargeDialog.name"
+      :visible="true"
+      @close="chargeDialog.show = false"
+      width="80%"
+      :top="8"
+      :footer="false"
+      :closeOnOverlayClick="false"
+    >
+    <iframe
+      :src="`/enterprise/preview?product=v&id=${chargeDialog.data.id}`"
+      frameborder="no"
+      scrolling="no"
+      allowtransparency="true"
+    />
+    </t-dialog>
     <t-dialog
       v-if="wechatPayDialog.show"
       v-model:visible="wechatPayDialog.show"
@@ -1203,11 +1221,16 @@ const open = async (item: any) => {
     });
   } else {
     const ret: any = await getLe5leV(item._id || item.id);
-    if (!ret) {
-      if (item.price > 0) {
-        chargeDialog.data = item;
-        chargeDialog.show = true;
-      }
+    // if (!ret) {
+    //   if (item.price > 0) {
+    //     chargeDialog.data = item;
+    //     chargeDialog.show = true;
+    //   }
+    //   return;
+    // }
+    if(!ret.data&&ret.price>0){
+      chargeDialog.data = item;
+      chargeDialog.show = true;
       return;
     }
     sessionStorage.setItem('opening', '1');
@@ -2429,5 +2452,14 @@ onUnmounted(() => {
       }
     }
   }
+
+  :deep(.dialog-charge){
+    .t-dialog__body {
+      iframe{
+        width: 100%;
+        height: 80vh;
+      }
+    }
+  }
 }
 </style>

+ 5 - 2
src/views/components/Header.vue

@@ -499,7 +499,7 @@ import { compareVersion, baseVer, upgrade } from '@/services/upgrade';
 import { parseSvg } from '@meta2d/svg';
 import { Pen, getGlobalColor, isShowChild } from '@meta2d/core';
 import { cdn, upCdn } from '@/services/api';
-import JSZip from 'jszip';
+// import JSZip from 'jszip';
 import axios from 'axios';
 import { switchTheme } from '@/services/theme';
 import { noLoginTip } from '@/services/utils';
@@ -517,7 +517,8 @@ import {
   magnifier,
   useDot,
   delAttrs,
-  useAssets,
+  // useAssets,
+  autoSaveAS
 } from '@/services/common';
 import { useEnterprise } from '@/services/enterprise';
 import {
@@ -672,6 +673,8 @@ const dealWithMessage = async (e) => {
           if (comparePayListNum >= payListNum) {
               await showPayListDialog();
           }
+        }else if(data.name==='saveas'){
+          await autoSaveAS(data.id);
         }
       } else {
         meta2d.emit(data.name);

+ 7 - 0
src/views/components/View.vue

@@ -821,6 +821,7 @@ import {
   onScaleFull,
   onScaleWindow,
   useDot,
+  autoSaveAS,
 } from '@/services/common';
 import { useSelection } from '@/services/selections';
 import { defaultFormat } from '@/services/defaults';
@@ -925,6 +926,11 @@ const open = async (flag: boolean = false) => {
     });
     return;
   }
+  if(route.query.saveas){
+    //id需要
+    await autoSaveAS((route.query.id)as string);
+    return;
+  }
   if (route.query.id) {
     let ret: any;
     if (route.query.c) {
@@ -943,6 +949,7 @@ const open = async (flag: boolean = false) => {
       ret.data.folder = ret.folder;
       ret.data.name = ret.name;
       ret.data.image = ret.image;
+      ret.data.ownerId = ret.ownerId;
       meta2d.open(ret.data);
       if (!route.query.c) {
         shared.value = ret.shared;