浏览代码

修复选中的bug

louhangfei 2 年之前
父节点
当前提交
8ff6d5d65a

+ 5 - 1
src/views/map-config/mini-map/MapBase/useCameraMap.ts

@@ -31,7 +31,7 @@ function useCameraMap(props: Props) {
       stopContextMenu: true, // 禁止默认右键菜单
     });
     addListener();
-    window.canvas = canvas;
+    // window.canvas = canvas;
   };
 
   /** 监听点击事件 */
@@ -193,6 +193,9 @@ function useCameraMap(props: Props) {
   const getObjects = () => {
     return canvas?.getObjects() as CameraImage[];
   };
+  const getActiveObject = () => {
+    return canvas?.getActiveObject() as CameraImage;
+  };
 
   /**  根据cameraId查找某个元素 */
   const getCameraById = (cameraId: string) => {
@@ -214,6 +217,7 @@ function useCameraMap(props: Props) {
     hasCamera,
     getCameraById,
     getObjects,
+    getActiveObject,
   };
 }
 

+ 6 - 1
src/views/map-config/mini-map/MiniMapConfig.vue

@@ -118,6 +118,7 @@
   const { scenesTree, shopCameraList, selectedShopCode, selectedShopDetail } = storeToRefs(miniMap);
   const { getScenesTree, getShowCameras, getMapLayout } = miniMap;
   const selectedPositionHash = ref('');
+  const allObjects = ref<CameraImage[]>([]);
 
   const onSelectCamera = (cameraImg: CameraImage) => {
     selectedCamera.value = cameraImg;
@@ -201,6 +202,7 @@
         } else {
           defaultCamera.value = map.getObjects()?.[0] as CameraImage;
         }
+        allObjects.value = map.getObjects();
         renderMap();
       });
     });
@@ -237,7 +239,7 @@
 
   /** 摄像机是否已添加到底图 */
   const isAddedToMap = (cameraId: string): boolean => {
-    return map.hasCamera(cameraId);
+    return !!allObjects.value.find((item) => item.cameraId === cameraId);
   };
 
   const handleAddCamera = (cameraId: string) => {
@@ -249,6 +251,7 @@
       if (!defaultCamera.value?.cameraId) {
         defaultCamera.value = cameraImg;
       }
+      allObjects.value = map.getObjects();
     });
   };
 
@@ -275,6 +278,8 @@
     if (selectedCamera.value.cameraId === defaultCamera.value?.cameraId) {
       defaultCamera.value = map.getObjects()?.[0];
     }
+    allObjects.value = map.getObjects();
+    selectedCamera.value = map.getActiveObject();
   };
 
   const handleSetDefault = () => {