DeviceFirmwareUpgrade.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <div class="firmware_upgrade_wrap">
  3. <!-- tag -->
  4. <span v-if="getTagStatus(device)" class="status-tag pointer">
  5. <a-tag class="pointer" :color="getFirmwareTag(device.firmware_status).color" @click="deviceUpgrade(device)">
  6. {{ getFirmwareTag(device.firmware_status).text }}
  7. </a-tag>
  8. </span>
  9. <!-- 进度 -->
  10. <span v-if="device.firmware_status === DeviceFirmwareStatusEnum.DuringUpgrade">
  11. {{ `${device.firmware_progress}` }}
  12. </span>
  13. <span v-else>
  14. 不支持
  15. </span>
  16. </div>
  17. </template>
  18. <script lang="ts" setup>
  19. import { defineProps, defineEmits, computed } from 'vue'
  20. import { Device, DeviceFirmwareStatusEnum, DeviceFirmwareStatus, DeviceFirmwareStatusColor } from '/@/types/device'
  21. const props = defineProps<{
  22. device: Device,
  23. }>()
  24. const emit = defineEmits(['device-upgrade'])
  25. const needUpgrade = computed(() => {
  26. return props.device.firmware_status === DeviceFirmwareStatusEnum.ConsistencyUpgrade ||
  27. props.device.firmware_status === DeviceFirmwareStatusEnum.ToUpgraded
  28. })
  29. function getTagStatus(record: Device) {
  30. return record.firmware_status && record.firmware_status !== DeviceFirmwareStatusEnum.None
  31. }
  32. function getFirmwareTag(status: DeviceFirmwareStatusEnum) {
  33. return {
  34. text: DeviceFirmwareStatus[status] || '',
  35. color: DeviceFirmwareStatusColor[status] || ''
  36. }
  37. }
  38. function deviceUpgrade(record: Device) {
  39. if (!needUpgrade.value) return
  40. emit('device-upgrade', record)
  41. }
  42. </script>
  43. <style lang="scss" scoped>
  44. .firmware_upgrade_wrap {
  45. .status-tag {
  46. margin-left: 10px;
  47. }
  48. .pointer {
  49. cursor: pointer;
  50. }
  51. }
  52. </style>