Просмотр исходного кода

feat:【IoT 物联网】初始化 IoT 固件详情页 100%(取消记录)

YunaiV 7 месяцев назад
Родитель
Сommit
d1cbda5197

+ 1 - 6
src/api/iot/ota/task/record/index.ts

@@ -31,13 +31,8 @@ export const IoTOtaTaskRecordApi = {
     return await request.get({ url: `/iot/ota/task/record/page`, params })
   },
 
-  // 查询 OTA 任务记录详情
-  getOtaTaskRecord: async (id: number) => {
-    return await request.get({ url: `/iot/ota/task/record/get?id=` + id })
-  },
-
   // 取消 OTA 任务记录
   cancelOtaTaskRecord: async (id: number) => {
-    return await request.post({ url: `/iot/ota/task/record/cancel?id=` + id })
+    return await request.put({ url: `/iot/ota/task/record/cancel?id=` + id })
   }
 }

+ 12 - 3
src/views/iot/ota/task/OtaTaskDetail.vue

@@ -116,10 +116,17 @@
           <el-table-column label="操作" align="center" width="80">
             <template #default="scope">
               <el-button
-                v-if="scope.row.status === IoTOtaTaskRecordStatusEnum.UPGRADING.value"
+                v-if="
+                  [
+                    IoTOtaTaskRecordStatusEnum.PENDING.value,
+                    IoTOtaTaskRecordStatusEnum.PUSHED.value,
+                    IoTOtaTaskRecordStatusEnum.UPGRADING.value
+                  ].includes(scope.row.status)
+                "
                 link
                 type="danger"
                 @click="handleCancelUpgrade(scope.row)"
+                v-hasPermi="['iot:ota-task-record:cancel']"
               >
                 取消
               </el-button>
@@ -154,7 +161,6 @@ import { formatDate } from '@/utils/formatTime'
 defineOptions({ name: 'OtaTaskDetail' })
 
 const message = useMessage() // 消息弹窗
-
 const dialogVisible = ref(false) // 弹窗的是否展示
 
 const taskId = ref<number>() // 任务编号
@@ -242,6 +248,7 @@ const handleTabClick = (tab: TabsPaneContext) => {
 }
 
 /** 取消升级 */
+const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
 const handleCancelUpgrade = async (record: OtaTaskRecord) => {
   try {
     await message.confirm('确认要取消该设备的升级任务吗?')
@@ -250,7 +257,9 @@ const handleCancelUpgrade = async (record: OtaTaskRecord) => {
     // 刷新数据
     await getRecordList()
     await getStatistics()
-    // TODO @AI:需要 succes 不断刷新出去
+    await getTaskInfo()
+    // 通知父组件刷新数据
+    emit('success')
   } catch (error) {
     console.error('取消升级失败', error)
   }

+ 8 - 6
src/views/iot/ota/task/OtaTaskList.vue

@@ -91,7 +91,7 @@
     />
 
     <!-- 任务详情弹窗 -->
-    <OtaTaskDetail ref="taskDetailRef" />
+    <OtaTaskDetail ref="taskDetailRef" @success="refresh" />
   </ContentWrap>
 </template>
 
@@ -169,18 +169,20 @@ const handleCancelTask = async (id: number) => {
     await IoTOtaTaskApi.cancelOtaTask(id)
     message.success('取消成功')
     // 刷新数据
-    await getTaskList()
-    emit('success')
+    await refresh()
   } catch (error) {
     console.error('取消任务失败', error)
   }
 }
 
+/** 刷新数据 */
+const refresh = async () => {
+  await getTaskList()
+  emit('success')
+}
+
 /** 初始化 */
 onMounted(() => {
   getTaskList()
 })
-
-/** 暴露方法供父组件调用 */
-defineExpose({ getTaskList })
 </script>