瀏覽代碼

Merge branch 'dev' of http://192.168.0.115:3000/bill/4pc into dev

gemercheung 1 年之前
父節點
當前提交
4891943d08

+ 8 - 0
src/assets/pic_edit.svg

@@ -0,0 +1,8 @@
+<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="pic_edit">
+<g id="Union">
+<path d="M21.9723 5.99838C21.1912 5.21734 19.9249 5.21733 19.1438 5.99838L8.65834 16.4839C8.30656 16.8357 8.09851 17.3059 8.07482 17.8029L7.93323 20.7729C7.87705 21.9513 8.8478 22.922 10.0262 22.8659L12.9962 22.7243C13.4931 22.7006 13.9634 22.4925 14.3152 22.1407L24.8007 11.6552C25.5817 10.8742 25.5817 9.60786 24.8007 8.82681L21.9723 5.99838Z" fill="#409EFF"/>
+<path d="M6 25C5.44772 25 5 25.4477 5 26C5 26.5523 5.44772 27 6 27H26C26.5523 27 27 26.5523 27 26C27 25.4477 26.5523 25 26 25H6Z" fill="#409EFF"/>
+</g>
+</g>
+</svg>

+ 8 - 11
src/store/scene.ts

@@ -1,7 +1,6 @@
 import { relicsScenesFetch, updateRelicsScenePosNameFetch } from "@/request";
 import { computed, ref, watch } from "vue";
 import { Scene, ScenePoint } from "@/request/type";
-import { gHeaders } from "@/request/state";
 import { relics } from "./relics";
 import { DeviceType, DeviceType as SceneType } from "./device";
 import { conversionFactory } from "@/helper/coord-transform";
@@ -117,15 +116,11 @@ export const updateScenePointName = async (
 export const gotoScene = async (scene: Scene, edit = false) => {
   const params = new URLSearchParams();
   if (edit) {
-    if (scene.sceneCode.startsWith("KJ")) {
-      try {
-        const res = await getTokenFetch(scene.sceneCode);
-        params.set("token", (res as any).token);
-      } catch {
-        edit = false;
-      }
-    } else {
-      params.set("token", gHeaders.token);
+    try {
+      const res = await getTokenFetch(scene.sceneCode);
+      params.set("token", (res as any).token);
+    } catch {
+      edit = false;
     }
   }
   params.set("lang", "zh");
@@ -193,7 +188,9 @@ const scenePosTransform = (scenes: Scene[]) => {
       points.push({
         x: pos.pos[0],
         y: pos.pos[1],
-        title: pos.name,
+        title: pos.index
+          ? pos.index + (pos.name ? "-" + pos.name : "")
+          : pos.name,
         id: pos.id.toString(),
         rtk: true,
       });

+ 5 - 1
src/view/map/coord.vue

@@ -127,11 +127,13 @@
         @click="exportImage(getSelectPoints(), relics?.name)"
       >
         下载全景图
+        {{ inputPoint?.name }}
       </el-button>
     </template>
   </div>
 
   <SingleInput
+    :key="inputPoint?.id"
     :visible="!!inputPoint"
     @update:visible="inputPoint = null"
     :value="inputPoint?.name || ''"
@@ -189,7 +191,9 @@ const updatePointName = async (title: string) => {
     inputPoint.value.id.toString()
   ) as PolygonsPointAttrib;
   await Promise.all([
-    boardDataChange(() => (point.title = title)),
+    boardDataChange(() => {
+      point.title = inputPoint.value.index ? inputPoint.value.index + "-" + title : title;
+    }),
     updateScenePointName(inputPoint.value!, title),
   ]);
 };

+ 21 - 11
src/view/map/polygons.vue

@@ -19,9 +19,16 @@
               @mouseleave="!selectId && (boardStatus.lightPolygonId = null)"
               @click.stop="!currentItem && selectChange(item.id)"
             >
-              <div class="left">
-                <span>{{ item.name ? item.name : "本体边界" + item.id }}</span>
-              </div>
+              <el-tooltip
+                class="box-item"
+                effect="dark"
+                :content="item.name ? item.name : '本体边界'"
+                placement="top"
+              >
+                <div class="left">
+                  <span>{{ item.name ? item.name : "本体边界" }}</span>
+                </div>
+              </el-tooltip>
               <div
                 class="right"
                 @click.stop
@@ -51,7 +58,8 @@
     <div class="draw-global-icon" @click="cleanupEdit ? cleanupEdit() : enterEdit()">
       <el-icon size="36">
         <Check v-if="cleanupEdit" />
-        <picpenIcon v-else />
+        <picpenIcon v-else-if="!selectId" />
+        <piceditIcon v-else></piceditIcon>
       </el-icon>
     </div>
     <SingleInput
@@ -78,7 +86,7 @@ import { getWholeLinePolygonPoints } from "drawing-board";
 import { board, boardDataChange, mapManage, queryMode } from "./install";
 import { confirm } from "@/helper/message";
 import picpenIcon from "@/assets/pic_pen.svg";
-import { relics } from "@/store/relics";
+import piceditIcon from "@/assets/pic_edit.svg";
 import { ElMessage } from "element-plus";
 
 const boardStatus = board.polygon.status;
@@ -178,8 +186,7 @@ const handleDownload = async (item: any) => {
     title: p.title || p.id,
     desc: p.title || p.id,
   }));
-  console.log(dists, polygonPoints);
-  await downloadPointsXLSL1(points, dists, `${relics!.value.name}-绘制矢量数据.xls`);
+  await downloadPointsXLSL1(points, dists, `${item.name || "本体边界"}-绘制矢量数据`);
 };
 </script>
 
@@ -257,6 +264,13 @@ const handleDownload = async (item: any) => {
       color: #409eff;
     }
 
+    .left {
+      flex: 0 0 220px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+    }
+
     .icon {
       margin-left: 8px;
       font-size: 16px;
@@ -264,10 +278,6 @@ const handleDownload = async (item: any) => {
       cursor: pointer;
     }
 
-    span {
-      word-break: break-all;
-    }
-
     .right {
       flex: none;
       width: 80px;

+ 1 - 0
src/view/pano/pano.vue

@@ -32,6 +32,7 @@
   <SingleInput
     v-if="point"
     :visible="update"
+    isAllowEmpty
     @update:visible="update = false"
     :value="point.name || ''"
     :update-value="tex => updateScenePointName(point!, tex)"

+ 1 - 1
src/view/step-tree-v2/StepTree.vue

@@ -115,7 +115,7 @@ const ctx = computed(() => {
     },
     props.group
   );
-  console.log(ctx.roots);
+  console.log(ctx);
   return ctx;
 });
 

+ 0 - 1
src/view/step-tree-v2/example/data/9.json

@@ -148,7 +148,6 @@
                                             "host": "quadpax11",
                                             "status": "success"
                                         }
-                                        
                                     ],
                                     "name": "step1_1_2_1",
                                     "serviceType": "app1_part2",

+ 19 - 7
src/view/step-tree-v2/helper-v2.ts

@@ -1,4 +1,4 @@
-import { getStepLine, Step, traversalSteps } from "./tree-helper";
+import { getStepLine, Step, Steps } from "./tree-helper";
 import {
   getStepsTreeCtx as getStepsTreeCtxRaw,
   StepsCtx as StepsCtxRaw,
@@ -131,6 +131,19 @@ const setGroupBack = <T>(
   ctx.size.w += maxWidth;
 };
 
+const levelTraversalSteps = <T>(
+  steps: Steps<T>,
+  oper: (steps: Step<T>[]) => void,
+  reverse = false,
+  level = 0
+) => {
+  const cSteps = steps.filter((item) => item.box.level === level);
+  if (cSteps.length === 0) return;
+  reverse || oper(cSteps);
+  levelTraversalSteps(steps, oper, reverse, level + 1);
+  reverse && oper(cSteps);
+};
+
 const setGroupOffset = <T>(
   steps: NStep<DataStepTree<T>>[],
   ctx: StepsCtx<DataStepTree<T>>,
@@ -155,10 +168,9 @@ const setGroupOffset = <T>(
   let offsetNdx = offsetYs.length - 1;
   let offsetLNdx = offsetYs.length - 1;
 
-  traversalSteps({
+  levelTraversalSteps(
     steps,
-    ctx,
-    oper: ({ currents }) => {
+    (currents) => {
       const isBorder = currents.some((current) => groupSteps.includes(current));
       if (isBorder) {
         offsetNdx -= 1;
@@ -180,8 +192,8 @@ const setGroupOffset = <T>(
         offsetLNdx -= 1;
       }
     },
-    reverse: true,
-  });
+    true
+  );
 
   ctx.size.h += offsetYs[offsetYs.length - 1];
 };
@@ -213,8 +225,8 @@ export const getStepsTreeCtx = <T extends DataStep>(
   const groupSteps = groups.map((group) =>
     steps.find((step) => group === step.raw)
   );
-  setGroupOffset(steps, ctx, groupSteps, margin[0]);
   ctx.groupBoxs = [];
+  setGroupOffset(steps, ctx, groupSteps, margin[0]);
   setGroupBack(steps, ctx, groupSteps);
   setGroupLine(ctx, groupSteps, margin);
   return ctx;

+ 32 - 9
src/view/step-tree-v2/tree-helper.ts

@@ -15,6 +15,7 @@ export type StepCtx<T> = {
   parallelWidth?: number;
   // 树宽高
   treeSize?: { w: number; h: number };
+  refTrees?: Step<T>[];
   // 相对于兄弟
   offset: { x: number; y: number };
   treeOffset: { x: number; y: number };
@@ -85,11 +86,11 @@ export const traversalSteps = <T>({
     );
 
     // 查看是否是多对一的情况,如果是这current为所有多的step
-    let currents = [current];
-    if (children.length === 1 && children[0].parents.length > 1) {
-      const steps = children[0].parents;
-      currents = steps.filter((step) => step.box.level === level);
-    }
+    let currents =
+      children.length === 1 && children[0].parents.length > 1
+        ? children[0].parents
+        : [current];
+    currents = currents.filter((c) => c.box.level === level);
     checkeds.push(...currents);
 
     const props = {
@@ -100,7 +101,9 @@ export const traversalSteps = <T>({
       levelSteps: cSteps,
     };
 
-    reverse || oper(props);
+    if (currents.length > 0) {
+      reverse || oper(props);
+    }
     traversalSteps({
       steps,
       ctx,
@@ -110,7 +113,10 @@ export const traversalSteps = <T>({
       reverse,
       checkeds,
     });
-    reverse && oper(props);
+
+    if (currents.length > 0) {
+      reverse && oper(props);
+    }
   }
 };
 
@@ -149,17 +155,27 @@ const setStepsTreeSize = <T>(steps: Steps<T>, ctx: StepsCtx<T>) => {
       }
       const current = currents[0];
       const treeSize = { w: 0, h: 0 };
+      const refTrees: Step<T>[] = [];
       for (const child of current.children) {
         if (child.box.treeSize) {
           treeSize.w += child.box.treeSize.w;
           treeSize.h = Math.max(child.box.treeSize.w, treeSize.w);
         }
+        if (child.box.refTrees.length) {
+          refTrees.push(...child.box.refTrees);
+        } else {
+          refTrees.push(child);
+        }
       }
       treeSize.h += levelHeight;
 
       if (currents.length === 1) {
         // 一对一  一对多情况
-        treeSize.w = Math.max(current.box.size.w, treeSize.w);
+        if (current.box.size.w >= treeSize.w) {
+          treeSize.w = current.box.size.w;
+        } else {
+          current.box.refTrees = refTrees;
+        }
         current.box.treeSize = treeSize;
       } else {
         // 多对一情况
@@ -167,10 +183,15 @@ const setStepsTreeSize = <T>(steps: Steps<T>, ctx: StepsCtx<T>) => {
         for (const parallel of currents) {
           parallelWidth += parallel.box.size.w;
         }
-        treeSize.w = Math.max(parallelWidth, treeSize.w);
+        if (parallelWidth >= treeSize.w) {
+          treeSize.w = parallelWidth;
+        } else {
+          currents[0].box.refTrees = refTrees;
+        }
         currents[0].box.parallelWidth = parallelWidth;
         currents[0].box.treeSize = treeSize;
       }
+      // console.log(currents[0].raw.name, treeSize);
     },
     reverse: true,
   });
@@ -207,6 +228,7 @@ const setStepsOffset = <T>(steps: Steps<T>, ctx: StepsCtx<T>) => {
             }
             if (prevTreeBox) break;
           }
+
           treeOffset.x += prevTreeBox.treeOffset.x + prevTreeBox.parallelWidth;
         }
       } else if (currents[0].parents.length) {
@@ -316,6 +338,7 @@ export const getStepsTreeCtx = <T>(
       const box = { step } as any;
       step.box = box;
       step.box.lines = [];
+      step.box.refTrees = [];
       return box;
     }),
     roots: roots,