FireStatus.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <!-- eslint-disable vue/multi-word-component-names -->
  2. <template>
  3. <div class="fire_wrapper">
  4. <CommonTitle class="mb-10px" label="矿井火灾风险性等级" :value="risk" />
  5. <Collapse ghost class="fire_list">
  6. <CollapsePanel class="fire_list_item" v-for="(item, i) in FIRE_STATUS_LIST" :key="`svvhbcfcp-${i}`" :showArrow="false">
  7. <template #header>
  8. <ListItem :key="item.icon" :icon="item.icon" :label="item.label" :value="get(listData, item.prop)" :type="i % 2 ? 'green' : 'blue'" />
  9. </template>
  10. <template #default>
  11. <p v-for="(t, ix) in item.collapses" :key="`svvhbcfcp-${i}${ix}`" class="fire_list_collapse"> {{ t.name }}:{{ get(item, t.prop) }} </p>
  12. </template>
  13. </CollapsePanel>
  14. </Collapse>
  15. </div>
  16. </template>
  17. <script lang="ts" setup>
  18. import { Collapse, CollapsePanel } from 'ant-design-vue';
  19. import { get } from '../utils';
  20. import _ from 'lodash-es';
  21. import { ref, shallowRef, onMounted } from 'vue';
  22. import CommonTitle from './CommonTitle.vue';
  23. import ListItem from './ListItem.vue';
  24. import { BillboardType, DEFAULT_TEST_DATA, FIRE_STATUS_LIST, FIRE_STATUS_IGNORE_TRANSLATION_KEYS } from '../billboard.data';
  25. const props = withDefaults(
  26. defineProps<{
  27. data?: BillboardType;
  28. }>(),
  29. {
  30. data: () => DEFAULT_TEST_DATA,
  31. }
  32. );
  33. const risk = ref('低风险');
  34. const listData = shallowRef<any>({});
  35. function fetchData() {
  36. const info = props.data.fireInfo;
  37. if (!info) return;
  38. const riskTrans = {
  39. 0: '低风险',
  40. 101: '低风险',
  41. 102: '普通风险',
  42. 103: '较高风险',
  43. 104: '高风险',
  44. 201: '低风险',
  45. 1001: '低风险',
  46. };
  47. const warnTrans = {
  48. 0: '低风险',
  49. 101: '低风险',
  50. 102: '一般风险',
  51. 103: '较大风险',
  52. 104: '重大风险',
  53. 201: '报警',
  54. 1001: '网络断开',
  55. };
  56. risk.value = riskTrans[get(info, 'fireWarnLevel', 0)];
  57. _.forEach(info, (val, key) => {
  58. if (FIRE_STATUS_IGNORE_TRANSLATION_KEYS.includes(key)) return;
  59. info[key] = warnTrans[val];
  60. });
  61. listData.value = info;
  62. }
  63. onMounted(() => {
  64. fetchData();
  65. });
  66. </script>
  67. <style lang="less" scoped>
  68. .fire_list {
  69. height: 260px;
  70. overflow: auto;
  71. .fire_list_item {
  72. color: @white;
  73. // ::v-deep .zxm-collapse > .zxm-collapse-item > .zxm-collapse-header {
  74. // }
  75. }
  76. .fire_list_collapse {
  77. text-align: left;
  78. color: @white;
  79. margin-left: 10px;
  80. }
  81. }
  82. .fire_wrapper :deep(.zxm-collapse > .zxm-collapse-item > .zxm-collapse-header) {
  83. padding: 0;
  84. color: @white;
  85. }
  86. </style>