consume.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <template>
  2. <div class="_runnings">
  3. <HeadlineTag value="小区基本信息"></HeadlineTag>
  4. <div class="_runnings_mains" :style="{ '--heightSume': heightcon + 'px' }">
  5. <div class="_runnings_mains_left" id="sumeWidth">
  6. <div class="_runnings_mains_left_tuan tuan1"></div>
  7. <div class="_runnings_mains_left_conter">
  8. <div class="_runnings_mains_left_conter_num">{{ resultData.HousesCount || 0 }}</div>
  9. <div class="_runnings_mains_left_conter_text">房屋数</div>
  10. </div>
  11. </div>
  12. <div class="_runnings_mains_left">
  13. <div class="_runnings_mains_left_tuan tuan2"></div>
  14. <div class="_runnings_mains_left_conter">
  15. <div class="_runnings_mains_left_conter_num">{{ resultData.HouseholdCount || 0 }}</div>
  16. <div class="_runnings_mains_left_conter_text">住户数</div>
  17. </div>
  18. </div>
  19. <div class="_runnings_mains_left">
  20. <div class="_runnings_mains_left_tuan tuan3"></div>
  21. <div class="_runnings_mains_left_conter">
  22. <div class="_runnings_mains_left_conter_num">{{ resultData.DrivewayCount || 0 }}</div>
  23. <div class="_runnings_mains_left_conter_text">车位数</div>
  24. </div>
  25. </div>
  26. </div>
  27. </div>
  28. </template>
  29. <script setup>
  30. import { ref } from "vue";
  31. import HeadlineTag from '@/components/HeadlineTag'
  32. const props = defineProps({
  33. resultData: {
  34. type: Object,
  35. default: {}
  36. }
  37. })
  38. const runningList = ref([
  39. { name: '入侵检测', state: '154', color: '#409eff', tip: '划定区域人员闯入' },
  40. { name: '异常行为', state: '15', color: '#15acaa', tip: '徘徊、倒地、聚集' },
  41. { name: '丢失告警', state: '134', color: '#FFC107', tip: '物品遗留/丢失告警' },
  42. ])
  43. const heightcon = ref(0)
  44. watch(() => props.resultData, (newVal) => {
  45. if (newVal) {
  46. runningList.value[0].state = newVal.HousesCount
  47. runningList.value[1].state = newVal.HouseholdCount
  48. runningList.value[2].state = newVal.DrivewayCount
  49. }
  50. }, { deep: true, immediate: true } // 开启深度监听
  51. )
  52. // 生命周期
  53. onMounted(() => {
  54. var element = document.getElementById("sumeWidth");
  55. var width = element.offsetWidth;
  56. heightcon.value = width
  57. });
  58. </script>
  59. <style lang="scss" scoped>
  60. .tuan1 {
  61. background: url("@/assets/images/video_bg_1.png");
  62. animation: scanning 10s linear infinite;
  63. }
  64. .tuan2 {
  65. background: url("@/assets/images/video_bg_2.png");
  66. animation: scanning 10s linear infinite;
  67. }
  68. .tuan3 {
  69. background: url("@/assets/images/video_bg_3.png");
  70. animation: scanning 10s linear infinite;
  71. }
  72. ._runnings {
  73. display: flex;
  74. align-items: center;
  75. flex-direction: column;
  76. &_mains {
  77. flex: 1;
  78. width: 100%;
  79. display: flex;
  80. align-items: center;
  81. justify-content: space-around;
  82. &_left {
  83. flex-shrink: 0;
  84. width: 32%;
  85. height: var(--heightSume);
  86. position: relative;
  87. &_tuan {
  88. width: 100%;
  89. height: 100%;
  90. background-size: 80% 80%;
  91. background-position: center;
  92. background-repeat: no-repeat;
  93. }
  94. &_conter {
  95. position: absolute;
  96. left: 0;
  97. top: 0;
  98. flex-shrink: 0;
  99. width: 100%;
  100. height: 100%;
  101. display: flex;
  102. flex-direction: column;
  103. align-items: center;
  104. justify-content: center;
  105. color: #fff;
  106. &_num {
  107. font-size: 18px;
  108. }
  109. &_text {
  110. font-size: 12px;
  111. }
  112. }
  113. }
  114. &_right {
  115. margin-left: 10px;
  116. flex: 1;
  117. color: #fff;
  118. &_item {
  119. display: flex;
  120. align-items: center;
  121. gap: 40px;
  122. padding: 5px 0;
  123. &_tuan {
  124. display: flex;
  125. align-items: center;
  126. &_flag {
  127. display: block;
  128. width: 7px;
  129. height: 7px;
  130. border-radius: 50%;
  131. margin-right: 10px;
  132. }
  133. }
  134. &__txt {
  135. font-size: 24px;
  136. }
  137. }
  138. }
  139. }
  140. }
  141. @keyframes scanning {
  142. to {
  143. transform: rotate(1turn);
  144. }
  145. }
  146. </style>