Преглед на файлове

fix: 修复algoId不正确问题

louhangfei преди 1 година
родител
ревизия
06dfb2a31c

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

@@ -120,9 +120,9 @@ export const getAlgosByCameraId = (cameraId: number) => {
 
 /** 相机关联的算法信息 */
 export interface CameraAlgoItem {
-  id?: number;
+  id: number;
   algoId: number;
-  cameraId?: number;
+  cameraId: number;
   code: string;
   name: string;
   detectionFrequency: number;

+ 2 - 2
src/modules/algo-params-setting-base/components/AlgorithmsSetting/AlgorithmsSetting.vue

@@ -47,7 +47,7 @@
   import useCameraDetailStore from '../../store/useCameraDetailStore';
   import usePresetListStore from '../../store/usePresetListStore';
   // import AddAlgoDialog from './AddAlgoDialog.vue';
-  import { createAlgoSubmitParams, algoDetailToJSON } from '@/modules/algo/algo-params-edit/utils';
+  import { createAlgoSubmitParams, algoDetailToJSON, cameraAlgoToJSON } from '@/modules/algo/algo-params-edit/utils';
 
   import { ALGO_ENABLED_STATUS } from '@/api/camera/camera-preview';
   import { ref, watchEffect } from 'vue';
@@ -116,7 +116,7 @@
     if (!algoId) return;
     const detail = getAlgoDetail(algoId);
     if (!detail) return;
-    selectedAlgoDetail.value = algoDetailToJSON(detail);
+    selectedAlgoDetail.value = cameraAlgoToJSON(detail);
     fenceStore.getFence({
       algoId: algoId,
       cameraId: cameraDetailStore.cameraId,

+ 34 - 8
src/modules/algo/algo-params-edit/utils.ts

@@ -7,6 +7,7 @@ import { TimeRangeItem, TimePeriodItem } from '@/modules/algo/algo-params-edit/t
 
 import { ALGO_ENABLED_STATUS, CameraAlgoItem, FENCE_ENBALED_STATUS } from '@/api/camera/camera-preview';
 import safeParse from '@/utils/safeParse';
+import { QueryAlgoInfoRes } from '@/api/camera/camera-config';
 
 // export const createDefaultTime = (): TimeRangeItem => {
 //   return { id: uid(), value: [dayjs(), dayjs().add(1, 'hour')] as [Dayjs, Dayjs] };
@@ -132,9 +133,9 @@ export const getCriticalCounts = (extra: string | undefined | null) => {
 
 export const getExtraCommonInfo = (detail: CameraAlgoItem | undefined | null) => {
   if (!detail) return {};
-  let extraValue = getCommonInfo(detail.extra);
+  let extraValue = getCommonInfoByExtra(detail.extra);
   if (isEqual(extraValue, {})) {
-    extraValue = getCommonInfo(detail.algoInfo?.extra);
+    extraValue = getCommonInfoByExtra(detail.algoInfo?.extra);
   }
   return extraValue;
 };
@@ -149,7 +150,8 @@ interface CommonInfo {
   timeWindow?: number;
 }
 
-const getCommonInfo = (extra: string | undefined | null): CommonInfo => {
+// 根据算法的extra字符串转化为JSON信息
+const getCommonInfoByExtra = (extra: string | undefined | null): CommonInfo => {
   if (!extra) return {};
   const extraObj = safeParse(extra);
   const params = extraObj?.inferParams;
@@ -228,8 +230,8 @@ export const createAlgoSubmitParams = (param, initialAlgoDetail) => {
   return newParam;
 };
 
-/** algo的extra详情转化为json */
-export const algoDetailToJSON = (detail) => {
+/** 相机关联的算法转化数据结构 */
+export const cameraAlgoToJSON = (detail: CameraAlgoItem) => {
   const enableCard = detail?.status === ALGO_ENABLED_STATUS.enabled ? true : false;
   const electronicFenceBool = detail?.electronicFence === FENCE_ENBALED_STATUS.enabled ? true : false;
 
@@ -238,17 +240,41 @@ export const algoDetailToJSON = (detail) => {
   const metaValues = getMetaValues(detail?.extra) || [];
 
   const commonInfo = getExtraCommonInfo(detail);
-
   return {
     ...detail,
-    algoId: detail?.id, // 兼容算法默认参数
+    algoId: detail.algoId, // 兼容算法默认参数
     algoInfo: detail, // 兼容算法默认参数
     inferCode: getInferCode(detail?.extra),
-    // detectionJSON,
     enableCardBool: enableCard,
     electronicFenceBool,
     timeRangeArr,
     metaValues,
+    ...commonInfoToJSON(commonInfo),
+  };
+};
+
+/** 算法自身数据结构转化json */
+export const algoMetaToJSON = (detail: QueryAlgoInfoRes) => {
+  const enableCard = detail?.status === ALGO_ENABLED_STATUS.enabled ? true : false;
+
+  const metaValues = getMetaValues(detail?.extra) || [];
+
+  const commonInfo = getCommonInfoByExtra(detail.extra);
+  return {
+    ...detail,
+    algoId: detail.id, // 兼容算法默认参数
+    algoInfo: detail, // 兼容算法默认参数
+    inferCode: getInferCode(detail?.extra),
+    enableCardBool: enableCard,
+    electronicFenceBool: false,
+    timeRangeArr: [],
+    metaValues,
+    ...commonInfoToJSON(commonInfo),
+  };
+};
+
+const commonInfoToJSON = (commonInfo) => {
+  return {
     regionJudge: commonInfo.regionJudge || 0,
     judge: commonInfo.judge || commonInfo.judge == 0 ? commonInfo.judge : 1,
     eventDurationMinMs:

+ 4 - 2
src/views/cameras/preview/components/CameraConfigSingle/CameraConfigSingle.vue

@@ -96,7 +96,7 @@
   import BatchOperationDialog from './BatchOperationDialog.vue';
   import AlgoParamsSetting from '@/modules/algo/algo-params-edit/index.vue';
   import { CameraAlgoItemInCard } from '@/modules/algo/algo-params-edit/types';
-  import { createAlgoSubmitParams, algoDetailToJSON } from '@/modules/algo/algo-params-edit/utils';
+  import { createAlgoSubmitParams, algoDetailToJSON, algoMetaToJSON } from '@/modules/algo/algo-params-edit/utils';
   import { useUserStore } from '@/store/modules/user';
   import { PERM_ALGO } from '@/types/permission/constants';
 
@@ -264,7 +264,9 @@
     if (batchOperationType.value === 'set') {
       isBatchParamSetVisible.value = true;
       const algoDetail = algosInfo.value.find((item) => item.id === algoIds[0]);
-      selectedAlgoDetail.value = algoDetailToJSON(algoDetail);
+      if (algoDetail) {
+        selectedAlgoDetail.value = algoMetaToJSON(algoDetail);
+      }
     }
     if (batchOperationType.value === 'open') {
       updateAlgosStatusByBatch({ cameraIdList: chooseId.value, algoIdList: algoIds, isEnabled: true }).then(() => {