index.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  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. let interval = setInterval(() => {
  223. for(let i=0;i<3;i++){
  224. this.data[i].transporter_speed = this.getRandomNum(10, 100);
  225. this.data[i].transporter_power = this.getRandomNum(90, 1000);
  226. this.data[i].transporter_reducerOilTemperature = this.getRandomNum(70, 140);
  227. this.data[i].transporter_current=this.getRandomNum(2,10);
  228. this.data[i].transporter_motorTemperature=this.getRandomNum(2,10);
  229. this.data[i].transporter_pressure=this.getRandomNum(100,1100);
  230. this.data[i].transporter_voltage=this.getRandomNum(1,3000);
  231. this.data[i].transporter_reducerShaftTemperature=this.getRandomNum(2,10000);
  232. this.data[i].transporter_waterTemperature=this.getRandomNum(2,100);
  233. }
  234. }, 3000);
  235. this.$once("hook:beforeDestroy", () => {
  236. clearInterval(interval);
  237. });
  238. },
  239. methods: {
  240. getData0(data) {
  241. this.data[0]=data[0];
  242. },
  243. getData1(data) {
  244. this.data[1]=data[1];
  245. },
  246. getData2(data) {
  247. this.data[2]=data[2];
  248. },
  249. initWebSocket(websocket, type, select) {
  250. // 连接错误
  251. websocket.onerror = () => {
  252. console.log("WebSocket连接发生错误 状态码:" + websocket.readyState);
  253. };
  254. // 连接成功
  255. websocket.onopen = () => {
  256. console.log("WebSocket连接成功 状态码:" + websocket.readyState);
  257. };
  258. // 收到消息的回调
  259. websocket.onmessage = (event) => {
  260. if (!JSON.parse(event.data).length) {
  261. return;
  262. }
  263. if (type == "data0") {
  264. this.getData0(JSON.parse(event.data));
  265. } else if (type == "data1") {
  266. this.getData1(JSON.parse(event.data));
  267. } else if (type == "data2") {
  268. this.getData2(JSON.parse(event.data));
  269. }
  270. };
  271. // 连接关闭的回调
  272. websocket.onclose = () => {
  273. console.log("WebSocket连接关闭 状态码:" + websocket.readyState);
  274. };
  275. // 通过$once来监听定时器,在beforeDestroy钩子可以被清除。
  276. this.$once("hook:beforeDestroy", () => {
  277. websocket.close();
  278. });
  279. },
  280. },
  281. };
  282. </script>
  283. <style lang="less" scoped>
  284. #outer {
  285. width: 100%;
  286. height: 850px;
  287. background-image: linear-gradient(
  288. to right,
  289. rgb(6, 19, 60) 0%,
  290. rgb(1, 22, 105) 50%,
  291. rgb(6, 19, 60) 100%
  292. );
  293. position: relative;
  294. .title {
  295. position: relative;
  296. height: 5%;
  297. p {
  298. color: #fff;
  299. font-size: 30px;
  300. margin: 0;
  301. position: absolute;
  302. left: 50%;
  303. top: 50%;
  304. transform: translate(-50%, -50%);
  305. }
  306. }
  307. .square {
  308. border: 3px solid;
  309. border-color: #302b33;
  310. margin-left: 200px;
  311. margin-bottom: 20px;
  312. margin-top: -25px
  313. }
  314. .container {
  315. display: grid;
  316. width: 1200px;
  317. height: 1000px;
  318. grid-template-rows: 100%;
  319. grid-template-columns: 50% 50%;
  320. }
  321. .details {
  322. display: grid;
  323. height: 90%;
  324. grid-template-rows: 33.3% 33.3% 33.3%;
  325. grid-template-columns: 33.3% 33.3% 33.3%;
  326. font-size: 18px;
  327. color: #4adefe;
  328. span {
  329. border-radius: 0.7rem;
  330. width: 2.5rem;
  331. height: 2.25rem;
  332. color: #f3db5c;
  333. }
  334. }
  335. .row {
  336. display: grid;
  337. width: 1300px;
  338. height: 600px;
  339. left: 640px;
  340. grid-template-rows: 33.3% 33.3% 33.3%;
  341. grid-template-columns: 100%;
  342. }
  343. .img {
  344. //border: 1px solid;
  345. //border-color: #29b35e;
  346. float: left;
  347. border-radius: 10%;
  348. width: 17%;
  349. height: 100%;
  350. }
  351. .inf {
  352. //border: 1px solid;
  353. //border-color: #4729b3;
  354. float: right;
  355. width: 83%;
  356. height: 100%;
  357. }
  358. }
  359. </style>