Jelajahi Sumber

perfect_文件

ananzhusen 2 tahun lalu
induk
melakukan
1cc3521a77

+ 1 - 4
src/http.ts

@@ -13,9 +13,6 @@ const requestThrottleSet = new Set();
 // http request 拦截器
 axios.interceptors.request.use(
   (config: any) => {
-    if (!config.url.startsWith("/png") && !config.url.startsWith("/svg")) {
-      config.baseURL = "/api";
-    }
     config.headers.Authorization =
       "Bearer " + (localStorage.token || getCookie("token") || "");
 
@@ -81,7 +78,7 @@ axios.interceptors.response.use(
       return;
     }
     if (error && error.response) {
-      if (error.response.config.url === "/account/profile") {
+      if (error.response.config.url === "/api/account/profile") {
         return;
       }
 

+ 7 - 7
src/services/api.ts

@@ -19,7 +19,7 @@ export async function delImage(image: string) {
 }
 
 export async function getFolders(query: any) {
-  const folder: any = await axios.post("/data/folders/get", {
+  const folder: any = await axios.post("/api/data/folders/get", {
     query,
   });
   if (folder.error) {
@@ -30,7 +30,7 @@ export async function getFolders(query: any) {
 }
 
 export async function updateFolders(data: any) {
-  const folder: any = await axios.post("/data/folders/update", data);
+  const folder: any = await axios.post("/api/data/folders/update", data);
   if (folder.error) {
     return;
   } else {
@@ -39,28 +39,28 @@ export async function updateFolders(data: any) {
 }
 
 export async function addCollection(collection: string, data: any) {
-  return await axios.post(`/data/${collection}/add`, data); // 新增
+  return await axios.post(`/api/data/${collection}/add`, data); // 新增
 }
 
 export async function updateCollection(collection: string, data: any) {
-  return await axios.post(`/data/${collection}/update`, data); // 新增
+  return await axios.post(`/api/data/${collection}/update`, data); // 新增
 }
 
 // export async function addCollection(collection: string, data: any) {
 //   return await axios.post(`/data/${collection}/add`, data); // 新增
 // }
 export async function getLe5le2d(id: string) {
-  return await axios.post("/data/le5le2d/get", {
+  return await axios.post("/api/data/le5le2d/get", {
     id,
   });
 }
 
 export async function getComponents(id: string) {
-  return await axios.post(`/data/le5le2d-components/get`, {
+  return await axios.post(`/api/data/le5le2d-components/get`, {
     id,
   });
 }
 
 export async function getComponentsList(data: any, config: any) {
-  return await axios.post("/data/le5le2d-components/list", data, config);
+  return await axios.post("/api/data/le5le2d-components/list", data, config);
 }

+ 50 - 13
src/services/common.ts

@@ -57,7 +57,7 @@ export const save = async (
 ) => {
   meta2d.stopAnimate();
   const data: Meta2dBackData = meta2d.data();
-  if (!(user && user.username)) {
+  if (!(user && user.id)) {
     MessagePlugin.warning(noLoginTip);
     localforage.setItem(localMeta2dDataName, JSON.stringify(data));
     return;
@@ -78,7 +78,7 @@ export const save = async (
     delete data.teams;
   }
   //如果不是自己创建的团队图纸,就不去修改缩略图(没有权限去删除缩略图)
-  if (!((data as any).teams && data.owner?.id !== user.id)) {
+  if (!(data.teams && data.owner?.id !== user.id)) {
     let blob: Blob;
     try {
       blob = dataURLtoBlob(meta2d.toPng(10) + "");
@@ -123,7 +123,7 @@ export const save = async (
     (meta2d.store.data as Meta2dBackData).name = data.name;
   }
   !data.version && (data.version = baseVer);
-
+  /* //不需要文件夹
   let list = undefined;
   let folder: any = undefined;
   let folderId = undefined;
@@ -145,7 +145,11 @@ export const save = async (
   if (!list) {
     list = [];
   }
-
+*/
+  if (!data.folder) {
+    data.folder = "大屏";
+    data.tags = ["大屏"];
+  }
   if (type === SaveType.SaveAs) {
     // 另存为一定走 新增 ,由于后端 未控制 userId 等属性,清空一下
     const delAttrs = [
@@ -160,11 +164,13 @@ export const save = async (
       "createdAt",
       "updatedAt",
       "recommend",
+      "team",
     ];
     for (const k of delAttrs) {
       delete (data as any)[k];
     }
     ret = addCollection(collection, data); // 新增
+    /*
     if (!data.component) {
       list.push({
         id: ret._id,
@@ -172,7 +178,7 @@ export const save = async (
         name: data.name,
         component: data.component,
       });
-    }
+    }*/
   } else {
     if (data._id && data.teams && data.owner?.id !== user.id) {
       // 团队图纸 不允许修改文件夹信息
@@ -180,6 +186,7 @@ export const save = async (
       ret = updateCollection(collection, data);
     } else if (data._id) {
       ret = updateCollection(collection, data);
+      /*
       if (!data.component) {
         list.forEach((i: any) => {
           if (i.id === data._id) {
@@ -196,9 +203,10 @@ export const save = async (
           name: data.name,
           component: data.component,
         });
-      }
+      }*/
     } else {
       ret = addCollection(collection, data); // 新增
+      /*
       if (!data.component) {
         list.push({
           id: ret._id,
@@ -206,13 +214,15 @@ export const save = async (
           name: data.name,
           component: data.component,
         });
-      }
+      }*/
     }
   }
 
   if (ret.error) {
     return null;
-  } else {
+  }
+
+  /*else {
     if (!data.component && folderId) {
       const updateRet: any = updateFolders({
         _id: folderId,
@@ -223,7 +233,7 @@ export const save = async (
       }
     }
     // showModelSaveAsPop.value = false;
-  }
+  }*/
   //  保存图纸之后的钩子函数
   (window as any).afterSaveMeta2d &&
     (await (window as any).afterSaveMeta2d(ret));
@@ -316,24 +326,51 @@ export const unsave = "当前文件未保存,是否继续?(开通vip可享
 //未登录,当前文件可能不会保存
 //
 export const newFile = async () => {
+  notificFn(newFile, true);
+  // if (!(user && user.id)) {
+  //   if (await showNotification(unLogin)) {
+  //     newfile(false);
+  //   }
+  // } else {
+  //   if (dot.value) {
+  //     if (!user.vipExpired) {
+  //       if (await save(SaveType.Save)) {
+  //         //TODO 保存报错了需要save吗
+  //         newfile(false);
+  //       }
+  //     } else {
+  //       if (await showNotification(unsave)) {
+  //         newfile(false);
+  //       }
+  //     }
+  //   } else {
+  //     newfile(false);
+  //   }
+  // }
+};
+
+export const notificFn = async (fn: Function, params: any) => {
   if (!(user && user.id)) {
     if (await showNotification(unLogin)) {
-      newfile(false);
+      fn(params);
     }
   } else {
     if (dot.value) {
       if (!user.vipExpired) {
         if (await save(SaveType.Save)) {
           //TODO 保存报错了需要save吗
-          newfile(false);
+          // newfile(false);
+          fn(params);
         }
       } else {
         if (await showNotification(unsave)) {
-          newfile(false);
+          // newfile(false);
+          fn(params);
         }
       }
     } else {
-      newfile(false);
+      // newfile(false);
+      fn(params);
     }
   }
 };

+ 1 - 1
src/services/defaults.ts

@@ -421,7 +421,7 @@ export const shapeLib = [
         icon: "l-text",
         id: 16,
         data: {
-          text: `${(window as any).companyName}meta2d`,
+          text: `text`,
           width: 160,
           height: 30,
           name: "text",

+ 1 - 1
src/services/file.ts

@@ -11,7 +11,7 @@ export async function upload(
   form.append("directory", directory);
   form.append("public", shared + "");
   form.append("file", blob);
-  const ret: any = await axios.post("/api/image", form);
+  const ret: any = await axios.post("/api/image/upload", form);
   if (ret.error) {
     return null;
   }

+ 35 - 33
src/services/user.ts

@@ -1,11 +1,11 @@
-import { reactive } from 'vue';
+import { reactive } from "vue";
 
-import axios from 'axios';
-import dayjs from 'dayjs';
+import axios from "axios";
+import dayjs from "dayjs";
 
-import { updateObject } from '@/services/object';
-import router from '@/router';
-import { deleteCookie, setCookie } from '@/services/cookie';
+import { updateObject } from "@/services/object";
+import router from "@/router";
+import { deleteCookie, setCookie } from "@/services/cookie";
 
 export interface IUser {
   id?: string;
@@ -38,7 +38,7 @@ export interface IUser {
 }
 
 const user = reactive<IUser>({
-  id: '',
+  id: "",
 });
 
 const message = reactive<{ unread: number }>({
@@ -49,13 +49,13 @@ export const useUser = () => {
   const getUser = async (token?: boolean) => {
     const params: any = {};
     if (token) {
-      if (localStorage.getItem('remember')) {
-        params.token = 'r';
+      if (localStorage.getItem("remember")) {
+        params.token = "r";
       } else {
-        params.token = '1';
+        params.token = "1";
       }
     }
-    const ret: IUser = await axios.get('/account/profile', { params });
+    const ret: IUser = await axios.get("/api/account/profile", { params });
     if (!ret) {
       return;
     }
@@ -65,7 +65,9 @@ export const useUser = () => {
   };
 
   const getMessage = async () => {
-    const ret: { unread: number } = await axios.post('/message/unread/count');
+    const ret: { unread: number } = await axios.post(
+      "/api/message/unread/count"
+    );
     ret && (message.unread = ret.unread);
   };
 
@@ -78,35 +80,35 @@ export const useUser = () => {
       const vip = new Date(data.vip);
       if (vip > new Date()) {
         data.vipExpired = false;
-      } else if (vip > new Date('2023-01-17T08:00:00+08:00')) {
+      } else if (vip > new Date("2023-01-17T08:00:00+08:00")) {
         data.vipExpired = true;
       } else {
         data.vip = undefined;
       }
       if (data.vip) {
-        data.vip = dayjs(data.vip).format('YYYY-MM-DD HH:mm:ss');
+        data.vip = dayjs(data.vip).format("YYYY-MM-DD HH:mm:ss");
       }
     }
     if (data.roles) {
       for (const item of data.roles) {
-        if (item.indexOf('运营') > -1) {
+        if (item.indexOf("运营") > -1) {
           data.isOperation = true;
           break;
         }
       }
     }
-    data.created = dayjs(data.createdAt).format('YYYY-MM-DD HH:mm:ss');
+    data.created = dayjs(data.createdAt).format("YYYY-MM-DD HH:mm:ss");
 
     if (data.token) {
       let baseUrl = import.meta.env.BASE_URL;
-      if (baseUrl && baseUrl !== '/') {
-        localStorage.setItem('token', data.token);
+      if (baseUrl && baseUrl !== "/") {
+        localStorage.setItem("token", data.token);
       } else {
-        setCookie('token', data.token, {
-          path: '/',
+        setCookie("token", data.token, {
+          path: "/",
           domain: getRootDomain(),
         });
-        localStorage.removeItem('token');
+        localStorage.removeItem("token");
       }
       delete data.token;
     }
@@ -115,21 +117,21 @@ export const useUser = () => {
 
   const signout = () => {
     updateObject(user, {});
-    localStorage.removeItem('token');
+    localStorage.removeItem("token");
     const domain = getRootDomain();
     if (domain) {
-      deleteCookie('token', {
-        path: '/',
-        domain: 'le5le.com',
+      deleteCookie("token", {
+        path: "/",
+        domain: "le5le.com",
       });
     }
 
-    router.replace({ path: '/login', query: router.currentRoute.value.query });
+    router.replace({ path: "/login", query: router.currentRoute.value.query });
   };
 
   const getRootDomain = () => {
-    let domain = '';
-    const domainItems = document.domain.split('.');
+    let domain = "";
+    const domainItems = document.domain.split(".");
     if (
       domainItems.length < 3 ||
       (domainItems.length === 4 &&
@@ -138,14 +140,14 @@ export const useUser = () => {
         +domainItems[2] > 0 &&
         +domainItems[3] > 0)
     ) {
-      domain = '';
+      domain = "";
     } else if (
-      document.domain.endsWith('.com.cn') ||
-      document.domain.endsWith('.org.cn')
+      document.domain.endsWith(".com.cn") ||
+      document.domain.endsWith(".org.cn")
     ) {
-      domain = domainItems.slice(-3).join('.');
+      domain = domainItems.slice(-3).join(".");
     } else {
-      domain = domainItems.slice(-2).join('.');
+      domain = domainItems.slice(-2).join(".");
     }
 
     return domain;

+ 1 - 0
src/services/utils.ts

@@ -34,6 +34,7 @@ export interface Meta2dBackData extends Meta2dData {
   editorId?: string;
   editorName?: string;
   teams?: { id?: string; name?: string }[];
+  tags?: string[]; //标签数组
 }
 
 const notification = ref<any>(null);

+ 14 - 12
src/views/components/Header.vue

@@ -287,7 +287,7 @@ import JSZip from "jszip";
 import axios from "axios";
 import { switchTheme } from "@/services/theme";
 import { noLoginTip ,localMeta2dDataName} from "@/services/utils";
-import { useDot } from "@/services/common";
+import { useDot ,notificFn} from "@/services/common";
 import {
   save,
   newFile,
@@ -401,7 +401,7 @@ const openSvg = async (file: File) => {
 };
 
 const openZip = async (file: File, isNew: boolean = false) => {
-  if (!(user && user.username)) {
+  if (!(user && user.id)) {
     MessagePlugin.warning(noLoginTip);
     return;
   }
@@ -528,13 +528,15 @@ const openZip = async (file: File, isNew: boolean = false) => {
 };
 
 async function loadFile(newT: boolean = false) {
-  if (dot.value) {
-    if (await showNotification(title)) {
-      load(newT);
-    }
-  } else {
-    load(newT);
-  }
+  // if (dot.value) {
+  //   if (await showNotification(title)) {
+  //     load(newT);
+  //   }
+  // } else {
+  //   load(newT);
+  // }
+  //默认 导入新建项目
+  notificFn(load, newT);
 }
 
 async function openFile() {
@@ -559,7 +561,7 @@ const downloadJson = () => {
 };
 
 const downloadZip = async () => {
-  if (!(user && user.username)) {
+  if (!(user && user.id)) {
     MessagePlugin.warning(noLoginTip);
     return;
   }
@@ -594,7 +596,7 @@ const downloadZip = async () => {
 };
 
 const downloadHtml = async () => {
-  if (!(user && user.username)) {
+  if (!(user && user.id)) {
     MessagePlugin.warning(noLoginTip);
     return;
   }
@@ -648,7 +650,7 @@ const downloadReact = async () => {
 };
 
 async function downloadAsFrame(type: Frame) {
-  if (!(user && user.username)) {
+  if (!(user && user.id)) {
     MessagePlugin.warning(noLoginTip);
     return;
   }

+ 1 - 1
src/views/components/View.vue

@@ -590,7 +590,7 @@ const onAddShape = (event: DragEvent | MouseEvent, name: string) => {
   let data: any;
   if (name === 'text') {
     data = {
-      text: 'le5le Meta2d',
+      text: 'text',
       width: 100,
       height: 20,
       name: 'text',