1
0

dz-card.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. <template>
  2. <div :class="props.deviceType == 'fireWarnInfo' ? 'dzCard1' : 'dzCard'">
  3. <div class="gas-box">
  4. <div class="gas-item">
  5. <div class="detail-box">
  6. <div class="detail-container">
  7. <div class="detail-item" v-for="(item, index) in infoData.dataOn" :key="index">
  8. <div class="item-box">
  9. <div class="item-box-label">{{ titleLeft.address }}</div>
  10. <div class="item-box-val">{{ item.value1 || '-' }}</div>
  11. </div>
  12. <div class="item-box">
  13. <div class="item-box-label">{{ titleLeft.gradewarn }}</div>
  14. <div class="item-box-val">{{ item.warnLevel || '-' }}</div>
  15. </div>
  16. <div class="item-box">
  17. <div class="item-box-label">{{ titleLeft.smoke }}</div>
  18. <div class="item-box-val">{{ item.smokeJd || '-' }}</div>
  19. </div>
  20. </div>
  21. </div>
  22. </div>
  23. </div>
  24. <div class="gas-item">
  25. <div class="detail-box">
  26. <div class="detail-container">
  27. <div class="detail-item">
  28. <div class="item-box1">
  29. <div class="item-box-label">{{ titleRight.temp }}</div>
  30. <div class="item-box-val1">{{ infoData.tempVal }}</div>
  31. </div>
  32. <div class="item-box1">
  33. <div class="item-box-label">{{ titleRight.smokeing }}</div>
  34. <div class="item-box-val1">{{ infoData.smokeVal }}</div>
  35. </div>
  36. <div class="item-box1">
  37. <div class="item-box-label">{{ titleRight.fire }}</div>
  38. <div class="item-box-val1">{{ infoData.fireVal }}</div>
  39. </div>
  40. <div class="item-box1">
  41. <div class="item-box-label">{{ titleRight.comax }}</div>
  42. <div class="item-box-val1">{{ infoData.coVal }}</div>
  43. </div>
  44. </div>
  45. </div>
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. </template>
  51. <script lang="ts" setup>
  52. import { ref, reactive, watch } from 'vue';
  53. let props = defineProps({
  54. titleLeft: {
  55. type: Object,
  56. default: () => {
  57. return {};
  58. },
  59. },
  60. titleRight: {
  61. type: Object,
  62. default: () => {
  63. return {};
  64. },
  65. },
  66. paramData: {
  67. type: Object,
  68. default: () => {
  69. return {};
  70. },
  71. },
  72. deviceType: {
  73. type: String,
  74. default: '',
  75. },
  76. });
  77. let infoData = reactive({});
  78. watch(
  79. () => props.paramData,
  80. (newV, oldV) => {
  81. infoData = Object.assign({}, newV);
  82. },
  83. { immediate: true }
  84. );
  85. </script>
  86. <style lang="less" scoped>
  87. @import '/@/design/theme.less';
  88. @{theme-deepblue} {
  89. .dzCard {
  90. --image-model_gas_item: url('@/assets/images/themify/deepblue/home-container/configurable/900.png');
  91. --image-model_gas_item1: url('@/assets/images/themify/deepblue/home-container/configurable/1100.png');
  92. }
  93. }
  94. .dzCard {
  95. --image-model_gas_item: url('@/assets/images/home-green/900.png');
  96. --image-model_gas_item1: url('@/assets/images/home-green/1100.png');
  97. --image-model_fire_item: url('@/assets/images/home-warn/4-2.png');
  98. width: 100%;
  99. height: 72%;
  100. position: absolute;
  101. left: 0;
  102. top: 86px;
  103. .gas-box {
  104. display: flex;
  105. justify-content: center;
  106. height: 100%;
  107. .gas-item {
  108. position: relative;
  109. width: 50%;
  110. height: 100%;
  111. margin: 0px 5px;
  112. &:nth-child(1) {
  113. background: var(--image-model_gas_item) no-repeat;
  114. background-size: 100% 100%;
  115. }
  116. &:nth-child(2) {
  117. background: var(--image-model_gas_item1) no-repeat;
  118. background-size: 100% 100%;
  119. }
  120. .detail-box {
  121. position: relative;
  122. height: 100%;
  123. padding-top: 68px;
  124. .detail-container {
  125. height: 100%;
  126. overflow-y: auto;
  127. .detail-item {
  128. width: 100%;
  129. height: 100%;
  130. .item-box {
  131. width: 100%;
  132. padding: 0px 10px;
  133. height: 60px;
  134. display: flex;
  135. justify-content: space-between;
  136. align-items: center;
  137. }
  138. .item-box1 {
  139. width: 100%;
  140. padding: 0px 10px;
  141. height: 42px;
  142. display: flex;
  143. justify-content: space-between;
  144. align-items: center;
  145. }
  146. .item-box-label {
  147. flex-shrink: 0;
  148. width: 60px;
  149. font-size: 12px;
  150. text-align: left;
  151. margin-right: 10px;
  152. }
  153. .item-box-val {
  154. text-align: right;
  155. color: #b9ffe5;
  156. font-family: 'douyuFont';
  157. font-size: 12px;
  158. }
  159. .item-box-val1 {
  160. text-align: right;
  161. color: #b9f1ff;
  162. font-family: 'douyuFont';
  163. font-size: 12px;
  164. }
  165. }
  166. }
  167. }
  168. }
  169. }
  170. }
  171. .dzCard1 {
  172. --image-model_gas_item: url('@/assets/images/home-green/900.png');
  173. --image-model_gas_item1: url('@/assets/images/home-green/1100.png');
  174. --image-model_fire_item: url('@/assets/images/home-warn/4-2.png');
  175. width: 100%;
  176. height: 72%;
  177. position: absolute;
  178. left: 0;
  179. .gas-box {
  180. display: flex;
  181. justify-content: center;
  182. height: 100%;
  183. .gas-item {
  184. position: relative;
  185. width: 50%;
  186. height: 100%;
  187. margin: 0px 5px;
  188. &:nth-child(1) {
  189. background: var(--image-model_fire_item) no-repeat;
  190. background-size: 100% 100%;
  191. }
  192. &:nth-child(2) {
  193. background: var(--image-model_fire_item) no-repeat;
  194. background-size: 100% 100%;
  195. }
  196. .detail-box {
  197. position: relative;
  198. height: 100%;
  199. padding-top: 15px;
  200. .detail-container {
  201. height: 100%;
  202. overflow-y: hidden;
  203. &:hover {
  204. overflow-y: auto;
  205. }
  206. .detail-item {
  207. width: 100%;
  208. height: 100%;
  209. .item-box {
  210. width: 100%;
  211. padding: 0px 10px;
  212. height: 60px;
  213. display: flex;
  214. justify-content: space-between;
  215. align-items: center;
  216. }
  217. .item-box1 {
  218. width: 100%;
  219. padding: 0px 10px;
  220. height: 42px;
  221. display: flex;
  222. justify-content: space-between;
  223. align-items: center;
  224. }
  225. .item-box-label {
  226. flex-shrink: 0;
  227. width: 60px;
  228. font-size: 12px;
  229. text-align: left;
  230. margin-right: 10px;
  231. }
  232. .item-box-val {
  233. text-align: right;
  234. color: #c0fbff;
  235. font-family: 'douyuFont';
  236. font-size: 12px;
  237. }
  238. .item-box-val1 {
  239. text-align: right;
  240. color: #53f696;
  241. font-family: 'douyuFont';
  242. font-size: 12px;
  243. }
  244. }
  245. }
  246. }
  247. }
  248. }
  249. }
  250. </style>