Prechádzať zdrojové kódy

Merge branch 'all-v4-qindao' into all-v4-algoConfig

dao qin 1 rok pred
rodič
commit
eae3b27703

+ 1 - 1
src/views/cameras/preview/components/CameraConfigGroup/CameraConfigGroup.vue

@@ -89,7 +89,7 @@
     </el-dialog>
 
     <!-- 新增相机分组弹窗 -->
-    <el-dialog v-model="createGroupDialog" width="70%" top="15%" left="25%" class="deleteDialog" title="设置相机组">
+    <el-dialog v-model="createGroupDialog" width="70%" top="15%" left="25%" class="deleteDialog" title="设置相机组" @close="handleCancle">
     <SettingCamera ref="settingCameraRef"/>
       <div class="dialogBottom">
         <el-button class="dialogBtn" @click="handleCancle">取消</el-button>

+ 12 - 8
src/views/cameras/preview/components/CameraConfigGroup/components/SettingCamera.vue

@@ -105,7 +105,7 @@
       selectedCameraList.value.push({
         code: e.id,
         name: e.name,
-        isMainCamera: selectedCameraList.value.length === 0 ? IsMainCamera.YES : IsMainCamera.NO,
+        isMainCamera: checkMainCameraExists() ? IsMainCamera.NO : IsMainCamera.YES,
         algoName: '',
         algoCode: '',
         isActive: false,
@@ -130,6 +130,7 @@
   };
 
   const handleTreeCheck = (node: CameraTreeTempType, checked: { checkedNodes: CameraTreeTempType[] }) => {
+    selectedAlgo.value = '';
     // 获取当前所有选中节点中的相机节点
     const currentCameraNodes = checked.checkedNodes.filter(
       (n) => n.nodeType === CameraTreeNodeType.camera && n.integrationState !== IntegrationState.DISABLED,
@@ -140,24 +141,22 @@
       (n) => n.nodeType === CameraTreeNodeType.camera && n.integrationState === IntegrationState.DISABLED,
     );
     disabledNodes.forEach((n) => {
-      // ElMessage.warning(`${n.name} 已禁用,不可选中`);
       treeRef.value?.setChecked(n.tempCode as string, false, true);
     });
 
     // 生成当前选中的code集合
-    const currentCodes = new Set(currentCameraNodes.map((n) => n.code));
+    const currentCodes = new Set(currentCameraNodes.map((n) => n.id));
+
+    // 精确同步选中列表:移除不在当前选中列表中的项
+    selectedCameraList.value = selectedCameraList.value.filter((item) => currentCodes.has(item.code));
 
-    // 移除已取消选中的项
-    selectedCameraList.value = selectedCameraList.value.filter((item: SelectOption) =>
-      currentCodes.has(item.code + ''),
-    );
     // 添加新选中的项
     currentCameraNodes.forEach((camera) => {
       if (!selectedCameraList.value.some((item) => item.code === camera.id)) {
         selectedCameraList.value.push({
           code: camera.id,
           name: camera.name.replace(/ \[\w+\] $/, ''),
-          isMainCamera: selectedCameraList.value.length === 0 ? IsMainCamera.YES : IsMainCamera.NO,
+          isMainCamera: checkMainCameraExists() ? IsMainCamera.NO : IsMainCamera.YES,
           algoName: '',
           algoCode: '',
           isActive: false,
@@ -166,6 +165,10 @@
     });
   };
 
+  const checkMainCameraExists = () => {
+    return selectedCameraList.value.some((item) => item.isMainCamera === IsMainCamera.YES);
+  };
+
   const getCameraData = async () => {
     await queryCameraTreeByCondition(queryForm.value).then((res) => {
       cameraTreeTemp.value = getCameraNameCode(res);
@@ -236,6 +239,7 @@
     if (targetNode?.tempCode) {
       treeRef.value?.setChecked(targetNode.tempCode, false, false);
     }
+    selectedAlgo.value = '';
   };
 
   const selectedAlgo = ref();