فهرست منبع

fix: 修复算法设置切换问题

louhangfei 1 سال پیش
والد
کامیت
40ea5e580b
1فایلهای تغییر یافته به همراه31 افزوده شده و 7 حذف شده
  1. 31 7
      src/views/cameras/preview/components/AlgorithmsSetting/AlgorithmsSetting.vue

+ 31 - 7
src/views/cameras/preview/components/AlgorithmsSetting/AlgorithmsSetting.vue

@@ -26,7 +26,7 @@
           @toggle-algo="handleToggleAlgo(item, $event)"
           :is-fence-open="item.electronicFence === FENCE_ENBALED_STATUS.enabled"
           @toggle-fence="handleToggleFence(item, $event)"
-          @toggleSetting="handleToggleSetting"
+          @toggle-setting="handleToggleSetting(item.algoId)"
         />
       </div>
       <div>
@@ -80,8 +80,34 @@
   const hasAddPermission = () => userStore.checkPermission('algo_add');
   const algoSettingIsOpen = ref(false);
 
-  const handleToggleSetting = () => {
-    algoSettingIsOpen.value = !algoSettingIsOpen.value;
+  const handleToggleSetting = (algoId: number) => {
+    // 如果是在当前选中的卡片上切换设置开关,那么反选即可
+    if (selectedAlgoId.value === algoId) {
+      algoSettingIsOpen.value = !algoSettingIsOpen.value;
+      return;
+    }
+    // 如果是在其他卡片上切换设置开关,等同于直接切卡片,并且显示设置。
+    // 如果原先设置开关是打开的,那么要先alert提示,否则就直接切
+    if (algoSettingIsOpen.value) {
+      const el = document.getElementById('algoSetting') as HTMLElement;
+      ElMessageBox.confirm(
+        '<strong>确认切换算法配置吗?</strong><br />切换后未保存的算法配置将被丢弃。',
+        '',
+        {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning',
+          dangerouslyUseHTMLString: true,
+          appendTo: el,
+        },
+      ).then(() => {
+        selectedAlgoId.value = algoId;
+        algoSettingIsOpen.value = true;
+      });
+    } else {
+      selectedAlgoId.value = algoId;
+      algoSettingIsOpen.value = true;
+    }
   };
 
   const handleSelectAlgo = (algoId: number) => {
@@ -102,10 +128,8 @@
         },
       )
         .then(() => {
-          if (algoId !== selectedAlgoId.value) {
-            selectedAlgoId.value = algoId;
-            algoSettingIsOpen.value = false;
-          }
+          selectedAlgoId.value = algoId;
+          algoSettingIsOpen.value = false;
         })
         .catch(() => {});
     } else {