yb hace 20 horas
padre
commit
1b8227ce66
Se han modificado 3 ficheros con 42 adiciones y 17 borrados
  1. 2 0
      src/types/index.ts
  2. 25 16
      src/views/lss/composables/useScanDevices.ts
  3. 15 1
      src/views/lss/index.vue

+ 2 - 0
src/types/index.ts

@@ -403,6 +403,8 @@ export interface LssNodeDTO {
   enabled: boolean
   createdAt: string
   updatedAt: string
+  /** 是否已扫描 */
+  scanned: boolean
 }
 
 // LSS 节点列表请求参数

+ 25 - 16
src/views/lss/composables/useScanDevices.ts

@@ -17,26 +17,35 @@ export function useScanDevices() {
   async function handleScanDevices(row: LssNodeDTO) {
     scanLssId.value = row.lssId
     scanMatched.value = false
-    // 用户确认,触发扫描
     scanDrawerVisible.value = true
     scanLoading.value = true
+
     try {
-      const res = await scanDevices(row.lssId)
-      if (res.success) {
-        // 扫描结束
-        switch (res?.data?.status || '') {
-          case 'COMPLETED':
-            await loadDiscoveredDevices()
-            break
-          case 'SCANNING':
-            ElMessage.info(t('扫描中...'))
-            break
-          case 'FAILED':
-            ElMessage.error(res.errMessage || t('扫描失败'))
-            break
-        }
+      if (row.scanned) {
+        // 已扫描过,直接加载发现设备列表
+        await loadDiscoveredDevices()
       } else {
-        ElMessage.error(res.errMessage || t('操作失败'))
+        // 未扫描,触发扫描
+        const res = await scanDevices(row.lssId)
+        if (res.success) {
+          const status = res?.data?.status || ''
+          switch (status) {
+            case 'COMPLETED':
+              await loadDiscoveredDevices()
+              break
+            case 'SCANNING':
+              ElMessage.info(t('扫描中...'))
+              break
+            case 'FAILED':
+              ElMessage.error(res.errMessage || t('扫描失败'))
+              break
+            default:
+              ElMessage.warning(t('未知状态'))
+              break
+          }
+        } else {
+          ElMessage.error(res.errMessage || t('操作失败'))
+        }
       }
     } catch (error) {
       console.error('操作失败', error)

+ 15 - 1
src/views/lss/index.vue

@@ -83,7 +83,13 @@
             <el-button data-id="btn-edit" type="primary" link @click="handleEdit(row, 'detail')">
               <Icon icon="mdi:note-edit-outline" width="20" height="20" />
             </el-button>
-            <el-button data-id="btn-scan-devices" type="primary" link @click="handleScanDevices(row)">
+            <el-button
+              :class="{ 'scan-btn': true, scanned: row.scanned }"
+              data-id="btn-scan-devices"
+              type="primary"
+              link
+              @click="handleScanDevices(row)"
+            >
               <Icon icon="mdi:radar" width="20" height="20" />
             </el-button>
             <el-button data-id="btn-delete" type="danger" link @click="handleDelete(row)">
@@ -1298,6 +1304,14 @@ onMounted(() => {
   }
 }
 
+.scan-btn {
+  color: grey;
+
+  &.scanned {
+    color: var(--el-color-primary);
+  }
+}
+
 .scan-drawer-content {
   flex: 1;
   overflow-y: auto;