Explorar o código

feat:js线性图元问题

ananzhusen hai 1 ano
pai
achega
3f8d3249f3
Modificáronse 3 ficheiros con 100 adicións e 63 borrados
  1. 90 53
      src/services/download.ts
  2. 7 7
      src/views/Preview.vue
  3. 3 3
      src/views/components/Header.vue

+ 90 - 53
src/services/download.ts

@@ -52,7 +52,7 @@ const components = [
   'waterTank',
 ];
 
-export const getDownloadList = (meta2dData: any, path: string = 'v') => {
+export const getDownloadList = async (meta2dData: any, path: string = 'v', jsPens?:string[]) => {
   const lists = new Set();
   //TODO 加一个type区分是数据/还是接口
   //背景图片
@@ -106,33 +106,64 @@ export const getDownloadList = (meta2dData: any, path: string = 'v') => {
     }
   }
 
-  //其他文件
-  const files = [
-    '/view/assets/index.js',
-    '/view/assets/index.css',
-    '/view/css/index.css',
-    '/view/css/t/font_2395018_nng9x1qhat.css',
-    '/view/css/t/font_2073009_teagntehxt.css',
-
-    '/view/js/marked.min.js',
-    '/view/js/echarts.min.js',
-    '/view/js/lcjs.iife.js',
-    '/view/js/highcharts.js',
-    '/view/js/highcharts-more.js',
-
-    '/view/js/r.js',
-    '/view/index.html',
-    '/view/favicon.ico',
-    '/view/view.conf',
-    '/view/离线部署包使用说明.pdf',
-  ];
-  files.forEach((file) => {
-    lists.add({
-      url: (cdn ? cdn : '') + file,
-      path: file,
+  if(path === 'v'){ //iframe嵌入的页面无需再次下载
+    //其他文件
+    const files = [
+      '/view/assets/index.js',
+      '/view/assets/index.css',
+      '/view/css/index.css',
+      '/view/css/t/font_2395018_nng9x1qhat.css',
+      '/view/css/t/font_2073009_teagntehxt.css',
+
+      '/view/js/marked.min.js',
+      '/view/js/echarts.min.js',
+      '/view/js/lcjs.iife.js',
+      '/view/js/highcharts.js',
+      '/view/js/highcharts-more.js',
+
+      '/view/js/r.js',
+      '/view/index.html',
+      '/view/favicon.ico',
+      '/view/view.conf',
+      '/view/离线部署包使用说明.pdf',
+    ];
+    files.forEach((file) => {
+      lists.add({
+        url: (cdn ? cdn : '') + file,
+        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();
   if (meta2dData._id) delete meta2dData._id;
@@ -645,7 +676,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,flag_3d=false) => {
+export const getFrameDownloadList = async (meta2dData: any, path: string = 'v',type:Frame,jsPens?:string[],flag_3d=false) => {
   const lists = new Set();
   let img = meta2dData.bkImage;
   if (img) {
@@ -819,12 +850,13 @@ export const getFrameDownloadList = async (meta2dData: any, path: string = 'v',t
         url: (cdn ? cdn + '/v' : import.meta.env.BASE_URL.slice(0, -1))+ file,
         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 = [];
+    }); 
+
+    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)){
@@ -834,26 +866,31 @@ export const getFrameDownloadList = async (meta2dData: any, path: string = 'v',t
     //     }
     //   }
     // }
-    // // 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`,
-    //   });
-    // // }
+    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;

+ 7 - 7
src/views/Preview.vue

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

+ 3 - 3
src/views/components/Header.vue

@@ -1300,7 +1300,7 @@ const showPayListDialog = async () => {
   // }
 };
 
-const preDownload = () => {
+const preDownload = async () => {
   iframeNum = 0;
   compareNum = 0;
   const meta2dData:any = meta2d.data();
@@ -1422,7 +1422,7 @@ const preDownload = () => {
     iframeNum += pen_v.length;
   }
 
-  downloadList = getDownloadList(meta2dData);
+  downloadList =await getDownloadList(meta2dData,undefined,[...prePayList.jsPens]);
 
   if (iframeNum === 0) {
     //如果没有嵌入场景
@@ -1562,7 +1562,7 @@ const preFrameDownload = async () => {
     iframeNum += pen_v.length;
   }
 
-  downloadList = await getFrameDownloadList(meta2dData,undefined,downloadType,flag_3d);
+  downloadList = await getFrameDownloadList(meta2dData,undefined,downloadType,[...prePayList.jsPens],flag_3d);
   if (iframeNum === 0) {
     //如果没有嵌入场景
     saveDownload();