Просмотр исходного кода

fix: 修复切换算法参数后未把电子围栏数据给清空

louhangfei 1 год назад
Родитель
Сommit
aa32e9c033

+ 1 - 1
src/api/camera/camera-preview.ts

@@ -538,7 +538,7 @@ export const getCameraDeatilById = (id: number) => {
   });
 };
 
-interface UpdateBatchCameraFenceParam {
+export interface UpdateBatchCameraFenceParam {
   /* 关联的id,不等于algoId */
   id: number;
 

+ 5 - 2
src/views/cameras/algo-params-setting/components/AlgorithmsSetting/AlgorithmsSetting.vue

@@ -39,7 +39,6 @@
     updateCameraAlgoApi,
     FENCE_ENBALED_STATUS,
     CameraAlgoItem,
-    updateCameraAlgoStatusApi,
     updateCameraAlgoRelStatus,
   } from '@/api/camera/camera-preview';
   import { ElMessage, ElMessageBox } from 'element-plus';
@@ -105,7 +104,11 @@
     fenceStore
       .confirmExitFence()
       .then(checkExitParams)
-      .then(() => switchToNewAlgo(algoId));
+      .then(() => {
+        switchToNewAlgo(algoId);
+        // 切换成功后要把原来的电子围栏数据给清空
+        fenceStore.clear();
+      });
   };
 
   watchEffect(() => {

+ 1 - 3
src/views/cameras/algo-params-setting/hooks/useParamsSettingFn.ts

@@ -76,14 +76,12 @@ export const useParamsSettingFn = () => {
       return;
     }
 
-    updateBatchCameraFenceApi({
+    fenceStore.updateBatchCameraFence({
       id: fenceStore.currentFenceGroupId!,
       cameraId,
       algoId,
       presetToken,
       electronicFencePolygon: JSON.stringify(fenceStore.allFences),
-    }).then(() => {
-      ElMessage.success('保存成功');
     });
   };
 

+ 17 - 5
src/views/cameras/algo-params-setting/store/useFenceStore.ts

@@ -1,10 +1,10 @@
-import { GetFenceParams, getFenceApi } from '@/api/camera/camera-preview';
+import { GetFenceParams, getFenceApi, UpdateBatchCameraFenceParam } from '@/api/camera/camera-preview';
 import { defineStore } from 'pinia';
 import { computed, ref } from 'vue';
 import { ServerLine, ServerLineInfos } from '../components/FenceEditor/constants';
 import safeParse from '@/utils/safeParse';
-import { ElMessageBox } from 'element-plus';
-
+import { ElMessage, ElMessageBox } from 'element-plus';
+import { updateBatchCameraFenceApi } from '@/api/camera/camera-preview';
 /** 当前电子围栏的store */
 export const useFenceStore = defineStore('fencePolygonStore', () => {
   /** 初始的电子围栏。用于取消时恢复数据 */
@@ -71,23 +71,35 @@ export const useFenceStore = defineStore('fencePolygonStore', () => {
         cancelButtonText: '取消',
         type: 'warning',
         dangerouslyUseHTMLString: true,
+      }).then(() => {
+        return Promise.resolve();
       });
     } else {
-      return Promise.resolve(true);
+      return Promise.resolve();
     }
   };
 
+  /** 本地电子围栏数据保存到后端 */
+  const updateBatchCameraFence = (data: UpdateBatchCameraFenceParam) => {
+    updateBatchCameraFenceApi(data).then(() => {
+      // 保存成功后初始值要和当前值保持一致,避免触发confirmExitFence逻辑
+      initialFence.value = allFences.value;
+      ElMessage.success('保存成功');
+    });
+  };
+
   return {
     allFences,
     isChanged,
     currentFenceId,
     currentFenceGroupId,
+    initialFence,
     clear,
     showFenceTool,
-
     getFence,
     reset,
     confirmExitFence,
+    updateBatchCameraFence,
   };
 });