Browse Source

feat: fixing typo

gemercheung 1 year ago
parent
commit
928f88e643

+ 10 - 1
src/request/URL.ts

@@ -37,5 +37,14 @@ export const changeUserStatus = `/relics/user/changeStatus`;
 export const delUser = `/relics/user/del/:userId`;
 export const alterUser = `/relics/user/edit`;
 export const getUserSceneInfo = `/relics/user/getUserInfo`;
-export const getUserInfoById = `/relics/user/info/{id}`;
+export const getUserInfoById = `/relics/user/info/:id`;
 export const userScenepage = `/relics/user/page`;
+
+
+///drawing
+
+export const addOrUpdateDrawing = `/relics/relics/drawing/saveOrUpdate`;
+export const delDrawing = `/relics/relics/drawing/del`;
+export const getDrawingDetail = `/relics/relics/drawing/info/:drawingId`;
+export const getDrawingInfoByRelicsId = `/relics/relics/drawing/infoByRelicsId/:drawingId`;
+export const updateDrawing = `/relics/relics/drawing/update`;

+ 49 - 0
src/request/drawing.ts

@@ -0,0 +1,49 @@
+import { sendFetch, PageProps } from './index'
+import { ResPage } from './type'
+import * as URL from "./URL";
+
+// 
+export type PolyDataType = {
+    id: string
+    lineIds: string[]
+    name?: string
+
+}
+export type DrawingDataType = {
+    id: string,
+    polygons: PolyDataType[],
+    points: {
+        id: string
+        rtk: boolean
+        title: string
+        x: number
+        y: number
+    }[],
+    lines: {
+        id: string
+        pointIds: string[]
+
+
+    }
+}
+
+export type DrawingParamsType = {
+    data: DrawingDataType,
+    relicsId: string
+    drawingId?: string
+}
+
+export const addOrUpdateDrawingFetch = (params: Partial<DrawingParamsType>) =>
+    sendFetch<PageProps<DrawingDataType>>(URL.addOrUpdateDrawing, {
+        method: "post",
+        body: JSON.stringify(params),
+    });
+
+
+
+export const getDrawingDetailFetch = (drawingId: string) =>
+    sendFetch<PageProps<DrawingParamsType>>(
+        URL.getDrawingInfoByRelicsId,
+        { method: "post", body: JSON.stringify({}) },
+        { paths: { drawingId: drawingId } }
+    );

+ 1 - 1
src/store/relics.ts

@@ -18,7 +18,7 @@ export const initRelics = async (relicsId: number) => {
   }
 };
 export const initSelfRelics = async (relicsId: number) => {
-  await relicsSelfCheckFetch(relicsId);
+  // await relicsSelfCheckFetch(relicsId);
 
   relics.value = await relicsInfoFetch(relicsId);
   if (relics.value) {

+ 4 - 1
src/view/map/board/polygons.ts

@@ -161,7 +161,7 @@ const pointActShapeFactory = (attrib: PolygonsPointAttrib, tree: any) => {
 };
 
 export class Polygons extends PenEditWholeLine<PolygonsAttrib & Attrib> {
-  bus = mitt<{ clickPoint: PolygonsPointAttrib }>();
+  bus = mitt<{ clickPoint: PolygonsPointAttrib, penEndHandler: void }>();
   activePointId = ref<string>();
 
   dragAttach(inc: WholeLineInc<PolygonsAttrib & Attrib>) {
@@ -210,6 +210,9 @@ export class Polygons extends PenEditWholeLine<PolygonsAttrib & Attrib> {
           operShape.name() === "anchor-point"
         );
       },
+      quitHandler:() => {
+        this.bus.emit('penEndHandler')
+      },
       canDelPoint: (p) => !p.rtk,
       quotePoint: false,
     });

+ 39 - 9
src/view/map/map-board.vue

@@ -38,7 +38,7 @@
     </div>
 
     <Teleport to="body" v-if="isMounted">
-      <div class="draw-global-icon" v-if="isCurrentTab(1)" @click="handleBoardDraw">
+      <div class="draw-global-icon" v-if="isCurrentTab(1) && !isEditDrawingMode" @click="handleBoardDraw">
         <el-icon size="30">
           <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24">
             <path fill="currentColor"
@@ -61,6 +61,7 @@ import { onMounted, ref, watchEffect, watch, onUnmounted, computed } from "vue";
 import { createBoard, scenePosTransform } from "./board";
 import MapRightPoly from "./map-right-poly.vue";
 import { Back } from "@element-plus/icons-vue";
+import { addOrUpdateDrawingFetch, getDrawingDetailFetch, DrawingParamsType, DrawingDataType } from '@/request/drawing.ts'
 // import { relicsPolyginsFetch } from "@/request";
 import {
   Grid,
@@ -75,6 +76,7 @@ import {
   tileType,
 } from "./map-flow";
 
+
 const relicsId = computed(() => router.currentRoute.value.params.relicsId || '')
 
 const gotoPointPage = (point: ScenePoint) => {
@@ -87,7 +89,7 @@ const gotoPointPage = (point: ScenePoint) => {
 const isMounted = ref(false)
 const currentTab = ref(0);
 const isCurrentTab = ref((index: number) => currentTab.value === index)
-
+const isEditDrawingMode = ref(false);
 
 
 const autoInitPos = () => {
@@ -204,17 +206,23 @@ onMounted(async () => {
   mapManage = mapManageInit(mapContainer.value!);
   board = (window as any).board = boardInit(boardContainer.value!, mapManage);
   isMounted.value = true
+  try {
+    const res = await getDrawingDetailFetch(String(relicsId.value));
+    console.log('res', res.data)
+    setTimeout(() => { })
+
+    // board.setData(res.data, String(relicsId.value))
+  } catch (error) {
 
+  }
   const borardPolyData = computed(() => board.getData());
 
+
   watch(borardPolyData, (updater) => {
     if (updater) {
-      console.log('borardPolyData', updater);
+      // console.log('borardPolyData', updater);
       console.log('borardPolyData', JSON.stringify(updater));
     }
-
-
-
   }, { immediate: true, deep: true })
 });
 
@@ -229,18 +237,40 @@ const handleTabs = (index: number) => {
 }
 
 const handleBoardDraw = () => {
-
-  console.log('handleBoardDraw--开始start draw', String(relicsId.value), board.polygon())
+  console.log('开始start draw', String(relicsId.value), board.polygon())
   try {
     board.polygon().editPolygon();
-    // const endHandler = board.polygon().editPolygon();
+    isEditDrawingMode.value = true;
+    board.polygon().bus.on('penEndHandler', handleSyncDataToServer)
 
   } catch (error) {
     console.error('error', error)
   }
+}
+const handleSyncDataToServer = async () => {
+  console.log('handleSyncDataToServer')
+  const data = board.getData() as any as DrawingDataType;
+  const param: DrawingParamsType = {
+    data: data,
+    relicsId: String(relicsId.value),
+    // drawingId: String(relicsId.value)
+  }
+  patchPolyName(data);
+  await addOrUpdateDrawingFetch(param);
+  isEditDrawingMode.value = false;
+  board.polygon().bus.off('penEndHandler');
 
 }
 
+const patchPolyName = (data: DrawingDataType) => {
+  const poly = data.polygons
+  poly?.forEach(item => {
+    if (!item.name) {
+      item.name = ''
+    }
+  })
+
+}
 
 </script>
 

+ 38 - 66
src/view/map/map-right.vue

@@ -7,8 +7,8 @@
             <template #append>
               <el-button type="primary" @click="updateRelics">修改</el-button>
             </template>
-          </el-input>
-        </el-form-item> -->
+</el-input>
+</el-form-item> -->
 
         <el-form-item>
           <el-button type="primary" :icon="Plus" style="width: 100%" @click="addHandler">
@@ -18,47 +18,34 @@
       </el-form>
       <div class="tree-layout">
         <p>全部数据</p>
-        <el-tree
-          style="max-width: 600px"
-          :data="treeNode"
-          :props="{ disabled: 'run' }"
-          node-key="id"
-          ref="treeRef"
-          :show-checkbox="router.currentRoute.value.name === 'map'"
-          default-expand-all
-          :expand-on-click-node="false"
-        >
+        <el-tree style="max-width: 600px" :data="treeNode" :props="{ disabled: 'run' }" node-key="id" ref="treeRef"
+          :show-checkbox="router.currentRoute.value.name === 'map'" default-expand-all :expand-on-click-node="false">
           <template #default="{ node, data }">
-            <div
-              class="tree-item"
-              @click="!data.disable && emit((data.type === 'scene' ? 'flyScene' : 'flyPoint') as any, data.raw)"
-            >
-              <el-tooltip
-                v-if="data.type === 'scene'"
-                class="box-item"
-                effect="dark"
-                :content="data.raw.sceneName + ' ' + node.label"
-                placement="top"
-              >
+            <div class="tree-item"
+              @click="!data.disable && emit((data.type === 'scene' ? 'flyScene' : 'flyPoint') as any, data.raw)">
+              <el-tooltip v-if="data.type === 'scene'" class="box-item" effect="dark"
+                :content="data.raw.sceneName + ' ' + node.label" placement="top">
                 <span :class="{ disable: data.disable }" class="title">
-                  <el-icon> <Grid /> </el-icon>
+                  <el-icon>
+                    <Grid />
+                  </el-icon>
                   {{ data.raw.sceneName }}
+              
                   <span class="tree-scene-name">{{ node.label }}</span>
                 </span>
               </el-tooltip>
-              <el-tooltip
-                v-else
-                class="box-item"
-                effect="dark"
-                :content="node.label"
-                placement="top"
-              >
+              <el-tooltip v-else class="box-item" effect="dark" :content="node.label" placement="top">
                 <span :class="{ disable: data.disable }" class="title">
                   <el-icon>
                     <LocationInformation v-if="!data.disable" />
                     <DeleteLocation v-else />
                   </el-icon>
                   {{ node.label }}
+                  <!-- uu -->
+                </span>
+                <span :class="{ disable: data.disable }" class="name">
+
+             
                 </span>
               </el-tooltip>
               <span class="oper">
@@ -73,14 +60,11 @@
                   </el-icon>
                 </template>
                 <el-icon color="#409efc" style="margin-left: 8px">
-                  <Link
-                    v-if="!data.run"
-                    @click.stop="
-                      data.type === 'scene'
-                        ? gotoScene(data.raw)
-                        : emit('gotoPoint', data.raw)
-                    "
-                  />
+                  <Link v-if="!data.run" @click.stop="
+                    data.type === 'scene'
+                      ? gotoScene(data.raw)
+                      : emit('gotoPoint', data.raw)
+                    " />
                 </el-icon>
               </span>
             </div>
@@ -90,41 +74,24 @@
     </div>
 
     <template v-if="router.currentRoute.value.name === 'map'">
-      <el-button
-        type="primary"
-        :icon="Download"
-        style="width: 100%"
-        @click="exportFile(getSelectPoints(), 2, relics?.name)"
-      >
+      <el-button type="primary" :icon="Download" style="width: 100%"
+        @click="exportFile(getSelectPoints(), 2, relics?.name)">
         导出本体边界坐标
       </el-button>
-      <el-button
-        type="primary"
-        :icon="Download"
-        style="width: 100%; margin-top: 20px; margin-left: 0"
-        @click="exportFile(getSelectPoints(), 1, relics?.name)"
-      >
+      <el-button type="primary" :icon="Download" style="width: 100%; margin-top: 20px; margin-left: 0"
+        @click="exportFile(getSelectPoints(), 1, relics?.name)">
         导出绘制矢量数据
       </el-button>
 
-      <el-button
-        type="primary"
-        :icon="Download"
-        style="width: 100%; margin-top: 20px; margin-left: 0"
-        @click="exportImage(getSelectPoints(), relics?.name)"
-      >
+      <el-button type="primary" :icon="Download" style="width: 100%; margin-top: 20px; margin-left: 0"
+        @click="exportImage(getSelectPoints(), relics?.name)">
         下载全景图
       </el-button>
     </template>
   </div>
 
-  <SingleInput
-    :visible="!!inputPoint"
-    @update:visible="inputPoint = null"
-    :value="inputPoint?.name || ''"
-    :update-value="updatePointName"
-    title="修改点位名称"
-  />
+  <SingleInput :visible="!!inputPoint" @update:visible="inputPoint = null" :value="inputPoint?.name || ''"
+    :update-value="updatePointName" title="修改点位名称" />
 </template>
 
 <script setup lang="ts">
@@ -184,12 +151,12 @@ const treeNode = computed(() =>
     disable: scene.scenePos.every((pos) => !pos.pos || pos.pos.length === 0),
     raw: scene,
     children: scene.scenePos.map((pos) => ({
-      label: pos.name,
+      label: pos.uuid,
       run: scene.calcStatus !== SceneStatus.SUCCESS,
       disable: !pos.pos || pos.pos.length === 0,
       id: pos.id,
       type: "point",
-      raw: { ...pos, cameraType: scene.cameraType },
+      raw: { ...pos, name: pos.name, cameraType: scene.cameraType },
     })),
   }))
 );
@@ -253,10 +220,12 @@ const addSceneHandler = async (scenes: Pick<Scene, "sceneId" | "sceneCode">[]) =
     text-overflow: ellipsis; //文本溢出显示省略号
     white-space: nowrap; //文本不会换行
   }
+
   .oper {
     flex: none;
   }
 }
+
 .disable {
   pointer-events: all;
 }
@@ -267,15 +236,18 @@ const addSceneHandler = async (scenes: Pick<Scene, "sceneId" | "sceneCode">[]) =
     font-size: 14px;
   }
 }
+
 .right-layout {
   display: flex;
   height: 100%;
   flex-direction: column;
+
   .right-content {
     flex: 1;
     overflow-y: auto;
   }
 }
+
 .tree-layout .tree-scene-name {
   font-size: 10px;
   margin: 0;