소스 검색

feat:conflict

ananzhusen 11 달 전
부모
커밋
bfe9cfd9d4
3개의 변경된 파일49개의 추가작업 그리고 20개의 파일을 삭제
  1. 0 1
      src/services/common.ts
  2. 19 11
      src/views/components/Graphics.vue
  3. 30 8
      src/views/components/Structure.vue

+ 0 - 1
src/services/common.ts

@@ -595,7 +595,6 @@ export const save = async (
     if (!file) {
       return;
     }
-    //源码版默认都有历史记录
     // if (data.id && type === SaveType.Save) {
     //   // conflict = undefined
     //   if (data.image && !(await delImage(data.image))) {

+ 19 - 11
src/views/components/Graphics.vue

@@ -848,6 +848,9 @@ const getCollectionImageList = async (name?: string, collection?: string, system
     //   filename: 1,
     // },
   };
+  if(!data.system){
+    delete data.system;
+  }
   const config = {
     params: {
       current: 1,
@@ -949,19 +952,24 @@ const getImageList = async () => {
 const getCaseProjects = async (name: string, system:boolean, template:boolean, current = 1, pageSize = 1000) => {
   const query: any = { tags: name };
   let collection = name == '系统组件' ? 'v.component' : 'v';
+  let data = { system, template };
+  if(!data.system){
+    delete data.system;
+  }
   const ret: any = await axios.post(
     `/api/data/${collection}/list`,
-    {
-      // query: {
-      //   tags: "系统方案"
-      // },
-      //shared: true,
-      // projection: "id,_id,name,image,price,case",
-      // sort: { createdAt: 1 },
-      // systemFlag
-      system,
-      template
-    },
+    data ,
+    // {
+    //   // query: {
+    //   //   tags: "系统方案"
+    //   // },
+    //   //shared: true,
+    //   // projection: "id,_id,name,image,price,case",
+    //   // sort: { createdAt: 1 },
+    //   // systemFlag
+    //   system,
+    //   template
+    // },
     {
       params: {
         current,

+ 30 - 8
src/views/components/Structure.vue

@@ -34,8 +34,9 @@
     <t-tree
       class="flex-grow"
       ref="tree"
+      activeMultiple
       :data="data.tree"
-      v-model:actived="data.actived"
+      :actived="data.actived"
       v-model:expanded="data.expanded"
       activable
       :expand-parent="true"
@@ -72,7 +73,7 @@
           <span
             v-else
             style="width: 100px"
-            @click="onActive(node.value)"
+            @click="onActive($event, node.value)"
             @dblclick="ondblclick(node)"
             @contextmenu="oncontextmenu($event,node)"
           >
@@ -244,6 +245,7 @@ onMounted(() => {
   meta2d.on('click', getActived);
   meta2d.on('paste', getActived);
   meta2d.on('layer', layerChange);
+  meta2d.on('active', getActived);
 
   if (inTreePanel.timer) {
     clearTimeout(inTreePanel.timer);
@@ -486,16 +488,35 @@ const calcElem = (node: Pen) => {
   return elem;
 };
 
-const onActive = (value: any) => {
+const onActive = (e,value: any) => {
   if (!value || value.endsWith('Layer')) {
     return;
   }
-  const pen = meta2d.store.pens[value];
-  meta2d.active([pen], true);
-  if (!pen.calculative?.inView) {
-    meta2d.gotoView(pen);
-    meta2d.resize();
+
+  if(e.ctrlKey){
+    if(data.actived.includes(value)){
+      data.actived = data.actived.filter((item) => item !== value);
+    }else{
+      data.actived.push(value);
+    }
+  }else{
+    data.actived = [value];
   }
+  if(data.actived.length > 1){
+    let pens = [];
+    data.actived.forEach((item) => {
+      pens.push(meta2d.store.pens[item]);
+    });
+    meta2d.active(pens, false);
+  }else{
+      const pen = meta2d.store.pens[value];
+      meta2d.active([pen], false);
+      if (!pen.calculative?.inView) {
+      meta2d.gotoView(pen);
+      meta2d.resize();
+    }
+  }
+
   meta2d.render();
 };
 
@@ -646,6 +667,7 @@ onBeforeUnmount(() => {
   meta2d.off('click', getActived);
   meta2d.off('paste', getActived);
   meta2d.off('layer', layerChange);
+  meta2d.off('active', getActived);
 
   inTreePanel.timer = setTimeout(() => {
     inTreePanel.value = false;