equipState.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <!-- 设备状态 -->
  2. <template>
  3. <div class="tab-pane">
  4. <!-- {{equipId}}-
  5. {{equipType}} -->
  6. <div class="list" v-if="equipDataState">
  7. <div class="elementItem" v-for="(item,index) in showState[equipType]" :key="index">
  8. <!-- {{equipState_dict[item]}} -->
  9. <div>{{equipState_dict[item].name}}</div>
  10. <template v-if="item=='tt'">
  11. <template v-if="equipData.ts == 1">
  12. <div class="elementValue" >{{equipData['st']}}-{{equipData['et']}}{{equipState_dict['et'].unit}}</div>
  13. </template>
  14. <template v-else>
  15. <div class="elementValue" v-if="equipState_dict[item].value">{{equipState_dict[item].value[equipData[item]]}}</div>
  16. <div class="elementValue" v-else >{{equipData[item]}}{{equipState_dict[item].unit}}</div>
  17. </template>
  18. </template>
  19. <template v-else>
  20. <template v-if="item=='addtime'">
  21. <div class="elementValue" >{{equipData[item]*1000|formatTime}}</div>
  22. </template>
  23. <template v-else>
  24. <div class="elementValue" v-if="equipState_dict[item].value">{{equipState_dict[item].value[equipData[item]]}}</div>
  25. <div class="elementValue" v-else >{{equipData[item]}}{{equipState_dict[item].unit}}</div>
  26. </template>
  27. </template>
  28. </div>
  29. </div>
  30. <div v-else class="empty">
  31. <div>暂无数据</div>
  32. </div>
  33. </div>
  34. </template>
  35. <script>
  36. //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  37. //例如:import 《组件名称》 from '《组件路径》';
  38. import equipState_dict from './equipState_dict.json'
  39. export default {
  40. //import引入的组件需要注入到对象中才能使用
  41. components: {},
  42. props: ["equipId", "equipType"],
  43. data() {
  44. //这里存放数据
  45. return {
  46. equipState_dict,
  47. showState: {
  48. "2": ["ds","ws","tbs","rps","tps","dps","tt","ct","at","ah","cv","bv","csq","dver","addtime"],
  49. "3": ["ds","ws","tt","hs","at","ah","upds","dnds","vbat","rps","tps","lps","lamp","csq","dver","addtime"],
  50. "4": ["ds","ws","tt","hs","at","ah","upds","dnds","vbat","rps","tps","lps","lamp","csq","dver","addtime"],
  51. "7": ["ds","at","ah","set_temp","pre_temp","bs","rps","usb_sta","vbat","csq","dver","addtime"],
  52. },
  53. equipData:{},
  54. equipDataState:false
  55. };
  56. },
  57. //监听属性 类似于data概念
  58. computed: {},
  59. //监控data中的数据变化
  60. watch: {},
  61. //方法集合
  62. methods: {
  63. // 设备状态弹框
  64. equipStateSet(id, device_status) {
  65. this.$axios({
  66. method: "POST",
  67. url: "/api/api_gateway?method=forecast.worm_lamp.device_history_data",
  68. data: this.qs.stringify({
  69. device_type_id: this.equipType,
  70. page_size: 1,
  71. device_id: id,
  72. page: 1
  73. })
  74. }).then(res => {
  75. if (res.data.message == "") {
  76. if(res.data.data.counts == 0){
  77. this.equipDataState=false;
  78. this.equipData = {}
  79. }else{
  80. this.equipDataState = true;
  81. this.equipData = res.data.data.data[0].d_h_t
  82. console.log(this.equipData);
  83. console.log('this.equipData');
  84. }
  85. }
  86. });
  87. }
  88. },
  89. //生命周期 - 创建完成(可以访问当前this实例)
  90. created() {},
  91. //生命周期 - 挂载完成(可以访问DOM元素)
  92. mounted() {
  93. this.equipStateSet(this.equipId, this.equipType);
  94. },
  95. beforeCreate() {}, //生命周期 - 创建之前
  96. beforeMount() {}, //生命周期 - 挂载之前
  97. beforeUpdate() {}, //生命周期 - 更新之前
  98. updated() {}, //生命周期 - 更新之后
  99. beforeDestroy() {}, //生命周期 - 销毁之前
  100. destroyed() {}, //生命周期 - 销毁完成
  101. activated() {} //如果页面有keep-alive缓存功能,这个函数会触发
  102. };
  103. </script>
  104. <style scoped lang="less">
  105. .tab-pane{
  106. background: #f1faff;
  107. }
  108. .list {
  109. display: flex;
  110. justify-content: space-between;
  111. flex-direction: row;
  112. flex-wrap: wrap;
  113. padding: 10px 7px 5px 7px;
  114. .elementItem{
  115. width: 33.3333%;
  116. box-sizing: border-box;
  117. display: flex;
  118. justify-content: space-between;
  119. line-height: 36px;
  120. border-left: 5px solid #f1faff;
  121. border-right: 5px solid #f1faff;
  122. margin-bottom: 10px;
  123. padding: 0 9px;
  124. font-size: 13px;
  125. .elementValue{
  126. color: #0195ff;
  127. }
  128. }
  129. .elementItem:nth-child(6n+1),
  130. .elementItem:nth-child(6n+2),
  131. .elementItem:nth-child(6n+3){
  132. background: #f3f3f3;
  133. }
  134. .elementItem:nth-child(6n+4),
  135. .elementItem:nth-child(6n+5),
  136. .elementItem:nth-child(6n+6){
  137. background: #e7f0f7;
  138. }
  139. }
  140. .empty{
  141. line-height: 100px;
  142. text-align: center;
  143. font-size: 14px;
  144. color: #0195ff;
  145. }
  146. </style>