rtop.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <template>
  2. <div id="rtop">
  3. <ul style="margin-top: -19px">
  4. <li>
  5. 瓦斯涌出量:<span style="width:100px">{{data.wasi_after}}</span>m^3/min
  6. <span
  7. style="width:30px; height:30px; border:1px solid 4ADEFE; border-radius:50%;margin-left:30px; "
  8. v-bind:class="{red1:data.danger, green1:data.safety}"
  9. >
  10. </span>
  11. </li>
  12. <li>
  13. 粉 尘 浓 度 :<span style="width:100px">{{data.fenchen_after}}</span>g/m^3
  14. <span
  15. style="width:30px; height:30px; border:1px solid 4ADEFE; border-radius:50%; margin-left:50px;"
  16. v-bind:class="{red1:data.danger1, green1:data.safety1}"
  17. >
  18. </span>
  19. </li>
  20. </ul>
  21. </div>
  22. </template>
  23. <script>
  24. import { mapState } from "vuex";
  25. export default {
  26. data() {
  27. return {
  28. data: {
  29. fenchen_after: "0",
  30. wasi_after: "0",
  31. danger: true,
  32. danger1: false,
  33. safety: false,
  34. safety1: true,
  35. },
  36. };
  37. },
  38. mounted() {
  39. this.websocket = new WebSocket(`ws://${this.websocketIP}/hbase/ws/belt/51`);
  40. this.initWebSocket();
  41. },
  42. methods: {
  43. initWebSocket() {
  44. // 连接错误
  45. this.websocket.onerror = () => {
  46. console.log(
  47. "WebSocket连接发生错误 状态码:" + this.websocket.readyState
  48. );
  49. };
  50. // 连接成功
  51. this.websocket.onopen = () => {
  52. console.log(
  53. "WebSocket连接成功 状态码:" + this.websocket.readyState
  54. );
  55. };
  56. // 收到消息的回调
  57. this.websocket.onmessage = (event) => {
  58. if (JSON.parse(event.data).length) {
  59. this.changeState(JSON.parse(event.data));
  60. }
  61. };
  62. // 连接关闭的回调
  63. this.websocket.onclose = () => {
  64. console.log(
  65. "WebSocket连接关闭 状态码:" + this.websocket.readyState
  66. );
  67. };
  68. // 通过$once来监听定时器,在beforeDestroy钩子可以被清除。
  69. this.$once("hook:beforeDestroy", () => {
  70. this.websocket.close();
  71. });
  72. },
  73. changeState(data) {
  74. this.data = data[0];
  75. //判断粉尘
  76. if (this.data.fenchen_after > 15) {
  77. this.data.danger1 = true;
  78. this.data.safety1 = false;
  79. } else {
  80. this.data.danger1 = false;
  81. this.data.safety1 = true;
  82. }
  83. if (this.data.wasi_after > 3) {
  84. this.data.danger = true;
  85. this.data.safety = false;
  86. } else {
  87. this.data.danger = false;
  88. this.data.safety = true;
  89. }
  90. console.log("数据展示为:", this.data);
  91. },
  92. close() {
  93. this.websocket.close();
  94. console.log(123);
  95. },
  96. },
  97. computed: {
  98. ...mapState(["websocketIP"]),
  99. },
  100. };
  101. </script>
  102. <style scoped>
  103. #rtop {
  104. text-align: center;
  105. padding-top: 40px;
  106. padding-bottom: 40px;
  107. }
  108. li {
  109. width: 100%;
  110. height: 100%;
  111. color: #4adefe;
  112. display: flex;
  113. flex-wrap: wrap;
  114. margin-top: 1rem;
  115. margin-right: 0.75rem;
  116. font-size: 1.25rem;
  117. text-align: end;
  118. }
  119. span {
  120. border-radius: 0.7rem;
  121. width: 1.875rem;
  122. height: 1.625rem;
  123. /* background-color: rgb(133, 158, 231); */
  124. margin: 0 0.325rem 0.25rem 1rem;
  125. text-align: center;
  126. color: #f3db5c;
  127. font-size: 25px;
  128. }
  129. .red1 {
  130. background: linear-gradient(145deg, #c21e41, #e7234d);
  131. box-shadow: 17px 17px 34px #be1d3f;
  132. }
  133. .red2 {
  134. background: linear-gradient(145deg, #c21e41, #e7234d);
  135. box-shadow: 17px 17px 34px #be1d3f;
  136. }
  137. .green1 {
  138. background: linear-gradient(145deg, #63ac7d, #76cc95);
  139. box-shadow: 17px 17px 34px #61a87a;
  140. }
  141. .green2 {
  142. background: linear-gradient(145deg, #63ac7d, #76cc95);
  143. box-shadow: 17px 17px 34px #61a87a;
  144. }
  145. </style>