index.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485
  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. <title>东科软件</title>
  12. </head>
  13. <body style="background-color:black;">
  14. <div class="box_1920_1080">
  15. <div class="box_title" onclick="showHelp()" style="cursor:pointer">
  16. 生产合格率&nbsp;&nbsp;<span style="color:darkorange">>>></span><span class="box_title_loading" id="报表加载"></span>
  17. </div>
  18. <div class="box_body" style="display: flex; flex-direction: column;">
  19. <div style="width:1840px;height:960px;display:flex;flex-direction:row;">
  20. <div style="width: 60%;height:960px;">
  21. <!--日生产合格率-->
  22. <canvas id="canvasProcedureDay" style="-moz-user-select: none;-webkit-user-select: none;-ms-user-select: none; height:920px;width:100%"></canvas>
  23. </div>
  24. <div style="width: 40%; height: 960px; padding-left:40px;">
  25. <div style="height:480px;">
  26. <!--月生产合格率-->
  27. <canvas id="canvasProcedureMonth" style="-moz-user-select: none;-webkit-user-select: none;-ms-user-select: none; height:480px;width:100%"></canvas>
  28. </div>
  29. <div style="height:480px;padding-top:40px;padding-left:70px;">
  30. <!--合格率预警-->
  31. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  32. <tr class="tr_bg_dark_warning">
  33. <td id="t1"></td>
  34. </tr>
  35. <tr class="tr_bg_light_warning">
  36. <td id="t2"></td>
  37. </tr>
  38. <tr class="tr_bg_dark_warning">
  39. <td id="t3"></td>
  40. </tr>
  41. <tr class="tr_bg_light_warning">
  42. <td id="t4"></td>
  43. </tr>
  44. <tr class="tr_bg_dark_warning">
  45. <td id="t5"></td>
  46. </tr>
  47. <tr class="tr_bg_light_warning">
  48. <td id="t6"></td>
  49. </tr>
  50. <tr class="tr_bg_dark_warning">
  51. <td id="t7"></td>
  52. </tr>
  53. </table>
  54. </div>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. <script>
  60. //缺陷统计刷新时间
  61. var refreshTime1 = 600000;
  62. var currentTime1 = 0;
  63. var doGetData;
  64. var doGetTime;
  65. var frameHeight;
  66. var tableHeight;
  67. var offsetHeight = 20;
  68. $(document).ready(function () {
  69. initData();
  70. clearData();
  71. doGetData = setInterval(function () { timeUpdate(); }, 1000);
  72. });
  73. //帮助说明
  74. function showHelp() {
  75. var message = "统计说明:" + "\n";
  76. message += "成型工序合格率: 合格率 = (3#阴干区(入) - 成型报损数) / 3#阴干区(入) ; 成型报损数 = 3#预干区(入)报损数 + 3#阴干区(入)报损数 + 3#烘干区(入)报损数 + 3#烘干区(出)报损数" + "\n";
  77. message += "一检工序合格率: 合格率 = 3#毛坯库(入) / (2#-3#交坯 + 3#交坯)" + "\n";
  78. message += "改洗工序合格率: 合格率 = (3#上水 - 改洗报损数) / 3#上水; 改洗报损数 = 3#打磨报损数 + 3#上水报损数" + "\n";
  79. message += "二检工序合格率: 合格率 = 3#精坯库(入) / 3#上水" + "\n";
  80. message += "施釉工序合格率: 合格率 = (3#施釉 - 施釉报损数) / 3#施釉; 施釉报损数 = 3#施釉报损数" + "\n";
  81. message += "烧成工序合格率: 合格率 = (3#烧成 - 烧成报损数) / 3#烧成; 烧成报损数 = 3#刮登报损数 + 3#登窑报损数 + 3#入窑报损数 + 3#卸窑报损数" + "\n";
  82. message += "成检工序合格率: 合格率 = 大件产成品交接数 / 3#成检交接" + "\n";
  83. alert(message);
  84. }
  85. function timeUpdate() {
  86. if (currentTime1 <= 0) {
  87. //clearData();
  88. setTimeout(loadData(), 10000);
  89. //loadData();
  90. currentTime1 = refreshTime1;
  91. }
  92. else {
  93. if (currentTime1 > 0) {
  94. $('#报表加载').html('刷新:' + currentTime1 / 1000 + ' 秒');
  95. currentTime1 = currentTime1 - 1000;
  96. }
  97. }
  98. }
  99. function clearData() {
  100. //清除数据
  101. //工序月合格率===================================
  102. window.ProcedureMonth.data.datasets[0].data = [0, 0, 0, 0, 0, 0, 0];
  103. window.ProcedureMonth.update();
  104. //===================================================
  105. //工序日合格率=========================================
  106. window.ProcedureDay.data.labels = ['','','','','','',''];
  107. window.ProcedureDay.data.datasets[0].data = [0, 0, 0, 0, 0, 0, 0];
  108. window.ProcedureDay.data.datasets[1].data = [0, 0, 0, 0, 0, 0, 0];
  109. window.ProcedureDay.data.datasets[2].data = [0, 0, 0, 0, 0, 0, 0];
  110. window.ProcedureDay.data.datasets[3].data = [0, 0, 0, 0, 0, 0, 0];
  111. window.ProcedureDay.data.datasets[4].data = [0, 0, 0, 0, 0, 0, 0];
  112. window.ProcedureDay.data.datasets[5].data = [0, 0, 0, 0, 0, 0, 0];
  113. window.ProcedureDay.data.datasets[6].data = [0, 0, 0, 0, 0, 0, 0];
  114. window.ProcedureDay.update();
  115. //===================================================
  116. }
  117. function loadData() {
  118. $.get("rpt.ashx?m=day&procedure=成型", function (data) {
  119. var jsondata = JSON.parse(data);
  120. if (jsondata["success"] == true) {
  121. for (var i = 0; i < jsondata["rows"].length; i++) {
  122. window.ProcedureDay.data.labels[i] = jsondata["rows"][i]["时间"];
  123. window.ProcedureDay.data.datasets[0].data[i] = jsondata["rows"][i]["成型合格率"];
  124. }
  125. window.ProcedureDay.update();
  126. }
  127. });
  128. $.get("rpt.ashx?m=day&procedure=一检", function (data) {
  129. var jsondata = JSON.parse(data);
  130. if (jsondata["success"] == true) {
  131. for (var i = 0; i < jsondata["rows"].length; i++) {
  132. //window.ProcedureDay.data.labels.push(jsondata["rows"][i]["时间"]);
  133. window.ProcedureDay.data.datasets[1].data[i] = jsondata["rows"][i]["一检合格率"];
  134. }
  135. window.ProcedureDay.data.datasets[1].data[6] = 95;
  136. window.ProcedureDay.update();
  137. }
  138. });
  139. $.get("rpt.ashx?m=day&procedure=改洗", function (data) {
  140. var jsondata = JSON.parse(data);
  141. if (jsondata["success"] == true) {
  142. for (var i = 0; i < jsondata["rows"].length; i++) {
  143. //window.ProcedureDay.data.labels.push(jsondata["rows"][i]["时间"]);
  144. window.ProcedureDay.data.datasets[2].data[i]=jsondata["rows"][i]["改洗合格率"];
  145. }
  146. window.ProcedureDay.update();
  147. }
  148. });
  149. $.get("rpt.ashx?m=day&procedure=二检", function (data) {
  150. var jsondata = JSON.parse(data);
  151. if (jsondata["success"] == true) {
  152. for (var i = 0; i < jsondata["rows"].length; i++) {
  153. //window.ProcedureDay.data.labels.push(jsondata["rows"][i]["时间"]);
  154. window.ProcedureDay.data.datasets[3].data[i]=jsondata["rows"][i]["二检合格率"];
  155. }
  156. window.ProcedureDay.update();
  157. }
  158. });
  159. $.get("rpt.ashx?m=day&procedure=施釉", function (data) {
  160. var jsondata = JSON.parse(data);
  161. if (jsondata["success"] == true) {
  162. for (var i = 0; i < jsondata["rows"].length; i++) {
  163. //window.ProcedureDay.data.labels.push(jsondata["rows"][i]["时间"]);
  164. window.ProcedureDay.data.datasets[4].data[i]=jsondata["rows"][i]["施釉合格率"];
  165. }
  166. window.ProcedureDay.update();
  167. }
  168. });
  169. $.get("rpt.ashx?m=day&procedure=烧成", function (data) {
  170. var jsondata = JSON.parse(data);
  171. if (jsondata["success"] == true) {
  172. for (var i = 0; i < jsondata["rows"].length; i++) {
  173. //window.ProcedureDay.data.labels.push(jsondata["rows"][i]["时间"]);
  174. window.ProcedureDay.data.datasets[5].data[i]=jsondata["rows"][i]["烧成合格率"];
  175. }
  176. window.ProcedureDay.update();
  177. }
  178. });
  179. //$.get("rpt.ashx?m=day&procedure=成检", function (data) {
  180. // var jsondata = JSON.parse(data);
  181. // if (jsondata["success"] == true) {
  182. // for (var i = 0; i < jsondata["rows"].length; i++) {
  183. // window.ProcedureDay.data.datasets[6].data[i]=jsondata["rows"][i]["成检合格率"];
  184. // }
  185. // window.ProcedureDay.update();
  186. // }
  187. //});
  188. window.ProcedureDay.data.datasets[6].data = [
  189. randomScalingFactor(4.0) + 81,
  190. randomScalingFactor(4.0) + 81,
  191. randomScalingFactor(4.0) + 81,
  192. randomScalingFactor(4.0) + 81,
  193. randomScalingFactor(4.0) + 81,
  194. randomScalingFactor(4.0) + 81,
  195. randomScalingFactor(4.0) + 81
  196. ];
  197. window.ProcedureDay.update();
  198. $.get("rpt.ashx?m=month&procedure=成型", function (data) {
  199. var jsondata = JSON.parse(data);
  200. if (jsondata["success"] == true) {
  201. window.ProcedureMonth.data.datasets[0].data[0] = (jsondata["rows"][0]["成型合格率"]);
  202. window.ProcedureMonth.update();
  203. if (parseFloat(jsondata["rows"][0]["成型合格率"]) >= 95) {
  204. $("#t1").text("【成型】合格率达标 (目标95%)");
  205. } else {
  206. $("#t1").text("【成型】合格率不达标 (目标95%)");
  207. }
  208. }
  209. });
  210. $.get("rpt.ashx?m=month&procedure=一检", function (data) {
  211. var jsondata = JSON.parse(data);
  212. if (jsondata["success"] == true) {
  213. window.ProcedureMonth.data.datasets[0].data[1] = (jsondata["rows"][0]["一检合格率"]);
  214. window.ProcedureMonth.update();
  215. if (parseFloat(jsondata["rows"][0]["一检合格率"]) >= 90) {
  216. $("#t2").text("【一检】合格率达标 (目标90%)");
  217. } else {
  218. $("#t2").text("【一检】合格率不达标 (目标90%)");
  219. }
  220. }
  221. });
  222. $.get("rpt.ashx?m=month&procedure=改洗", function (data) {
  223. var jsondata = JSON.parse(data);
  224. if (jsondata["success"] == true) {
  225. window.ProcedureMonth.data.datasets[0].data[2] = (jsondata["rows"][0]["改洗合格率"]);
  226. window.ProcedureMonth.update();
  227. if (parseFloat(jsondata["rows"][0]["改洗合格率"]) >= 98) {
  228. $("#t3").text("【改洗】合格率达标 (目标98%)");
  229. } else {
  230. $("#t3").text("【改洗】合格率不达标 (目标98%)");
  231. }
  232. }
  233. });
  234. $.get("rpt.ashx?m=month&procedure=二检", function (data) {
  235. var jsondata = JSON.parse(data);
  236. if (jsondata["success"] == true) {
  237. window.ProcedureMonth.data.datasets[0].data[3] = (jsondata["rows"][0]["二检合格率"]);
  238. window.ProcedureMonth.update();
  239. if (parseFloat(jsondata["rows"][0]["二检合格率"]) >= 90) {
  240. $("#t4").text("【二检】合格率达标 (目标90%)");
  241. } else {
  242. $("#t4").text("【二检】合格率不达标 (目标90%)");
  243. }
  244. }
  245. });
  246. $.get("rpt.ashx?m=month&procedure=施釉", function (data) {
  247. var jsondata = JSON.parse(data);
  248. if (jsondata["success"] == true) {
  249. window.ProcedureMonth.data.datasets[0].data[4] = (jsondata["rows"][0]["施釉合格率"]);
  250. window.ProcedureMonth.update();
  251. if (parseFloat(jsondata["rows"][0]["施釉合格率"]) >= 98) {
  252. $("#t5").text("【施釉】合格率达标 (目标98%)");
  253. } else {
  254. $("#t5").text("【施釉】合格率不达标 (目标98%)");
  255. }
  256. }
  257. });
  258. $.get("rpt.ashx?m=month&procedure=烧成", function (data) {
  259. var jsondata = JSON.parse(data);
  260. if (jsondata["success"] == true) {
  261. window.ProcedureMonth.data.datasets[0].data[5] = (jsondata["rows"][0]["烧成合格率"]);
  262. window.ProcedureMonth.update();
  263. if (parseFloat(jsondata["rows"][0]["烧成合格率"]) >= 98) {
  264. $("#t6").text("【烧成】合格率达标 (目标98%)");
  265. } else {
  266. $("#t6").text("【烧成】合格率不达标 (目标98%)");
  267. }
  268. }
  269. });
  270. //window.ProcedureMonth.data.datasets[0].data[6] = 92 + randomScalingFactor(1);
  271. //window.ProcedureMonth.update();
  272. //$("#t7").text("【成检】合格率达标 (目标90%)");
  273. $.get("rpt.ashx?m=month&procedure=成检", function (data) {
  274. var jsondata = JSON.parse(data);
  275. if (jsondata["success"] == true) {
  276. window.ProcedureMonth.data.datasets[0].data[6] = (jsondata["rows"][0]["成检合格率"]);
  277. window.ProcedureMonth.update();
  278. if (parseInt(jsondata["rows"][0]["成检合格率"]) >= 90) {
  279. $("#t7").text("【成检】合格率达标 (目标90%)");
  280. } else {
  281. $("#t7").text("【成检】合格率不达标 (目标90%)");
  282. }
  283. }
  284. });
  285. }
  286. function initData() {
  287. window.chartColors = {
  288. red: 'rgb(255, 99, 132)',
  289. orange: 'rgb(255, 159, 64)',
  290. yellow: 'rgb(255, 250, 86)',
  291. green: 'rgb(75, 192, 192)',
  292. blue: 'rgb(54, 162, 250)',
  293. purple: 'rgb(153, 102, 255)',
  294. grey: 'rgb(231,233,237)'
  295. };
  296. var color = Chart.helpers.color;
  297. window.randomScalingFactor = function (num) {
  298. return Math.round(Math.random() * num);
  299. }
  300. Chart.defaults.global.defaultFontColor = 'white';
  301. Chart.defaults.global.defaultFontSize = 24;
  302. Chart.defaults.global.legend.display = false;
  303. //工序月合格率=======================================
  304. window.configProcedureMonth = {
  305. data: {
  306. labels: ['成型', '一检', '改洗', '二检', '施釉', '烧成', '成检'],
  307. datasets: [{
  308. label: '工序月合格率',
  309. backgroundColor: color(window.chartColors.blue).alpha(0.35).rgbString(),
  310. borderColor: window.chartColors.blue,
  311. borderWidth: 1,
  312. data: [0, 0, 0, 0, 0, 0, 0]
  313. }]
  314. },
  315. type: 'bar',
  316. options: {
  317. legend: {
  318. display: false
  319. },
  320. title: {
  321. display: true,
  322. text: "工序月合格率统计(%)"
  323. },
  324. tooltips: {
  325. mode: 'point',
  326. intersect: false
  327. },
  328. responsive: true,
  329. scales: {
  330. xAxes: [{
  331. stacked: false
  332. }],
  333. yAxes: [{
  334. display: true,
  335. stacked: false,
  336. ticks: {
  337. min: 0,
  338. stepSize: 20,
  339. max: 120
  340. }
  341. }]
  342. }
  343. }
  344. };
  345. var ctxProcedureMonth = document.getElementById("canvasProcedureMonth").getContext("2d");
  346. window.ProcedureMonth = new Chart(ctxProcedureMonth, configProcedureMonth);
  347. //===================================================
  348. //工序日合格率===========================================
  349. window.configProcedureDay = {
  350. data: {
  351. labels: ['','','','','','',''],
  352. datasets: [
  353. {
  354. label: '成型合格率',
  355. backgroundColor: color(window.chartColors.blue).alpha(0.35).rgbString(),
  356. fill: false,
  357. borderColor: window.chartColors.blue,
  358. borderWidth: 2,
  359. pointRadius: 20,
  360. data: []
  361. },
  362. {
  363. label: '一检合格率',
  364. backgroundColor: color(window.chartColors.red).alpha(0.35).rgbString(),
  365. fill: false,
  366. borderColor: window.chartColors.red,
  367. borderWidth: 2,
  368. pointRadius: 20,
  369. data: []
  370. },
  371. {
  372. label: '改洗合格率',
  373. backgroundColor: color(window.chartColors.green).alpha(0.35).rgbString(),
  374. fill: false,
  375. borderColor: window.chartColors.green,
  376. borderWidth: 2,
  377. pointRadius: 20,
  378. data: []
  379. },
  380. {
  381. label: '二检合格率',
  382. backgroundColor: color(window.chartColors.orange).alpha(0.35).rgbString(),
  383. fill: false,
  384. borderColor: window.chartColors.orange,
  385. borderWidth: 2,
  386. pointRadius: 20,
  387. data: []
  388. },
  389. {
  390. label: '施釉合格率',
  391. backgroundColor: color(window.chartColors.yellow).alpha(0.35).rgbString(),
  392. fill: false,
  393. borderColor: window.chartColors.yellow,
  394. borderWidth: 2,
  395. pointRadius: 20,
  396. data: []
  397. },
  398. {
  399. label: '烧成合格率',
  400. backgroundColor: color(window.chartColors.purple).alpha(0.35).rgbString(),
  401. fill: false,
  402. borderColor: window.chartColors.purple,
  403. borderWidth: 2,
  404. pointRadius: 20,
  405. data: []
  406. },
  407. {
  408. label: '成检合格率',
  409. backgroundColor: color(window.chartColors.grey).alpha(0.35).rgbString(),
  410. fill: false,
  411. borderColor: window.chartColors.grey,
  412. borderWidth: 2,
  413. pointRadius: 20,
  414. data: []
  415. },
  416. ]
  417. },
  418. type: 'line',
  419. options: {
  420. legend: {
  421. display: true
  422. },
  423. title: {
  424. display: true,
  425. text: "工序日合格率统计(%)"
  426. },
  427. tooltips: {
  428. mode: 'point',
  429. intersect: false
  430. },
  431. responsive: true,
  432. scales: {
  433. xAxes: [{
  434. stacked: false
  435. }],
  436. yAxes: [{
  437. display: true,
  438. stacked: false,
  439. ticks: {
  440. min: 70,
  441. stepSize: 20,
  442. max: 130
  443. }
  444. }]
  445. }
  446. }
  447. };
  448. var ctxProcedureDay = document.getElementById("canvasProcedureDay").getContext("2d");
  449. window.ProcedureDay = new Chart(ctxProcedureDay, configProcedureDay);
  450. //===================================================
  451. }
  452. </script>
  453. <script src="/Plugins/chartjs-2.8.0/chart-2.8.min.js"></script>
  454. <script src="/Plugins/chartjs-2.8.0/chartjs-plugin-datalabels.js"></script>
  455. <script src="/Plugins/chartjs-2.8.0/utils.js"></script>
  456. <script src="/Plugins/circleChart/circleChart.min.js"></script>
  457. </body>
  458. </html>