gaoluyang
2026-06-24 712aa51536236d43e87273e4ce45ac5691dffad8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<script lang="ts" setup>
import type { IoTOtaFirmwareApi } from '#/api/iot/ota/firmware';
 
import { onMounted, ref } from 'vue';
import { useRoute } from 'vue-router';
 
import { Page } from '..\..\..\..\..\packages\effects\common-ui\src';
 
import { getOtaFirmware } from '#/api/iot/ota/firmware';
import { getOtaTaskRecordStatusStatistics } from '#/api/iot/ota/task/record';
 
import OtaTaskList from '../../task/modules/list.vue';
import UpgradeStatistics from '../../task/modules/statistics.vue';
import FirmwareInfo from './modules/info.vue';
 
const route = useRoute();
 
const firmwareId = ref(Number(route.params.id));
const firmwareLoading = ref(false);
const firmware = ref<IoTOtaFirmwareApi.Firmware>();
 
const firmwareStatisticsLoading = ref(false);
const firmwareStatistics = ref<Record<string, number>>({});
 
/** 获取固件信息 */
async function getFirmwareInfo() {
  firmwareLoading.value = true;
  try {
    firmware.value = await getOtaFirmware(firmwareId.value);
  } finally {
    firmwareLoading.value = false;
  }
}
 
/** 获取升级统计 */
async function getStatistics() {
  firmwareStatisticsLoading.value = true;
  try {
    firmwareStatistics.value = await getOtaTaskRecordStatusStatistics(
      firmwareId.value,
    );
  } finally {
    firmwareStatisticsLoading.value = false;
  }
}
 
/** 初始化 */
onMounted(() => {
  getFirmwareInfo();
  getStatistics();
});
</script>
 
<template>
  <Page>
    <!-- 固件信息 -->
    <FirmwareInfo :firmware="firmware" :loading="firmwareLoading" />
    <!-- 升级设备统计 -->
    <div class="mt-4">
      <UpgradeStatistics
        :loading="firmwareStatisticsLoading"
        :statistics="firmwareStatistics"
      />
    </div>
    <!-- 任务管理 -->
    <div v-if="firmware?.productId" class="mt-4">
      <OtaTaskList
        :firmware-id="firmwareId"
        :product-id="firmware.productId"
        @success="getStatistics"
      />
    </div>
  </Page>
</template>