index.vue 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. <template>
  2. <div id="outer">
  3. <div class="title">
  4. <p style="color:#4adefe;">三机监控</p>
  5. </div>
  6. <img style="width: 1300px;margin-left:100px" src="./顶部.png" />
  7. <div style="height: 50px"></div>
  8. <div class="row">
  9. <div class="square">
  10. <img class="img" src="./刮板机.png" />
  11. <div class="inf">
  12. <div style="height: 20%;font-size: 20px;color: #4adefe;">刮板机 运行状态</div>
  13. <div class="details">
  14. <div>运行速度:
  15. <span>
  16. {{ data[0].transporter_speed }}m/s
  17. </span>
  18. </div>
  19. <div>电机功率:
  20. <span>
  21. {{ data[0].transporter_power }}W
  22. </span>
  23. </div>
  24. <div>减速器油温:
  25. <span>
  26. {{ data[0].transporter_reducerOilTemperature }}℃
  27. </span>
  28. </div>
  29. <div>电机电流:
  30. <span>
  31. {{ data[0].transporter_current }}A
  32. </span>
  33. </div>
  34. <div>电机轴温:
  35. <span>
  36. {{ data[0].transporter_motorTemperature }}℃
  37. </span>
  38. </div>
  39. <div>冷却水水压:
  40. <span>
  41. {{ data[0].transporter_pressure }}Pa
  42. </span>
  43. </div>
  44. <div>电机电压:
  45. <span>
  46. {{ data[0].transporter_voltage }}V
  47. </span>
  48. </div>
  49. <div>减速器轴温:
  50. <span>
  51. {{ data[0].transporter_reducerShaftTemperature }}℃
  52. </span>
  53. </div>
  54. <div>冷却水水温:
  55. <span>
  56. {{ data[0].transporter_waterTemperature }}℃
  57. </span>
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. <div class="square">
  63. <img class="img" src="./破碎机.png" />
  64. <div class="inf">
  65. <div style="height: 20%;font-size: 20px;color: #4adefe;">破碎机 运行状态</div>
  66. <div class="details">
  67. <div>运行速度:
  68. <span>
  69. {{ data[1].transporter_speed }}m/s
  70. </span>
  71. </div>
  72. <div>电机功率:
  73. <span>
  74. {{ data[1].transporter_power }}W
  75. </span>
  76. </div>
  77. <div>减速器油温:
  78. <span>
  79. {{ data[1].transporter_reducerOilTemperature }}℃
  80. </span>
  81. </div>
  82. <div>电机电流:
  83. <span>
  84. {{ data[1].transporter_current }}A
  85. </span>
  86. </div>
  87. <div>电机轴温:
  88. <span>
  89. {{ data[1].transporter_motorTemperature }}℃
  90. </span>
  91. </div>
  92. <div>冷却水水压:
  93. <span>
  94. {{ data[1].transporter_pressure }}Pa
  95. </span>
  96. </div>
  97. <div>电机电压:
  98. <span>
  99. {{ data[1].transporter_voltage }}V
  100. </span>
  101. </div>
  102. <div>减速器轴温:
  103. <span>
  104. {{ data[1].transporter_reducerShaftTemperature }}℃
  105. </span>
  106. </div>
  107. <div>冷却水水温:
  108. <span>
  109. {{ data[1].transporter_waterTemperature }}℃
  110. </span>
  111. </div>
  112. </div>
  113. </div>
  114. </div>
  115. <div class="square">
  116. <img class="img" src="./转载机.png" />
  117. <div class="inf">
  118. <div style="height: 20%; font-size: 20px; color: #4adefe;">转载机 运行状态</div>
  119. <div class="details">
  120. <div>运行速度:
  121. <span>
  122. {{ data[2].transporter_speed }}m/s
  123. </span>
  124. </div>
  125. <div>电机功率:
  126. <span>
  127. {{ data[2].transporter_power }}W
  128. </span>
  129. </div>
  130. <div>减速器油温:
  131. <span>
  132. {{ data[2].transporter_reducerOilTemperature }}℃
  133. </span>
  134. </div>
  135. <div>电机电流:
  136. <span>
  137. {{ data[2].transporter_current }}A
  138. </span>
  139. </div>
  140. <div>电机轴温:
  141. <span>
  142. {{ data[2].transporter_motorTemperature }}℃
  143. </span>
  144. </div>
  145. <div>冷却水水压:
  146. <span>
  147. {{ data[2].transporter_pressure }}Pa
  148. </span>
  149. </div>
  150. <div>电机电压:
  151. <span>
  152. {{ data[2].transporter_voltage }}V
  153. </span>
  154. </div>
  155. <div>减速器轴温:
  156. <span>
  157. {{ data[2].transporter_reducerShaftTemperature }}℃
  158. </span>
  159. </div>
  160. <div>冷却水水温:
  161. <span>
  162. {{ data[2].transporter_waterTemperature }}℃
  163. </span>
  164. </div>
  165. </div>
  166. </div>
  167. </div>
  168. </div>
  169. </div>
  170. </template>
  171. <script>
  172. import { mapState } from "vuex";
  173. export default {
  174. name: "compressors",
  175. data() {
  176. return {
  177. data: [{
  178. transporter_speed:0,
  179. transporter_power:10,
  180. transporter_reducerOilTemperature:30,
  181. transporter_current:20,
  182. transporter_motorTemperature:60,
  183. transporter_pressure:20,
  184. transporter_voltage:232,
  185. transporter_reducerShaftTemperature:10,
  186. transporter_waterTemperature:50,
  187. },{
  188. transporter_speed:3,
  189. transporter_power:10,
  190. transporter_reducerOilTemperature:30,
  191. transporter_current:20,
  192. transporter_motorTemperature:60,
  193. transporter_pressure:20,
  194. transporter_voltage:232,
  195. transporter_reducerShaftTemperature:10,
  196. transporter_waterTemperature:50,
  197. },{
  198. transporter_speed:30,
  199. transporter_power:10,
  200. transporter_reducerOilTemperature:30,
  201. transporter_current:20,
  202. transporter_motorTemperature:60,
  203. transporter_pressure:20,
  204. transporter_voltage:232,
  205. transporter_reducerShaftTemperature:10,
  206. transporter_waterTemperature:50,
  207. }
  208. ]
  209. };
  210. },
  211. computed: {
  212. ...mapState(["websocketIP"]),
  213. },
  214. mounted() {
  215. //如果id确定,再修改
  216. // let data0 = new WebSocket(`ws://${this.websocketIP}/hbase/ws/belt/8`);
  217. // this.initWebSocket(data0, "data0");
  218. // let data1 = new WebSocket(`ws://${this.websocketIP}/hbase/ws/belt/8`);
  219. // this.initWebSocket(data1, "data1");
  220. // let data2 = new WebSocket(`ws://${this.websocketIP}/hbase/ws/belt/8`);
  221. // this.initWebSocket(data2, "data2");
  222. },
  223. methods: {
  224. getData0(data) {
  225. this.data[0]=data[0];
  226. },
  227. getData1(data) {
  228. this.data[1]=data[1];
  229. },
  230. getData2(data) {
  231. this.data[2]=data[2];
  232. },
  233. initWebSocket(websocket, type, select) {
  234. // 连接错误
  235. websocket.onerror = () => {
  236. console.log("WebSocket连接发生错误 状态码:" + websocket.readyState);
  237. };
  238. // 连接成功
  239. websocket.onopen = () => {
  240. console.log("WebSocket连接成功 状态码:" + websocket.readyState);
  241. };
  242. // 收到消息的回调
  243. websocket.onmessage = (event) => {
  244. if (!JSON.parse(event.data).length) {
  245. return;
  246. }
  247. if (type == "data0") {
  248. this.getData0(JSON.parse(event.data));
  249. } else if (type == "data1") {
  250. this.getData1(JSON.parse(event.data));
  251. } else if (type == "data2") {
  252. this.getData2(JSON.parse(event.data));
  253. }
  254. };
  255. // 连接关闭的回调
  256. websocket.onclose = () => {
  257. console.log("WebSocket连接关闭 状态码:" + websocket.readyState);
  258. };
  259. // 通过$once来监听定时器,在beforeDestroy钩子可以被清除。
  260. this.$once("hook:beforeDestroy", () => {
  261. websocket.close();
  262. });
  263. },
  264. },
  265. };
  266. </script>
  267. <style lang="less" scoped>
  268. #outer {
  269. width: 100%;
  270. height: 850px;
  271. background-image: linear-gradient(
  272. to right,
  273. rgb(6, 19, 60) 0%,
  274. rgb(1, 22, 105) 50%,
  275. rgb(6, 19, 60) 100%
  276. );
  277. position: relative;
  278. .title {
  279. position: relative;
  280. height: 5%;
  281. p {
  282. color: #fff;
  283. font-size: 30px;
  284. margin: 0;
  285. position: absolute;
  286. left: 50%;
  287. top: 50%;
  288. transform: translate(-50%, -50%);
  289. }
  290. }
  291. .square {
  292. border: 3px solid;
  293. border-color: #302b33;
  294. margin-left: 200px;
  295. margin-bottom: 20px;
  296. margin-top: -25px
  297. }
  298. .container {
  299. display: grid;
  300. width: 1200px;
  301. height: 1000px;
  302. grid-template-rows: 100%;
  303. grid-template-columns: 50% 50%;
  304. }
  305. .details {
  306. display: grid;
  307. height: 90%;
  308. grid-template-rows: 33.3% 33.3% 33.3%;
  309. grid-template-columns: 33.3% 33.3% 33.3%;
  310. font-size: 18px;
  311. color: #4adefe;
  312. span {
  313. border-radius: 0.7rem;
  314. width: 2.5rem;
  315. height: 2.25rem;
  316. color: #f3db5c;
  317. }
  318. }
  319. .row {
  320. display: grid;
  321. width: 1300px;
  322. height: 600px;
  323. left: 640px;
  324. grid-template-rows: 33.3% 33.3% 33.3%;
  325. grid-template-columns: 100%;
  326. }
  327. .img {
  328. //border: 1px solid;
  329. //border-color: #29b35e;
  330. float: left;
  331. border-radius: 10%;
  332. width: 17%;
  333. height: 100%;
  334. }
  335. .inf {
  336. //border: 1px solid;
  337. //border-color: #4729b3;
  338. float: right;
  339. width: 83%;
  340. height: 100%;
  341. }
  342. }
  343. </style>