Przeglądaj źródła

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

gemercheung 1 rok temu
rodzic
commit
776fd238c4

Plik diff jest za duży
+ 304 - 329
pnpm-lock.yaml


Plik diff jest za duży
+ 1199 - 0
src/lib/board/4dmap.d.ts


Plik diff jest za duży
+ 13736 - 0
src/lib/board/4dmap.js


Plik diff jest za duży
+ 11 - 0
src/lib/board/4dmap.umd.cjs


+ 0 - 1
src/submodule

@@ -1 +0,0 @@
-Subproject commit c630b27d494ceb00dcb4cdd217705d97520729df

+ 94 - 44
src/view/map/map-board.vue

@@ -6,13 +6,21 @@
           <el-button :icon="Back" circle type="primary" @click="router.back()" />
         </div>
         <div class="nav_container">
-          <div class="nav_item" :class="{ active: isCurrentTab(0) }" @click="handleTabs(0)">
+          <div
+            class="nav_item"
+            :class="{ active: isCurrentTab(0) }"
+            @click="handleTabs(0)"
+          >
             <el-icon size="20">
               <locationIcon />
             </el-icon>
             <span>坐标</span>
           </div>
-          <div class="nav_item" :class="{ active: isCurrentTab(1) }" @click="handleTabs(1)">
+          <div
+            class="nav_item"
+            :class="{ active: isCurrentTab(1) }"
+            @click="handleTabs(1)"
+          >
             <el-icon size="20">
               <vectorIcon />
             </el-icon>
@@ -23,22 +31,46 @@
     </Teleport>
     <div id="map" class="map-container" ref="mapContainer" @click.stop>
       <div class="map-component">
-        <el-select v-model="tileType" placeholder="选择底图" style="width: 120px" class="tile-type-select">
-          <el-option v-for="item in tileOptions" :key="item" :label="item" :value="item" />
+        <el-select
+          v-model="tileType"
+          placeholder="选择底图"
+          style="width: 120px"
+          class="tile-type-select"
+        >
+          <el-option
+            v-for="item in tileOptions"
+            :key="item"
+            :label="item"
+            :value="item"
+          />
         </el-select>
       </div>
 
       <div class="board" ref="boardContainer"></div>
     </div>
     <div class="right-control">
-      <MapRight v-if="isCurrentTab(0)" @fly-point="flyScenePoint" @fly-scene="flyScene" @goto-point="gotoPointPage" />
-      <MapRightPoly @del="handlePolysDel" @edit="handlePolysEdit" :data="boardData" v-if="isCurrentTab(1)">
+      <MapRight
+        v-if="isCurrentTab(0)"
+        @fly-point="flyScenePoint"
+        @fly-scene="flyScene"
+        @goto-point="gotoPointPage"
+      />
+      <MapRightPoly
+        @del="handlePolysDel"
+        @edit="handlePolysEdit"
+        :data="boardData"
+        v-if="boardData && isCurrentTab(1)"
+      >
       </MapRightPoly>
     </div>
 
     <Teleport to="body" v-if="isMounted">
       <!-- <el-button class="temp_btn" @click="clearPolys">后端全清</el-button> -->
-      <div class="draw-global-icon" v-if="isCurrentTab(1) && !isEditDrawingMode" @click="handleBoardDraw">
+      <div
+        class="draw-global-icon"
+        v-if="isCurrentTab(1) && !isEditDrawingMode"
+        @click="handleBoardDraw"
+      >
         <el-icon size="36">
           <picpenIcon />
         </el-icon>
@@ -51,15 +83,15 @@
 import MapRight from "./map-right.vue";
 import { router, setDocTitle } from "@/router";
 import { Manage } from "./openlayer";
-import { ScenePoint, Scene, scenePoints, scenes } from "@/store/scene";
+import { ScenePoint, Scene, scenePoints, scenes, SceneStatus } from "@/store/scene";
 import { initRelics, initSelfRelics, relics } from "@/store/relics";
 import { onMounted, ref, watchEffect, watch, onUnmounted, computed } from "vue";
-import { createBoard, scenePosTransform } from "./board";
+import { createBoard, PolygonsPointAttrib } from "drawing-board";
 import MapRightPoly from "./map-right-poly.vue";
 import { Back } from "@element-plus/icons-vue";
-import vectorIcon from '@/assets/vector.svg';
-import picpenIcon from '@/assets/pic_pen.svg';
-import locationIcon from '@/assets/location.svg';
+import vectorIcon from "@/assets/vector.svg";
+import picpenIcon from "@/assets/pic_pen.svg";
+import locationIcon from "@/assets/location.svg";
 import {
   addOrUpdateDrawingFetch,
   getDrawingDetailFetch,
@@ -70,13 +102,30 @@ import {
 // import { relicsPolyginsFetch } from "@/request";
 // import { Grid, LocationInformation } from "@element-plus/icons-vue";
 
-import {
-  mapManageInit,
-  boardInit,
-  flyUserCenter,
-  tileOptions,
-  tileType,
-} from "./map-flow";
+import { mapManageInit, flyUserCenter, tileOptions, tileType } from "./map-flow";
+
+const scenePosTransform = (scenes: Scene[]) => {
+  const points: PolygonsPointAttrib[] = [];
+
+  scenes.forEach((scene) => {
+    if (scene.calcStatus !== SceneStatus.SUCCESS) {
+      return;
+    }
+    scene.scenePos.forEach((pos) => {
+      if (!pos.pos || pos.pos.length === 0) {
+        return;
+      }
+      points.push({
+        x: pos.pos[0],
+        y: pos.pos[1],
+        title: pos.name,
+        id: pos.id.toString(),
+        rtk: true,
+      });
+    });
+  });
+  return points;
+};
 
 const relicsId = computed(() => router.currentRoute.value.params.relicsId || "");
 
@@ -124,7 +173,7 @@ const flyScene = (scene: Scene) => {
 
 const flyScenePoint = (point: ScenePoint) => {
   flyPos(point.pos);
-  board.polygon().activePointId.value = point.id.toString();
+  board.polygon.status.activePointId = point.id.toString();
 };
 
 watch(
@@ -152,7 +201,7 @@ watch(
         // );
         initCroodTabdata();
 
-        board.polygon().bus.on("clickPoint", (bpoint) => {
+        board.polygon.bus.on("clickPoint", (bpoint) => {
           const point =
             bpoint.id &&
             scenePoints.value.find((point) => point.id.toString() === bpoint.id);
@@ -162,7 +211,7 @@ watch(
         // relicsPolyginsFetch().then((data) => {
         //   relics.value;
         //   board.setData(data, router.currentRoute.value.params.relicsId as string);
-        //   board.polygon().bus.on("clickPoint", (bpoint) => {
+        //   board.polygon.bus.on("clickPoint", (bpoint) => {
         //     const point =
         //       bpoint.id &&
         //       scenePoints.value.find((point) => point.id.toString() === bpoint.id);
@@ -202,17 +251,19 @@ watchEffect(() => {
 const mapContainer = ref<HTMLDivElement>();
 const boardContainer = ref<HTMLDivElement>();
 let mapManage: Manage;
-let board: ReturnType<typeof createBoard>;
+
+const board = createBoard();
 const boardData = ref<DrawingDataType | null>(null);
 let endEdithandler;
 
 onMounted(async () => {
   mapManage = mapManageInit(mapContainer.value!);
-  board = (window as any).board = boardInit(boardContainer.value!, mapManage);
+  board.setProps({
+    dom: boardContainer.value!,
+    map: mapManage.map,
+  });
   isMounted.value = true;
-
   const borardPolyData = computed(() => board.getData());
-
   watch(
     borardPolyData,
     (updater) => {
@@ -234,11 +285,11 @@ const handleTabs = (index: number) => {
 };
 
 const handleBoardDraw = () => {
-  console.log("开始start draw", String(relicsId.value), board.polygon());
+  console.log("开始start draw", String(relicsId.value), board.polygon);
   try {
-    endEdithandler = board.polygon().editPolygon();
+    endEdithandler = board.polygon.editPolygon();
     isEditDrawingMode.value = true;
-    board.polygon().bus.on("penEndHandler", handleSyncDataToServer);
+    board.polygon.bus.on("penEndHandler", handleSyncDataToServer);
   } catch (error) {
     console.error("error", error);
   }
@@ -247,6 +298,7 @@ const handleSyncDataToServer = () => {
   setTimeout(async () => {
     console.log("handleSyncDataToServer");
     const data = (board.getData() as any) as DrawingDataType;
+    console.log(data);
     boardData.value = data;
     const param: DrawingParamsType = {
       data: data,
@@ -257,7 +309,7 @@ const handleSyncDataToServer = () => {
     await addOrUpdateDrawingFetch(param);
     isEditDrawingMode.value = false;
 
-    board.polygon().bus.off("penEndHandler");
+    board.polygon.bus.off("penEndHandler");
     if (endEdithandler) {
       console.log("end edit");
     }
@@ -289,14 +341,12 @@ watch(
 const initCroodTabdata = async () => {
   const points = scenePosTransform(scenes.value);
   console.log("initCroodTabdata", points, scenes.value);
-  board.setData(
-    {
-      points: points,
-      lines: [],
-      polygons: [],
-    },
-    String(relicsId.value)
-  );
+  board.setData({
+    id: String(relicsId.value),
+    points: points,
+    lines: [],
+    polygons: [],
+  });
 };
 
 const initPolyTabData = async () => {
@@ -308,15 +358,16 @@ const initPolyTabData = async () => {
       if (res.data) {
         boardData.value = res.data;
         boardData.value.points = points.concat(res.data.points);
-        board.setData(boardData.value, String(relicsId.value));
+        console.log(boardData.value);
+        board.setData({ ...boardData.value, id: String(relicsId.value) });
       }
     }, 500);
-  } catch (error) { }
+  } catch (error) {}
 };
 
 const handlePolysDel = (id: string) => {
   try {
-    board.polygon().removePolygon(id);
+    board.polygon.removePolygon(id);
     handleSyncDataToServer();
   } catch (error) {
     console.error("handlePolysDel", error);
@@ -422,7 +473,7 @@ const handlePolysEdit = (item: PolyDataType) => {
   &.light {
     --color: #fff;
 
-    >div {
+    > div {
       text-shadow: 0 0 2px #000;
     }
   }
@@ -430,7 +481,7 @@ const handlePolysEdit = (item: PolyDataType) => {
   &.dark {
     --color: #000;
 
-    >div {
+    > div {
       text-shadow: 0 0 2px #fff;
     }
   }
@@ -491,7 +542,6 @@ const handlePolysEdit = (item: PolyDataType) => {
         background-color: #ecf5ff;
         position: relative;
 
-
         &::before {
           content: "";
           height: 100%;

+ 1 - 1
src/view/map/map-right-poly.vue

@@ -43,7 +43,7 @@ import { scenePoints } from "@/store/scene";
 
 import { relics } from "@/store/relics";
 import { ElMessageBox } from "element-plus";
-import { getWholeLinePolygonPoints } from "@/submodule/src/board";
+import { getWholeLinePolygonPoints } from "drawing-board";
 
 const props = defineProps<{
   data: DrawingDataType | null;

+ 3 - 6
tsconfig.json

@@ -27,10 +27,7 @@
         "src/*"
       ],
       "drawing-board": [
-        "./src/submodule/src/board/index.ts"
-      ],
-      "drawing-board/*": [
-        "./src/submodule/src/board/*"
+        "./src/lib/board/4dmap.d.ts"
       ]
     }
   },
@@ -39,8 +36,8 @@
     "src/**/*.tsx",
     "src/**/*.vue"
   ],
-  "exclude":[
-       "./src/submodule/src/board/*"
+  "exclude": [
+    "./src/submodule/src/board/*"
   ],
   "references": [
     {

+ 45 - 45
vite.config.ts

@@ -1,52 +1,52 @@
 import { defineConfig, loadEnv } from "vite";
 import { resolve } from "path";
 import vue from "@vitejs/plugin-vue";
-import svgLoader from 'vite-svg-loader'
-
+import svgLoader from "vite-svg-loader";
 
 // https://vitejs.dev/config/
-export default ({ mode }) => defineConfig({
-  base: "./",
-  plugins: [vue(), svgLoader()],
-  resolve: {
-    alias: [
-      {
-        find: "@",
-        replacement: resolve(__dirname, "./src"),
-      },
-      {
-        find: "drawing-board",
-        replacement: resolve(__dirname, "./src/submodule/src/board"),
-      },
-    ],
-  },
-  server: {
-    host: "0.0.0.0",
-    port: 5173,
-    open: true,
-    proxy: {
-      // "/api": {
-      //   target: "http://192.168.0.11:8324",
-      //   changeOrigin: true,
-      //   rewrite: (path) => path.replace(/^\/api/, ""),
-      // },
-      "/gear1": {
-        target: `http://devimages.apple.com/iphone/samples/bipbop`,
-        changeOrigin: true,
-        rewrite: (path) => path.replace(/^\/gear1/, "/gear1"),
-      },
-      "/api": {
-        target: loadEnv(mode, process.cwd()).VITE_API,
-        changeOrigin: true,
-        rewrite: (path) => path.replace(/^\/api/, "/api"),
+export default ({ mode }: any) =>
+  defineConfig({
+    base: "./",
+    plugins: [vue(), svgLoader()],
+    resolve: {
+      alias: [
+        {
+          find: "@",
+          replacement: resolve(__dirname, "./src"),
+        },
+        {
+          find: "drawing-board",
+          replacement: resolve(__dirname, "./src/submodule/src/board"),
+        },
+      ],
+    },
+    server: {
+      host: "0.0.0.0",
+      port: 5173,
+      open: true,
+      proxy: {
+        // "/api": {
+        //   target: "http://192.168.0.11:8324",
+        //   changeOrigin: true,
+        //   rewrite: (path) => path.replace(/^\/api/, ""),
+        // },
+        "/gear1": {
+          target: `http://devimages.apple.com/iphone/samples/bipbop`,
+          changeOrigin: true,
+          rewrite: (path) => path.replace(/^\/gear1/, "/gear1"),
+        },
+        "/api": {
+          target: loadEnv(mode, process.cwd()).VITE_API,
+          // target: `http://192.168.0.11:8324/relics/`,
+          changeOrigin: true,
+          rewrite: (path) => path.replace(/^\/api/, "/api"),
+        },
+        // "/api": {
+        //   target: `https://uat-sp.4dkankan.com/`,
+        //   // target: `http://192.168.0.11:8324/relics/`,
+        //   changeOrigin: true,
+        //   rewrite: (path) => path.replace(/^\/api/, "/api"),
+        // },
       },
-      // "/api": {
-      //   target: `https://uat-sp.4dkankan.com/`,
-      //   // target: `http://192.168.0.11:8324/relics/`,
-      //   changeOrigin: true,
-      //   rewrite: (path) => path.replace(/^\/api/, "/api"),
-      // },
-
     },
-  },
-});
+  });