demo.html 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  6. <link rel="shortcut icon" href="/img/logo.png" />
  7. <link rel="bookmark" href="/img/logo.png" />
  8. <link rel="stylesheet" href="../DashBoard.css?v3" />
  9. <script src="/Plugins/jquery-3.4.1/jquery-3.4.1.min.js"></script>
  10. <script src="/Plugins/xrequest/xrequest.min.js"></script>
  11. <script src="/Plugins/xcountto/xcountTo.min.js"></script>
  12. <title>东科软件</title>
  13. </head>
  14. <body>
  15. <div class="m4_box_1920_1080">
  16. <div class="m4_box_title" onclick="showHelp()" style="cursor:pointer">
  17. <div class="m4_box_title_arrow"></div><div class="m4_box_title_arrow2"></div> <div>设备状态总览</div><span class="m4_box_title_loading" id="报表加载"></span>
  18. </div>
  19. <div class="m4_box_body" style="padding-right: 20px;">
  20. <div style="width: 1720px; height: 440px;">
  21. <div style="display:flex;">
  22. <div style="width: 445px; height: 440px;">
  23. <!--设备运行时间统计图-->
  24. <canvas id="canvasDevice" style="-moz-user-select: none;-webkit-user-select: none;-ms-user-select: none; height:400px;width:100%"></canvas>
  25. </div>
  26. <div style="width: 445px; height: 440px;">
  27. <!--成型设备-->
  28. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  29. <tr class="tr_title">
  30. <td style="width:280px;">成型设备</td>
  31. <td>状态</td>
  32. </tr>
  33. <tr class="tr_bg_light">
  34. <td>高压注浆(1线)</td>
  35. <td><span id="gy01" class="status_red">█</span> <span id="gy01_title"></span> </td>
  36. </tr>
  37. <tr class="tr_bg_dark">
  38. <td>高压注浆(2线)</td>
  39. <td><span id="gy02" class="status_red">█</span> <span id="gy02_title"></span> </td>
  40. </tr>
  41. <tr class="tr_bg_light">
  42. <td>高压注浆(3线)</td>
  43. <td><span id="gy03" class="status_red">█</span> <span id="gy03_title"></span> </td>
  44. </tr>
  45. <tr class="tr_bg_dark">
  46. <td>高压注浆(4线)</td>
  47. <td><span id="gy04" class="status_red">█</span> <span id="gy04_title"></span> </td>
  48. </tr>
  49. <tr class="tr_bg_light">
  50. <td>高压注浆(5线)</td>
  51. <td><span id="gy05" class="status_red">█</span> <span id="gy05_title"></span> </td>
  52. </tr>
  53. <tr class="tr_bg_dark">
  54. <td>高压注浆(6线)</td>
  55. <td><span id="gy06" class="status_red">█</span> <span id="gy06_title"></span> </td>
  56. </tr>
  57. </table>
  58. </div>
  59. <div style="width: 445px; height: 440px;">
  60. <!--干燥房-->
  61. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  62. <tr class="tr_title">
  63. <td style="width:280px;">烘干房</td>
  64. <td>状态</td>
  65. </tr>
  66. <tr class="tr_bg_light">
  67. <td>烘干房(1号)</td>
  68. <td><span id="hg01" class="status_red">█</span> <span id="hg01_title"></span> </td>
  69. </tr>
  70. <tr class="tr_bg_dark">
  71. <td>烘干房(2号)</td>
  72. <td><span id="hg02" class="status_red">█</span> <span id="hg02_title"></span> </td>
  73. </tr>
  74. <tr class="tr_bg_light">
  75. <td>烘干房(3号)</td>
  76. <td><span id="hg03" class="status_red">█</span> <span id="hg03_title"></span> </td>
  77. </tr>
  78. <tr class="tr_bg_dark">
  79. <td>烘干房(4号)</td>
  80. <td><span id="hg04" class="status_red">█</span> <span id="hg04_title"></span> </td>
  81. </tr>
  82. <tr class="tr_bg_light">
  83. <td></td>
  84. <td><span id="hg05" class="status_red"></span> <span id="hg05_title"></span> </td>
  85. </tr>
  86. <tr class="tr_bg_dark">
  87. <td></td>
  88. <td><span id="hg06" class="status_red"></span> <span id="hg06_title"></span> </td>
  89. </tr>
  90. </table>
  91. </div>
  92. <div style="width: 445px; height: 440px;">
  93. <!--施釉机器人-->
  94. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  95. <tr class="tr_title">
  96. <td style="width:280px;">施釉(4+1线)</td>
  97. <td>状态</td>
  98. </tr>
  99. <tr class="tr_bg_light">
  100. <td>搬运机器人(1号)</td>
  101. <td><span id="sy01" class="status_red">█</span> <span id="sy01_title"></span> </td>
  102. </tr>
  103. <tr class="tr_bg_dark">
  104. <td>喷房机器人(1号)</td>
  105. <td><span id="sy02" class="status_red">█</span> <span id="sy02_title"></span> </td>
  106. </tr>
  107. <tr class="tr_bg_light">
  108. <td>喷房机器人(2号)</td>
  109. <td><span id="sy03" class="status_red">█</span> <span id="sy03_title"></span> </td>
  110. </tr>
  111. <tr class="tr_bg_dark">
  112. <td>喷房机器人(3号)</td>
  113. <td><span id="sy04" class="status_red">█</span> <span id="sy04_title"></span> </td>
  114. </tr>
  115. <tr class="tr_bg_light">
  116. <td>喷房机器人(4号)</td>
  117. <td><span id="sy05" class="status_red">█</span> <span id="sy05_title"></span> </td>
  118. </tr>
  119. <tr class="tr_bg_dark">
  120. <td></td>
  121. <td><span id="sy06" class=""></span> <span id="sy06_title"></span> </td>
  122. </tr>
  123. </table>
  124. </div>
  125. </div>
  126. </div>
  127. <div style="width: 1720px; height: 340px; ">
  128. <div style="display:flex;">
  129. <div style="width: 445px; height: 340px; ">
  130. <!--登卸窑机器人-->
  131. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  132. <tr class="tr_title">
  133. <td style="width:280px;">登卸窑机器人</td>
  134. <td>状态</td>
  135. </tr>
  136. <tr class="tr_bg_light">
  137. <td>登窑机器人(1号)</td>
  138. <td><span id="dxy01" class="status_red">█</span><span id="dxy01_title"></span></td>
  139. </tr>
  140. <tr class="tr_bg_dark">
  141. <td>卸窑机器人(1号)</td>
  142. <td><span id="dxy02" class="status_red">█</span><span id="dxy02_title"></span></td>
  143. </tr>
  144. <tr class="tr_bg_light">
  145. <td>登窑机器人(2号)</td>
  146. <td><span id="dxy03" class="status_red">█</span><span id="dxy03_title"></span></td>
  147. </tr>
  148. <tr class="tr_bg_dark">
  149. <td>卸窑机器人(2号)</td>
  150. <td><span id="dxy04" class="status_red">█</span><span id="dxy04_title"></span></td>
  151. </tr>
  152. </table>
  153. </div>
  154. <div style="width: 445px; height: 340px; ">
  155. <!--功能检测-->
  156. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  157. <tr class="tr_title">
  158. <td style="width:280px;">功能检测</td>
  159. <td>状态</td>
  160. </tr>
  161. <tr class="tr_bg_light">
  162. <td>测漏机(1号)</td>
  163. <td><span id="ss01" class="status_red">█</span><span id="ss01_title"></span></td>
  164. </tr>
  165. <tr class="tr_bg_dark">
  166. <td>测漏机(2号)</td>
  167. <td><span id="ss02" class="status_red">█</span><span id="ss02_title"></span></td>
  168. </tr>
  169. <tr class="tr_bg_light">
  170. <td>测漏机(3号)</td>
  171. <td><span id="ss03" class="status_red">█</span><span id="ss03_title"></span></td>
  172. </tr>
  173. <tr class="tr_bg_dark">
  174. <td>测漏机(4号)</td>
  175. <td><span id="ss04" class="status_red">█</span><span id="ss04_title"></span></td>
  176. </tr>
  177. </table>
  178. </div>
  179. <div style="width: 445px; height: 340px; ">
  180. <!--功能检测-->
  181. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  182. <tr class="tr_title">
  183. <td style="width:280px;">功能检测</td>
  184. <td>状态</td>
  185. </tr>
  186. <tr class="tr_bg_light">
  187. <td>测漏机(5号)</td>
  188. <td><span id="ss05" class="status_red">█</span><span id="ss05_title"></span></td>
  189. </tr>
  190. <tr class="tr_bg_dark">
  191. <td>测漏机(6号)</td>
  192. <td><span id="ss06" class="status_red">█</span><span id="ss06_title"></span></td>
  193. </tr>
  194. <tr class="tr_bg_light">
  195. <td>测漏机(7号)</td>
  196. <td><span id="ss07" class="status_red">█</span><span id="ss07_title"></span></td>
  197. </tr>
  198. <tr class="tr_bg_dark">
  199. <td>测漏机(8号)</td>
  200. <td><span id="ss08" class="status_red">█</span><span id="ss08_title"></span></td>
  201. </tr>
  202. </table>
  203. </div>
  204. <div style="width: 445px; height: 340px; ">
  205. <!--包装机器人-->
  206. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  207. <tr class="tr_title">
  208. <td style="width:280px;">包装机器人</td>
  209. <td>状态</td>
  210. </tr>
  211. <tr class="tr_bg_light">
  212. <td>自动装箱机器人(1号)</td>
  213. <td><span id="bz01" class="status_red">█</span><span id="bz01_title"></span></td>
  214. </tr>
  215. <tr class="tr_bg_dark">
  216. <td>自动装箱机器人(2号)</td>
  217. <td><span id="bz02" class="status_red">█</span><span id="bz02_title"></span></td>
  218. </tr>
  219. <tr class="tr_bg_light">
  220. <td>包装码垛机器人(1号)</td>
  221. <td><span id="bz03" class="status_red">█</span><span id="bz03_title"></span></td>
  222. </tr>
  223. <tr class="tr_bg_dark">
  224. <td>包装码垛机器人(2号)</td>
  225. <td><span id="bz04" class="status_red">█</span><span id="bz04_title"></span></td>
  226. </tr>
  227. </table>
  228. </div>
  229. </div>
  230. </div>
  231. </div>
  232. </div>
  233. <script>
  234. //缺陷统计刷新时间
  235. var refreshTime1 = 3000;
  236. var currentTime1 = 0;
  237. var doGetData;
  238. var doGetTime;
  239. var frameHeight;
  240. var tableHeight;
  241. var offsetHeight = 20;
  242. var time1 = new Array(0, 0, 0, 0, 0, 0);
  243. var time2 = new Array(0, 0, 0, 0, 0, 0);
  244. var time3 = new Array(0, 0, 0, 0, 0, 0);
  245. var time0 = new Array(0, 0, 0, 0, 0, 0);
  246. $(document).ready(function () {
  247. initData();
  248. doGetData = setInterval(function () { timeUpdate(); }, 1000);
  249. });
  250. //帮助说明
  251. function showHelp() {
  252. var message = "统计说明:" + "\n";
  253. message += "这是文字说明这是文字说明这是文字说明这是文字说明这是文字说明这是文字说明这是文字说明" + "\n";
  254. message += "这是文字说明这是文字说明这是文字说明这是文字说明这是文字说明这是文字说明这是文字说明" + "\n";
  255. message += "这是文字说明这是文字说明这是文字说明这是文字说明这是文字说明这是文字说明这是文字说明" + "\n";
  256. alert(message);
  257. }
  258. function timeUpdate() {
  259. if (currentTime1 <= 0) {
  260. //clearData();
  261. loadData();
  262. currentTime1 = refreshTime1;
  263. }
  264. else {
  265. if (currentTime1 > 0) {
  266. $('#报表加载').html('刷新:' + currentTime1 / 1000 + ' 秒');
  267. currentTime1 = currentTime1 - 1000;
  268. }
  269. }
  270. }
  271. function clearData() {
  272. //清除数据
  273. window.Device.data.datasets[0].data = [0, 0, 0, 0];
  274. window.Device.update();
  275. }
  276. function changeState(id, value) {
  277. $(id).removeClass("status_green");
  278. $(id).removeClass("status_yellow");
  279. $(id).removeClass("status_red");
  280. $(id).removeClass("status_blue");
  281. $(id).removeClass("status_grey");
  282. if (value == '1') { $(id + "_title").text(" 运行"); $(id).addClass('status_green'); }
  283. if (value == '2') { $(id + "_title").text(" 就绪"); $(id).addClass('status_blue'); }
  284. if (value == '3') { $(id + "_title").text(" 故障"); $(id).addClass('status_red'); }
  285. if (value == '0') { $(id + "_title").text(" 待机"); $(id).addClass('status_grey'); }
  286. if (value == '-1') { $(id + "_title").text(" 中断"); $(id).addClass('status_yellow'); }
  287. }
  288. function loadData() {
  289. //高压注浆
  290. $.get("demo.ashx?m=grouting", function (data) {
  291. var json = JSON.parse(data);
  292. for (var i = 0; i < json.length; i++) {
  293. changeState("#gy0" + (i + 1).toString(), json[i]["data"].toString());
  294. }
  295. updatePie(0, json);
  296. });
  297. //烘干房
  298. $.get("demo.ashx?m=dry", function (data) {
  299. var json = JSON.parse(data);
  300. for (var i = 0; i < json.length; i++) {
  301. changeState("#hg0" + (i + 1).toString(), json[i]["data"].toString());
  302. }
  303. updatePie(1, json);
  304. });
  305. //施釉机器人
  306. $.get("demo.ashx?m=glaze", function (data) {
  307. var json = JSON.parse(data);
  308. for (var i = 0; i < json.length; i++) {
  309. changeState("#sy0" + (i + 1).toString(), json[i]["data"].toString());
  310. }
  311. updatePie(2, json);
  312. });
  313. //登卸窑机器人
  314. $.get("demo.ashx?m=kiln", function (data) {
  315. var json = JSON.parse(data);
  316. for (var i = 0; i < json.length; i++) {
  317. changeState("#dxy0" + (i + 1).toString(), json[i]["data"].toString());
  318. }
  319. updatePie(3, json);
  320. });
  321. //测漏机
  322. $.get("demo.ashx?m=lake", function (data) {
  323. var json = JSON.parse(data);
  324. for (var i = 0; i < json.length; i++) {
  325. changeState("#ss0" + (i + 1).toString(), json[i]["data"].toString());
  326. }
  327. updatePie(4, json);
  328. });
  329. //包装机器人
  330. $.get("demo.ashx?m=pack", function (data) {
  331. var json = JSON.parse(data);
  332. for (var i = 0; i < json.length; i++) {
  333. changeState("#bz0" + (i + 1).toString(), json[i]["data"].toString());
  334. }
  335. updatePie(5, json);
  336. });
  337. //
  338. //window.Device.data.datasets[0].data = [time1, time2, time3, time4];
  339. //window.Device.update();
  340. }
  341. //更新饼图
  342. function updatePie(j, json) {
  343. time1[j] = 0;
  344. time2[j] = 0;
  345. time3[j] = 0;
  346. time0[j] = 0;
  347. for (var i = 0; i < json.length; i++) {
  348. if (json[i]["data"] == 1) time1[j]++;
  349. if (json[i]["data"] == 2) time2[j]++;
  350. if (json[i]["data"] == 3) time3[j]++;
  351. if (json[i]["data"] == 0) time0[j]++;
  352. }
  353. var num1 = 0; num2 = 0; num3 = 0; num0 = 0;
  354. for (var i = 0; i < time1.length; i++) num1 += time1[i];
  355. for (var i = 0; i < time2.length; i++) num2 += time2[i];
  356. for (var i = 0; i < time3.length; i++) num3 += time3[i];
  357. for (var i = 0; i < time0.length; i++) num0 += time0[i];
  358. window.Device.data.datasets[0].data = [num1, num2, num0, num3];
  359. window.Device.update();
  360. }
  361. function initData() {
  362. window.chartColors = {
  363. red: 'rgb(255, 99, 132)',
  364. orange: 'rgb(255, 159, 64)',
  365. yellow: 'rgb(255, 250, 86)',
  366. green: 'rgb(93,226,124)',
  367. blue: 'rgb(54, 162, 250)',
  368. purple: 'rgb(153, 102, 255)',
  369. grey: 'rgb(231,233,237)'
  370. };
  371. var color = Chart.helpers.color;
  372. window.randomScalingFactor = function (num) {
  373. return Math.round(Math.random() * num);
  374. }
  375. Chart.defaults.global.defaultFontColor = 'white';
  376. Chart.defaults.global.defaultFontSize = 24;
  377. Chart.defaults.global.legend.display = false;
  378. //运行时间数据=======================================
  379. window.configDevice = {
  380. data: {
  381. labels: ['运行', '就绪', '待机', '故障'],
  382. datasets: [{
  383. label: '设备状态',
  384. backgroundColor: [
  385. color(window.chartColors.green).alpha(0.35).rgbString(),
  386. color(window.chartColors.blue).alpha(0.2).rgbString(),
  387. color(window.chartColors.grey).alpha(0.35).rgbString(),
  388. color(window.chartColors.red).alpha(0.35).rgbString()
  389. ],
  390. fill: false,
  391. borderColor: [
  392. window.chartColors.green,
  393. window.chartColors.blue,
  394. window.chartColors.grey,
  395. window.chartColors.red
  396. ],
  397. borderWidth: 2,
  398. pointRadius: 30,
  399. data: [0, 0, 0, 0]
  400. }]
  401. },
  402. type: 'doughnut',
  403. options: {
  404. legend: {
  405. display: true
  406. },
  407. title: {
  408. display: false,
  409. text: "设备运行时间统计"
  410. },
  411. tooltips: {
  412. mode: 'point',
  413. intersect: false
  414. },
  415. responsive: true
  416. }
  417. };
  418. var ctxDevice = document.getElementById("canvasDevice").getContext("2d");
  419. window.Device = new Chart(ctxDevice, configDevice);
  420. //===================================================
  421. }
  422. </script>
  423. <script src="/Plugins/chartjs-2.8.0/chart-2.8.min.js"></script>
  424. <script src="/Plugins/chartjs-2.8.0/chartjs-plugin-datalabels.js"></script>
  425. <script src="/Plugins/chartjs-2.8.0/utils.js"></script>
  426. <script src="/Plugins/circleChart/circleChart.min.js"></script>
  427. </body>
  428. </html>