Jelajahi Sumber

Merge branch 'all-v4-bxy' into 'all-v4'

fix: 修复相机编辑bug

See merge request skyeye/skyeye_frontend/skyeye-admin!326
Fei Liu 1 tahun lalu
induk
melakukan
feb54e0ec0

+ 3 - 2
src/views/cameras/overview/components/AddCameraByIP.vue

@@ -115,7 +115,7 @@
   import useNvrDevice from '../hooks/useNvrDevice';
   import useTreeWorkspaceInfo from '../hooks/useTreeWorkspaceInfo';
   import { cloneDeep } from 'lodash-es';
-  import sysConfigItemOfAddCamera from './sysConfigItemOfAddCamera.vue';
+  import sysConfigItemOfAddCamera, { getSceneCheckedValues } from './sysConfigItemOfAddCamera.vue';
 
   const props = defineProps<{ formData?: CameraDetailServer | null }>();
   const emits = defineEmits(['cancel-execute', 'confirm-execute']);
@@ -152,7 +152,7 @@
     sceneTemplateList: [{ required: true, validator: validateSceneTemplate, trigger: 'blur' }],
   };
 
-  const sceneCheckedDataRef = ref([]);
+  const sceneCheckedDataRef = ref({} as Record<number, boolean>);
   const handleUpdateSceneTemplateList = (sceneTemplateData, sceneCheckedData) => {
     sceneCheckedDataRef.value = sceneCheckedData;
     cameraIPData.value.sceneTemplateList = sceneTemplateData;
@@ -187,6 +187,7 @@
     if (props.formData) {
       cameraIPData.value = props.formData;
       cameraIPData.value.workspaceIdStr = `workspace-${props.formData.workspaceId}`;
+      sceneCheckedDataRef.value = getSceneCheckedValues(props.formData.sceneTemplateList);
     }
   });
 </script>

+ 3 - 2
src/views/cameras/overview/components/AddCameraByNVR.vue

@@ -106,7 +106,7 @@
   import { protocalTypeSelect, serviceTypeSelect, standardTypeSelect } from '@/types/camera/constant';
   import useNvrDevice from '../hooks/useNvrDevice';
   import useTreeWorkspaceInfo from '../hooks/useTreeWorkspaceInfo';
-  import sysConfigItemOfAddCamera from './sysConfigItemOfAddCamera.vue';
+  import sysConfigItemOfAddCamera, { getSceneCheckedValues } from './sysConfigItemOfAddCamera.vue';
 
   const props = defineProps<{ formData?: CameraDetailServer | null }>();
   const emits = defineEmits(['cancel-execute', 'confirm-execute']);
@@ -141,7 +141,7 @@
     videoStandard: [{ required: true, message: '请选择视频编码标准', trigger: 'blur' }],
   };
 
-  const sceneCheckedDataRef = ref([]);
+  const sceneCheckedDataRef = ref({} as Record<number, boolean>);
   const handleUpdateSceneTemplateList = (sceneTemplateData, sceneCheckedData) => {
     sceneCheckedDataRef.value = sceneCheckedData;
     cameraNVRData.value.sceneTemplateList = sceneTemplateData;
@@ -176,6 +176,7 @@
     if (props.formData) {
       cameraNVRData.value = props.formData;
       cameraNVRData.value.workspaceIdStr = `workspace-${props.formData.workspaceId}`;
+      sceneCheckedDataRef.value = getSceneCheckedValues(props.formData.sceneTemplateList);
     }
   });
 </script>

+ 3 - 2
src/views/cameras/overview/components/AddCameraBySRS.vue

@@ -103,7 +103,7 @@
   import { serviceTypeSelect, standardTypeSelect } from '@/types/camera/constant';
   import useNvrDevice from '../hooks/useNvrDevice';
   import useTreeWorkspaceInfo from '../hooks/useTreeWorkspaceInfo';
-  import sysConfigItemOfAddCamera from './sysConfigItemOfAddCamera.vue';
+  import sysConfigItemOfAddCamera, { getSceneCheckedValues } from './sysConfigItemOfAddCamera.vue';
 
   const props = defineProps<{ formData?: CameraDetailServer | null }>();
   const emits = defineEmits(['cancel-execute', 'confirm-execute']);
@@ -137,7 +137,7 @@
     videoStandard: [{ required: true, message: '请选择视频编码标准', trigger: 'blur' }],
   };
 
-  const sceneCheckedDataRef = ref([]);
+  const sceneCheckedDataRef = ref({} as Record<number, boolean>);
   const handleUpdateSceneTemplateList = (sceneTemplateData, sceneCheckedData) => {
     sceneCheckedDataRef.value = sceneCheckedData;
     CameraSRSData.value.sceneTemplateList = sceneTemplateData;
@@ -172,6 +172,7 @@
     if (props.formData) {
       CameraSRSData.value = props.formData;
       CameraSRSData.value.workspaceIdStr = `workspace-${props.formData.workspaceId}`;
+      sceneCheckedDataRef.value = getSceneCheckedValues(props.formData.sceneTemplateList);
     }
   });
 </script>

+ 11 - 20
src/views/cameras/overview/components/sysConfigItemOfAddCamera.vue

@@ -1,10 +1,6 @@
 <template>
   <div class="scene-template-item" v-for="item in sceneTemplateList" :key="item.id">
-    <el-checkbox
-      v-model="sceneCheckedValues[item.id!]"
-      :label="item.name"
-      @change="handleSceneIdChange(item.id)"
-    />
+    <el-checkbox v-model="sceneCheckedValues[item.id!]" :label="item.name" @change="handleSceneIdChange(item.id)" />
     <div class="template-item">
       <div class="template-item-tip"><span style="color: red"> * </span> 应用模版:</div>
       <el-radio-group
@@ -32,7 +28,6 @@
 
   const sceneTemplateListInfo = useSceneTemplateList();
   const { sceneTemplateList } = storeToRefs(sceneTemplateListInfo);
-  // const { sceneTemplateList, getSceneTemplateList } = sceneTemplateListInfo;
 
   const props = defineProps<{ originSceneCheckedList: CheckedSceneTemplate[] }>();
   const emits = defineEmits(['update:sceneCheckedList']);
@@ -49,14 +44,6 @@
     }));
   }
 
-  // CheckedSceneTemplate 转换为 Object
-  function getSceneCheckedValues(arr: CheckedSceneTemplate[]): Record<number, boolean> {
-    const result: Record<number, boolean> = {};
-    arr.forEach(({ sceneId }) => {
-      result[sceneId] = true;
-    });
-    return result;
-  }
   function getTemplateCheckedValues(arr: CheckedSceneTemplate[]): Record<number, number | null> {
     const result: Record<number, number | null> = {};
     arr.forEach(({ sceneId, templateId }) => {
@@ -74,10 +61,7 @@
     if (!sceneCheckedValues.value[id]) delete templateCheckedValues.value[id];
     updateSceneCheckedList();
     for (let key in sceneCheckedValues.value) {
-      if (
-        sceneCheckedValues.value.hasOwnProperty(key) &&
-        sceneCheckedValues.value[Number(key)] === false
-      ) {
+      if (sceneCheckedValues.value.hasOwnProperty(key) && sceneCheckedValues.value[Number(key)] === false) {
         delete sceneCheckedValues.value[Number(key)];
       }
     }
@@ -88,14 +72,21 @@
   };
 
   onMounted(() => {
-    // getSceneTemplateList();
-    console.log('props', props.originSceneCheckedList);
     if (props.originSceneCheckedList?.length) {
       sceneCheckedValues.value = getSceneCheckedValues(props.originSceneCheckedList);
       templateCheckedValues.value = getTemplateCheckedValues(props.originSceneCheckedList);
     }
   });
 </script>
+<script lang="ts">
+  export function getSceneCheckedValues(arr: CheckedSceneTemplate[]): Record<number, boolean> {
+    const result: Record<number, boolean> = {};
+    arr.forEach(({ sceneId }) => {
+      result[sceneId] = true;
+    });
+    return result;
+  }
+</script>
 
 <style scoped lang="less">
   .scene-template-item {