Browse Source

feat:saveDowload-js线性图元

ananzhusen 1 year ago
parent
commit
d4d0c316af
4 changed files with 51 additions and 94 deletions
  1. 3 82
      src/services/download.ts
  2. 8 8
      src/views/Preview.vue
  3. 39 4
      src/views/components/Header.vue
  4. 1 0
      vite.config.ts

+ 3 - 82
src/services/download.ts

@@ -52,7 +52,7 @@ const components = [
   'waterTank',
 ];
 
-export const getDownloadList = async (meta2dData: any, path: string = 'v', jsPens?:string[]) => {
+export const getDownloadList = (meta2dData: any, path: string = 'v') => {
   const lists = new Set();
   //TODO 加一个type区分是数据/还是接口
   //背景图片
@@ -133,36 +133,6 @@ export const getDownloadList = async (meta2dData: any, path: string = 'v', jsPen
         path: file,
       });
     });
-
-    const res: any = await axios.post('/api/paid/2d/component?pageSize=1000', {
-      type: 'JS线性图元',
-    });
-    let purchased = res.list.map((item) => item.name);
-    let arr = [];
-    jsPens.forEach((item) => {
-      if(purchased.includes(item)){
-        arr.push(item);
-      }
-    })
-    // if (arr.length) {
-      const res_list: Blob = await axios.post(
-        '/api/2d/tools',
-        {
-          list: arr.map((item) => {
-            return {
-              type: 'JS线性图元',
-              name: item,
-            };
-          }),
-        },
-        {
-          responseType: 'blob',
-        }
-      );
-      lists.add({
-        data: res_list,
-        path: `/view/js/1.js`,
-      });
   }
   //数据
   // const data: any = meta2d.data();
@@ -346,7 +316,6 @@ export enum Frame {
   html,
 }
 
-let frameFlag = -1;
 
 // export const _preFrameDownload = async (type: Frame) => {
 //   frameFlag = type;
@@ -504,15 +473,7 @@ async function zipImage(zip: JSZip, image: string, temImage?: string) {
     // },
   });
   zip.file(
-    (frameFlag === -1
-      ? ''
-      : `${
-          frameFlag === Frame.vue3
-            ? 'meta2d-vue3'
-            : frameFlag === Frame.vue2
-            ? 'meta2d-vue2'
-            : 'meta2d-react'
-        }/public`) + (cdn ? image.replace(cdn, '').replace(upCdn, '') : image),
+     (cdn ? image.replace(cdn, '').replace(upCdn, '') : image),
     res,
     {
       createFolders: true,
@@ -676,7 +637,7 @@ export async function zipImages(zip: JSZip, pens: Pen[]) {
 //   zip.file(filePath.replace('/view', ''), res, { createFolders: true });
 // }
 
-export const getFrameDownloadList = async (meta2dData: any, path: string = 'v',type:Frame,jsPens?:string[],flag_3d=false) => {
+export const getFrameDownloadList =(meta2dData: any, path: string = 'v',type:Frame, flag_3d=false) => {
   const lists = new Set();
   let img = meta2dData.bkImage;
   if (img) {
@@ -851,46 +812,6 @@ export const getFrameDownloadList = async (meta2dData: any, path: string = 'v',t
         path:`/${folderName}/public${file.replace('/view', '')}`,
       });
     }); 
-
-    const res: any = await axios.post('/api/paid/2d/component?pageSize=1000', {
-      type: 'JS线性图元',
-    });
-    let purchased = res.list.map((item) => item.name);
-    let arr = [];
-    // for (const pen of meta2dData.pens) {
-    //   if (pen.subClassName && purchased.includes(pen.name)) {
-    //     if(!['箭头','拓扑图未分类'].includes(pen.subClassName)){
-    //       if (!arr.includes(pen.name)) {
-    //         arr.push(pen.name);
-    //       }
-    //     }
-    //   }
-    // }
-    jsPens.forEach((item) => {
-      if(purchased.includes(item)){
-        arr.push(item);
-      }
-    })
-    // if (arr.length) {
-      const res_list: Blob = await axios.post(
-        '/api/2d/tools',
-        {
-          list: arr.map((item) => {
-            return {
-              type: 'JS线性图元',
-              name: item,
-            };
-          }),
-        },
-        {
-          responseType: 'blob',
-        }
-      );
-      lists.add({
-        data: res_list,
-        path:`/${folderName}/public/js/1.js`,
-      });
-    // }
   }
   //图纸数据
   if (meta2dData._id) delete meta2dData._id;

+ 8 - 8
src/views/Preview.vue

@@ -39,7 +39,7 @@ onMounted(() => {
   window.addEventListener('message', dealWithMessage);
 });
 
-const dealWithMessage = async (e) => {
+const dealWithMessage = (e) => {
   if (typeof e.data !== 'string'||!e.data ||
     e.data.startsWith('setImmediate')) {
     return;
@@ -50,15 +50,15 @@ const dealWithMessage = async (e) => {
       if (data.type) {
         if (data.name === 'downloadHtml') {
           //处理下载
-          await doDownload(data.path);
+           doDownload(data.path);
         } else if (data.name === 'prePayList') {
           doGetPayList();
         } else if (data.name === 'downloadVue3') {
-          await doGetFrameDownload(Frame.vue3,data.path);
+          doGetFrameDownload(Frame.vue3,data.path);
         } else if (data.name === 'downloadVue2') {
-          await  doGetFrameDownload(Frame.vue2,data.path);
+          doGetFrameDownload(Frame.vue2,data.path);
         } else if (data.name === 'downloadReact') {
-          await doGetFrameDownload(Frame.react,data.path);
+          doGetFrameDownload(Frame.react,data.path);
         }
       } else {
         meta2d.emit(data.name);
@@ -111,7 +111,7 @@ const opened = () => {
 
 //获取下载列表
 const doDownload =async (path: string) => {
-  const list = await getDownloadList(meta2d.data(), path);
+  const list = getDownloadList(meta2d.data(), path);
   window.parent.postMessage(
     JSON.stringify({
       name: 'download',
@@ -123,8 +123,8 @@ const doDownload =async (path: string) => {
 };
 
 //获取框架下载列表
-const doGetFrameDownload =async (frame: Frame,path:string) => {
-  const list =await getFrameDownloadList(meta2d.data(),path, frame);
+const doGetFrameDownload = (frame: Frame,path:string) => {
+  const list = getFrameDownloadList(meta2d.data(),path, frame);
   window.parent.postMessage(
     JSON.stringify({
       name: 'download',

+ 39 - 4
src/views/components/Header.vue

@@ -1300,7 +1300,7 @@ const showPayListDialog = async () => {
   // }
 };
 
-const preDownload = async () => {
+const preDownload =() => {
   iframeNum = 0;
   compareNum = 0;
   const meta2dData:any = meta2d.data();
@@ -1422,7 +1422,7 @@ const preDownload = async () => {
     iframeNum += pen_v.length;
   }
 
-  downloadList =await getDownloadList(meta2dData,undefined,[...prePayList.jsPens]);
+  downloadList = getDownloadList(meta2dData,undefined);
 
   if (iframeNum === 0) {
     //如果没有嵌入场景
@@ -1562,7 +1562,7 @@ const preFrameDownload = async () => {
     iframeNum += pen_v.length;
   }
 
-  downloadList = await getFrameDownloadList(meta2dData,undefined,downloadType,[...prePayList.jsPens],flag_3d);
+  downloadList =  getFrameDownloadList(meta2dData,undefined,downloadType,flag_3d);
   if (iframeNum === 0) {
     //如果没有嵌入场景
     saveDownload();
@@ -1580,18 +1580,23 @@ const saveDownload = async () => {
   const list = [...downloadList];
   //控件
   let jsPath= '';
+  let jsPensPath = '';
   switch (downloadType) {
     case Frame.html:
       jsPath = '/view/js/2d-components.js';
+      jsPensPath = `/view/js/1.js`;
       break;
     case Frame.vue2:
       jsPath = '/meta2d-vue2/public/js/2d-components.js';
+      jsPensPath = `/meta2d-vue2/public/js/1.js`;
       break;
     case Frame.vue3:
       jsPath = '/meta2d-vue3/public/js/2d-components.js';
+      jsPensPath = `/meta2d-vue3/public/js/1.js`;
       break;
     case Frame.react:
       jsPath = '/meta2d-react/public/js/2d-components.js';
+      jsPensPath = `/meta2d-react/public/js/1.js`;
       break;
   }
   const js = await get2dComponentJs([...prePayList.iotPens]);
@@ -1610,7 +1615,37 @@ const saveDownload = async () => {
       }
     }
   });
-  //js线性图元 由对应页面处理
+  //js线性图元 
+  const res: any = await axios.post('/api/paid/2d/component?pageSize=1000', {
+      type: 'JS线性图元',
+  });
+  let purchased = res.list.map((item) => item.name);
+  let arr = [];
+  [...prePayList.jsPens].forEach((item) => {
+    if(purchased.includes(item)){
+      arr.push(item);
+    }
+  });
+  const res_list: Blob = await axios.post(
+    '/api/2d/tools',
+    {
+      list: arr.map((item) => {
+        return {
+          type: 'JS线性图元',
+          name: item,
+        };
+      }),
+    },
+    {
+      responseType: 'blob',
+    }
+  );
+
+  list.push({
+    data: res_list,
+    path: jsPensPath,
+  });
+
   //SVG线性图元
   if ([...prePayList.svgPens].length) {
     let purchased = data.purchasedList?.filter(

+ 1 - 0
vite.config.ts

@@ -54,6 +54,7 @@ export default defineConfig({
       '/v/material': 'http://192.168.110.6:777/',
       '/png': 'http://192.168.110.6:777/',
       '/svg': 'http://192.168.110.6:777/',
+      '/view': 'http://192.168.110.6:777/',
       '/api/tools':'https://2d.le5le.com'
       // '/image': 'https://v.le5le.com/',
       // '/file': 'https://v.le5le.com/',