ananzhusen 1 سال پیش
والد
کامیت
c2b4c08173
1فایلهای تغییر یافته به همراه149 افزوده شده و 147 حذف شده
  1. 149 147
      src/services/common.ts

+ 149 - 147
src/services/common.ts

@@ -185,20 +185,22 @@ export const save = async (
   ) {
     return;
   }
-  if (vType === 'le5leV-template') {
-    if (data.tags && !data.tags.includes('模板')) {
-      delete data._id;
-      delete data.id;
-      delete data.folder;
-    }
-    data.tags = ['模板'];
-  } else if (!vType) {
-    if (data.tags && !data.tags.includes('方案')) {
-      delete data._id;
-      delete data.id;
-      delete data.folder;
+  if (!data.tags.includes('系统模板') && !data.tags.includes('系统方案')) {
+    if (vType === 'le5leV-template') {
+      if (data.tags && !data.tags.includes('模板')) {
+        delete data._id;
+        delete data.id;
+        delete data.folder;
+      }
+      data.tags = ['模板'];
+    } else if (!vType) {
+      if (data.tags && !data.tags.includes('方案')) {
+        delete data._id;
+        delete data.id;
+        delete data.folder;
+      }
+      data.tags = ['方案'];
     }
-    data.tags = ['方案'];
   }
   if (type === SaveType.SaveAs) {
     //另存为去掉teams信息
@@ -215,156 +217,156 @@ export const save = async (
         pen.onRenderPenRaw?.(pen);
       }
     }
-    setTimeout(async () => {
-      let blob: Blob;
-      try {
-        blob = dataURLtoBlob(meta2d.toPng(0) + '');
-      } catch (e) {
-        MessagePlugin.error(
-          '无法下载,宽度不合法,画布可能没有画笔/画布大小超出浏览器最大限制'
-        );
-        return;
-      }
-      if (data._id && type === SaveType.Save) {
-        if (data.image && !(await delImage(data.image))) {
-          return;
-        }
-      }
-
-      const file = await upload(blob, true);
-      if (!file) {
-        return;
-      }
-
-      // 缩略图
-      data.image = file.url;
-      (meta2d.store.data as Meta2dBackData).image = data.image;
-    }, 1000);
-  }
-  setTimeout(async () => {
-    if (data.component || vType === 'le5leV-components') {
-      data.component = true;
-      // pens 存储原数据用于二次编辑 ; componentDatas 组合后的数据,用于复用
-      data.componentDatas = meta2d.toComponent(
-        undefined,
-        (meta2d.store.data as Meta2dBackData).showChild,
-        false //自定义组合节点生成默认锚点
+    // setTimeout(async () => {
+    let blob: Blob;
+    try {
+      blob = dataURLtoBlob(meta2d.toPng(0) + '');
+    } catch (e) {
+      MessagePlugin.error(
+        '无法下载,宽度不合法,画布可能没有画笔/画布大小超出浏览器最大限制'
       );
-    } else {
-      data.component = false; // 必要值
-    }
-    let collection = data.component ? 'le5leV-components' : 'le5leV';
-    let ret: any;
-    if (!data.name) {
-      // 文件名称
-      data.name = `meta2d.${new Date().toLocaleString()}`;
-      (meta2d.store.data as Meta2dBackData).name = data.name;
+      return;
     }
-    !data.version && (data.version = baseVer);
-    // TODO
-    if (!data.folder) {
-      data.folder = ''; // folder.name;
+    if (data._id && type === SaveType.Save) {
+      if (data.image && !(await delImage(data.image))) {
+        return;
+      }
     }
 
-    let _list: any = undefined;
-    let _folderId: any = undefined;
-    if (data.folder) {
-      if (!folder._id) {
-        let type = vType;
-        if (!type) {
-          type = 'le5leV';
-        }
-        let folderRet: any = await axios.post('/api/data/folders/get', {
-          query: {
-            type,
-            name: data.folder,
-          },
-        });
-        if (!folderRet.error) {
-          _list = folderRet.list;
-          _folderId = folderRet._id;
-        }
-      } else {
-        _list = folder.list;
-        _folderId = folder._id;
-      }
+    const file = await upload(blob, true);
+    if (!file) {
+      return;
     }
 
-    let _temType = '';
-    if (type === SaveType.SaveAs) {
-      // 另存为一定走 新增 ,由于后端 未控制 userId 等属性,清空一下
-      for (const k of delAttrs) {
-        delete (data as any)[k];
+    // 缩略图
+    data.image = file.url;
+    (meta2d.store.data as Meta2dBackData).image = data.image;
+    // }, 1000);
+  }
+  // setTimeout(async () => {
+  if (data.component || vType === 'le5leV-components') {
+    data.component = true;
+    // pens 存储原数据用于二次编辑 ; componentDatas 组合后的数据,用于复用
+    data.componentDatas = meta2d.toComponent(
+      undefined,
+      (meta2d.store.data as Meta2dBackData).showChild,
+      false //自定义组合节点生成默认锚点
+    );
+  } else {
+    data.component = false; // 必要值
+  }
+  let collection = data.component ? 'le5leV-components' : 'le5leV';
+  let ret: any;
+  if (!data.name) {
+    // 文件名称
+    data.name = `meta2d.${new Date().toLocaleString()}`;
+    (meta2d.store.data as Meta2dBackData).name = data.name;
+  }
+  !data.version && (data.version = baseVer);
+  // TODO
+  if (!data.folder) {
+    data.folder = ''; // folder.name;
+  }
+
+  let _list: any = undefined;
+  let _folderId: any = undefined;
+  if (data.folder) {
+    if (!folder._id) {
+      let type = vType;
+      if (!type) {
+        type = 'le5leV';
       }
-      if (!data.tags || !data.tags.length) {
-        data.tags = ['方案'];
+      let folderRet: any = await axios.post('/api/data/folders/get', {
+        query: {
+          type,
+          name: data.folder,
+        },
+      });
+      if (!folderRet.error) {
+        _list = folderRet.list;
+        _folderId = folderRet._id;
       }
-      ret = await addCollection(collection, data);
     } else {
-      // if (data._id && data.teams && data.owner?.id !== user.id) {
-      //   // 团队图纸 不允许修改文件夹信息
-      //   delete data.folder;
-      //   ret = await updateCollection(collection, data);
-      // } else
-      if (data._id) {
-        ret = await updateCollection(collection, data);
-        _temType = 'update';
-      } else {
-        ret = await addCollection(collection, data); // 新增
-        _temType = 'add';
-      }
+      _list = folder.list;
+      _folderId = folder._id;
     }
+  }
 
-    if (ret.error) {
-      return;
+  let _temType = '';
+  if (type === SaveType.SaveAs) {
+    // 另存为一定走 新增 ,由于后端 未控制 userId 等属性,清空一下
+    for (const k of delAttrs) {
+      delete (data as any)[k];
     }
-    if (_folderId) {
-      if (_temType === 'add') {
-        //文件夹
-        _list.push({
-          image: data.image,
-          name: data.name,
-          _id: ret._id,
-        });
-      } else if (_temType === 'update') {
-        _list.forEach((i: any) => {
-          if (i._id === data._id) {
-            i.image = data.image;
-            i.name = data.name;
-          }
-        });
-      }
-      await axios.post('/api/data/folders/update', {
-        _id: _folderId,
-        list: _list,
-      });
+    if (!data.tags || !data.tags.length) {
+      data.tags = ['方案'];
     }
-    //  保存图纸之后的钩子函数
-    globalThis.afterSaveMeta2d && (await globalThis.afterSaveMeta2d(ret));
-    if (
-      !data._id ||
-      data.owner?.id !== user.id ||
-      router.currentRoute.value.query.version ||
-      type === SaveType.SaveAs // 另存为肯定走新增,也会产生新的 id
-    ) {
-      data._id = ret._id;
-      (meta2d.store.data as Meta2dBackData)._id = data._id;
-      router.replace({
-        path: '/',
-        query: {
-          id: data._id,
-          r: Date.now() + '',
-          c: data.component ? 1 : undefined,
-        },
+    ret = await addCollection(collection, data);
+  } else {
+    // if (data._id && data.teams && data.owner?.id !== user.id) {
+    //   // 团队图纸 不允许修改文件夹信息
+    //   delete data.folder;
+    //   ret = await updateCollection(collection, data);
+    // } else
+    if (data._id) {
+      ret = await updateCollection(collection, data);
+      _temType = 'update';
+    } else {
+      ret = await addCollection(collection, data); // 新增
+      _temType = 'add';
+    }
+  }
+
+  if (ret.error) {
+    return;
+  }
+  if (_folderId) {
+    if (_temType === 'add') {
+      //文件夹
+      _list.push({
+        image: data.image,
+        name: data.name,
+        _id: ret._id,
+      });
+    } else if (_temType === 'update') {
+      _list.forEach((i: any) => {
+        if (i._id === data._id) {
+          i.image = data.image;
+          i.name = data.name;
+        }
       });
     }
+    await axios.post('/api/data/folders/update', {
+      _id: _folderId,
+      list: _list,
+    });
+  }
+  //  保存图纸之后的钩子函数
+  globalThis.afterSaveMeta2d && (await globalThis.afterSaveMeta2d(ret));
+  if (
+    !data._id ||
+    data.owner?.id !== user.id ||
+    router.currentRoute.value.query.version ||
+    type === SaveType.SaveAs // 另存为肯定走新增,也会产生新的 id
+  ) {
+    data._id = ret._id;
+    (meta2d.store.data as Meta2dBackData)._id = data._id;
+    router.replace({
+      path: '/',
+      query: {
+        id: data._id,
+        r: Date.now() + '',
+        c: data.component ? 1 : undefined,
+      },
+    });
+  }
 
-    notice && MessagePlugin.success('保存成功!');
-    meta2d.emit('business-save', vType);
-    dot.value = false;
-    localforage.removeItem(localStorageName);
-    return true;
-  }, 2000);
+  notice && MessagePlugin.success('保存成功!');
+  meta2d.emit('business-save', vType);
+  dot.value = false;
+  localforage.removeItem(localStorageName);
+  return true;
+  // }, 2000);
 };
 
 const pen = ref(false);