demo2.html 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  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 href="/Plugins/animate/animate.min.css" rel="stylesheet" />
  9. <link rel="stylesheet" href="../DashBoard.css?v3" />
  10. <script src="/Plugins/jquery-3.4.1/jquery-3.4.1.min.js"></script>
  11. <script src="/Plugins/animate/xanimate.js"></script>
  12. <script src="/Plugins/xrequest/xrequest.min.js"></script>
  13. <title>东科软件</title>
  14. </head>
  15. <body style="background-color:black;">
  16. <div class="box_1920_1080">
  17. <div class="box_title" style="display:flex;flex-direction:row;">
  18. <div style="width:30%;text-align:left;"></div>
  19. <div style="width: 40%; text-align: center; font-size: 38px; font-weight: 700">成检次品区看板</div>
  20. <div style="width:30%;text-align:right;"><span class="box_title_loading" style="font-size:32px;" id="报表加载"></span></div>
  21. </div>
  22. <div class="box_body" style="display: flex; flex-direction: column;">
  23. <!--近30天次品折线图-->
  24. <div style="width:1840px;height:300px;display:flex;flex-direction:row;">
  25. <div style="width: 100%; height: 300px;">
  26. <div style="color:white;font-size:20px;font-weight:600; text-align:center">三十日次品产量趋势图</div>
  27. <canvas id="canvasDayZL" style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; height: 270px; width: 100%"></canvas>
  28. </div>
  29. </div>
  30. <!--月次品缺陷表格-->
  31. <div style="width:1840px;height:720px;display:flex;flex-direction:row;">
  32. <div style="width: 48%; height: 360px;">
  33. <table cellspacing="0" cellpadding="0" border="0" style="width: 99.8%;">
  34. <tr class="tr_title_warning">
  35. <td colspan="10" style="color: white;">月次品缺陷数据汇总</td>
  36. </tr>
  37. <tr class="tr_title_warning" style="height: 46px;">
  38. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷名称</td>
  39. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">出窑数</td>
  40. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷数</td>
  41. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷占比</td>
  42. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px; ">同月比</td>
  43. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">上月比</td>
  44. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">对比趋势</td>
  45. </tr>
  46. </table>
  47. <div style=" height: 260px; overflow: hidden; width: 100%;">
  48. <div>
  49. <table id="dayTable_template" style="display:none;">
  50. <tr class="tr_title_warning" style="height: 46px;">
  51. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷名称}</td>
  52. <td style="width: 14.2%; font-size: 10px;">{出窑数}</td>
  53. <td style="width: 14.2%; font-size: 10px; ">{缺陷数}</td>
  54. <td style="width: 14.2%; font-size: 10px; ">{缺陷占比}</td>
  55. <td style="width: 14.2%; font-size: 10px; ">{同月比}</td>
  56. <td style="width: 14.2%; font-size: 10px; ">{上月比}</td>
  57. <td style="width: 14.2%; font-size: 10px; ">{对比趋势}</td>
  58. </tr>
  59. </table>
  60. </div>
  61. <table id="dayTable" style="width: 100%;">
  62. </table>
  63. </div>
  64. </div>
  65. <div style="width: 48%; height: 360px; margin-top: 334px; margin-left: -883.5px;">
  66. <table cellspacing="0" cellpadding="0" border="0" style="width: 99.8%;">
  67. <tr class="tr_title_warning">
  68. <td colspan="10" style="color: white;">月次品缺陷位置数据汇总</td>
  69. </tr>
  70. <tr class="tr_title_warning" style="height: 46px;">
  71. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷位置名称</td>
  72. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">出窑数</td>
  73. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷数</td>
  74. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷占比</td>
  75. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px; ">同月比</td>
  76. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">上月比</td>
  77. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">对比趋势</td>
  78. </tr>
  79. </table>
  80. <div style=" height: 260px; overflow: hidden; width: 100%;">
  81. <div>
  82. <table id="dayTable_templatedefect" style="display:none;">
  83. <tr class="tr_title_warning" style="height: 46px;">
  84. <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷位置名称}</td>
  85. <td style="width: 14.2%; font-size: 10px;">{出窑数}</td>
  86. <td style="width: 14.2%; font-size: 10px; ">{缺陷数}</td>
  87. <td style="width: 14.2%; font-size: 10px; ">{缺陷占比}</td>
  88. <td style="width: 14.2%; font-size: 10px; ">{同月比}</td>
  89. <td style="width: 14.2%; font-size: 10px; ">{上月比}</td>
  90. <td style="width: 14.2%; font-size: 10px; ">{对比趋势}</td>
  91. </tr>
  92. </table>
  93. </div>
  94. <table id="TableDefect" style="width: 100%; ">
  95. </table>
  96. </div>
  97. </div>
  98. <div style="width: 50%; height: 672px; right: 40px; margin-left: 35px;">
  99. <table cellspacing="0" cellpadding="0" border="0" style="width: 99.8%;">
  100. <tr class="tr_title_warning">
  101. <td colspan="10" style="color: white;">今日次品明细数据</td>
  102. </tr>
  103. <tr class="tr_title_warning" style="height: 50px;">
  104. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">产品条码</td>
  105. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">产品编码</td>
  106. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">注浆日期</td>
  107. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">成型线模具</td>
  108. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px; ">施釉产线</td>
  109. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">窑炉编号</td>
  110. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">责任工号</td>
  111. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px; ">缺陷类别</td>
  112. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷名称</td>
  113. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷位置</td>
  114. </tr>
  115. </table>
  116. <div style=" height: 572px; overflow: hidden; width: 100%;">
  117. <div>
  118. <table id="dayTable_templatedetail" style="display:none;">
  119. <tr class="tr_title_warning" style="height: 50px;">
  120. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{产品条码}</td>
  121. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{产品编码}</td>
  122. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{注浆日期}</td>
  123. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{成型线模具}</td>
  124. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{施釉产线}</td>
  125. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{窑炉编号}</td>
  126. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{责任工号}</td>
  127. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷类别}</td>
  128. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷名称}</td>
  129. <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷位置}</td>
  130. </tr>
  131. </table>
  132. </div>
  133. <table id="TableDefectDetail" style="width: 100%; ">
  134. </table>
  135. </div>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. <script>
  141. var mainInterval;
  142. var mainRowCount = 0;
  143. var mainInterva2;
  144. var mainRowCoun2 = 0;
  145. function loadMainTable() {
  146. $.get("demo2.ashx?m=MonthTabletwo", function (data) {
  147. var json = JSON.parse(data);
  148. if (json["success"] == true) {
  149. $("#dayTable").html("");
  150. for (var i = 0; i < json["rows"].length; i++) {
  151. var temp = $("#dayTable_template").html();
  152. temp = temp.replace("<tbody>", "").replace("</tbody>", "");
  153. temp = temp.replace('{缺陷名称}', json["rows"][i]['缺陷名称']);
  154. temp = temp.replace('{出窑数}', json["rows"][i]['出窑数']);
  155. temp = temp.replace('{缺陷数}', json["rows"][i]['缺陷数']);
  156. temp = temp.replace('{缺陷占比}', json["rows"][i]['缺陷占比']);
  157. temp = temp.replace('{同月比}', json["rows"][i]['同月比']);
  158. temp = temp.replace('{上月比}', json["rows"][i]['上月比']);
  159. temp = temp.replace('{对比趋势}', json["rows"][i]['对比趋势']);
  160. $("#dayTable").append(temp);
  161. }
  162. }
  163. var num = parseInt(json["rows"].length);
  164. for (var i = 0; i < num; i++) {
  165. var a = document.getElementById("dayTable").rows[i].cells[6].innerHTML;
  166. if (a == '下降↓') {
  167. document.getElementById("dayTable").rows[i].cells[6].style.color = '#3bf738';
  168. }
  169. else {
  170. document.getElementById("dayTable").rows[i].cells[6].style.color = 'red';
  171. }
  172. }
  173. });
  174. }
  175. function loadMainTableD() {
  176. $.get("demo2.ashx?m=MonthTableD", function (data) {
  177. var json = JSON.parse(data);
  178. if (json["success"] == true) {
  179. $("#TableDefect").html("");
  180. for (var i = 0; i < json["rows"].length; i++) {
  181. var temp = $("#dayTable_templatedefect").html();
  182. temp = temp.replace("<tbody>", "").replace("</tbody>", "");
  183. temp = temp.replace('{缺陷位置名称}', json["rows"][i]['缺陷位置名称']);
  184. temp = temp.replace('{出窑数}', json["rows"][i]['出窑数']);
  185. temp = temp.replace('{缺陷数}', json["rows"][i]['缺陷数']);
  186. temp = temp.replace('{缺陷占比}', json["rows"][i]['缺陷占比']);
  187. temp = temp.replace('{同月比}', json["rows"][i]['同月比']);
  188. temp = temp.replace('{上月比}', json["rows"][i]['上月比']);
  189. temp = temp.replace('{对比趋势}', json["rows"][i]['对比趋势']);
  190. $("#TableDefect").append(temp);
  191. }
  192. }
  193. var num = parseInt(json["rows"].length);
  194. for (var i = 0; i < num; i++) {
  195. var a = document.getElementById("TableDefect").rows[i].cells[6].innerHTML;
  196. if (a == '下降↓') {
  197. document.getElementById("TableDefect").rows[i].cells[6].style.color = '#3bf738';
  198. }
  199. else {
  200. document.getElementById("TableDefect").rows[i].cells[6].style.color = 'red';
  201. }
  202. }
  203. });
  204. }
  205. function loadMainDetail() {
  206. $.get("demo2.ashx?m=MonthTableDetail", function (data) {
  207. var json = JSON.parse(data);
  208. if (json["success"] == true) {
  209. $("#TableDefectDetail").html("");
  210. for (var i = 0; i < json["rows"].length; i++) {
  211. var temp = $("#dayTable_templatedetail").html();
  212. temp = temp.replace("<tbody>", "").replace("</tbody>", "");
  213. temp = temp.replace('{产品条码}', json["rows"][i]['产品条码']);
  214. temp = temp.replace('{产品编码}', json["rows"][i]['产品编码']);
  215. temp = temp.replace('{注浆日期}', json["rows"][i]['注浆日期']);
  216. temp = temp.replace('{成型线模具}', json["rows"][i]['成型线模具']);
  217. temp = temp.replace('{施釉产线}', json["rows"][i]['施釉产线']);
  218. temp = temp.replace('{窑炉编号}', json["rows"][i]['窑炉编号']);
  219. temp = temp.replace('{责任工号}', json["rows"][i]['责任工号']);
  220. temp = temp.replace('{缺陷类别}', json["rows"][i]['缺陷类别']);
  221. temp = temp.replace('{缺陷名称}', json["rows"][i]['缺陷名称']);
  222. temp = temp.replace('{缺陷位置}', json["rows"][i]['缺陷位置']);
  223. $("#TableDefectDetail").append(temp);
  224. }
  225. mainRowCount = json["rows"].length;
  226. mainInterval = setInterval(mainScroll, 3000);
  227. }
  228. });
  229. }
  230. function mainScroll() {
  231. var scrollHeight = $("#TableDefectDetail").find("tr").outerHeight();
  232. $("#TableDefectDetail").animate({ marginTop: -scrollHeight, }, 500,
  233. function () {
  234. $(this).css({ marginTop: "0px", }).find("tr:first").appendTo(this);
  235. if (--mainRowCount == -1) loadMainTable();
  236. }
  237. );
  238. }
  239. $(document).ready(function () {
  240. initData();
  241. doGetData = setInterval(function () { timeUpdate(); }, 5000);
  242. loadMainTable();
  243. setInterval(function () { loadMainTable(); }, 180000);
  244. loadMainTableD();
  245. setInterval(function () { loadMainTableD(); }, 180000);
  246. loadMainDetail();
  247. setInterval(function () { loadMainDetail(); }, 180000);
  248. ZxData();
  249. setInterval(function () { ZxData(); }, 5000);
  250. });
  251. //七日次品产量趋势图
  252. function ZxData() {
  253. $.get("demo2.ashx?m=zx", function (data) {
  254. var json = JSON.parse(data);
  255. let a = [];
  256. let b = [];
  257. let c = [];
  258. if (json["success"] == true) {
  259. var num = parseInt(json["rows"].length);
  260. for (var i = 0; i < num; i++) {
  261. a.push(parseFloat(json["rows"][i]["次品率"]));
  262. b.push(json["rows"][i]["日期"]);
  263. c.push(parseFloat(json["rows"][i]["次品数量"]));
  264. }
  265. window.DayZL.data.datasets[0].data = a;
  266. window.DayZL.data.datasets[1].data = c;
  267. window.DayZL.data.labels = b;
  268. window.DayZL.update();
  269. }
  270. });
  271. }
  272. function timeUpdate() {
  273. loadData();
  274. }
  275. function loadData() {
  276. }
  277. function initData() {
  278. window.chartColors = {
  279. red: 'rgb(255, 99, 132)',
  280. orange: 'rgb(255, 159, 64)',
  281. yellow: 'rgb(255, 250, 86)',
  282. green: 'rgb(75, 192, 192)',
  283. blue: 'rgb(54, 162, 250)',
  284. purple: 'rgb(153, 102, 255)',
  285. grey: 'rgb(231,233,237)'
  286. };
  287. var color = Chart.helpers.color;
  288. window.randomScalingFactor = function (num) {
  289. return Math.round(Math.random() * num);
  290. }
  291. Chart.defaults.global.defaultFontColor = 'white';
  292. Chart.defaults.global.defaultFontSize = 18;
  293. Chart.defaults.global.legend.display = false;
  294. //半检一检各项趋势图=====================================
  295. window.configDayZL = {
  296. data: {
  297. labels: ["01", "02", "03", "04", "05", "06", "07"],
  298. datasets: [{
  299. type: 'line',
  300. label: "次品率",
  301. yAxesGroup: 'A',
  302. yAxisID: 'A',
  303. backgroundColor: color(window.chartColors.red).alpha(0.5).rgbString(),
  304. borderColor: window.chartColors.red,
  305. borderWidth: 2,
  306. pointRadius: 15,
  307. data: [0, 0, 0, 0, 0, 0, 0],
  308. fill: false
  309. }, {
  310. label: '次品数',
  311. yAxesGroup: 'B',
  312. yAxisID: 'B',
  313. backgroundColor: color(window.chartColors.blue).alpha(0.5).rgbString(),
  314. borderColor: window.chartColors.blue,
  315. borderWidth: 1,
  316. data: [100, 100, 100, 100, 100, 100, 100],
  317. fill: false
  318. }]
  319. },
  320. type: 'bar',
  321. options: {
  322. legend: {
  323. display: true
  324. },
  325. title: {
  326. display: false,
  327. text: '质量统计'
  328. },
  329. tooltips: {
  330. mode: 'index',
  331. intersect: false,
  332. },
  333. hover: {
  334. mode: 'nearest',
  335. intersect: true
  336. },
  337. scales: {
  338. xAxes: [{
  339. display: true,
  340. scaleLabel: {
  341. display: false,
  342. labelString: ''
  343. }
  344. }],
  345. yAxes: [{
  346. display: true,
  347. id: 'B',
  348. name: 'B',
  349. scalePositionLeft: true,
  350. position: 'left',
  351. scaleLabel: {
  352. display: false,
  353. labelString: 'Value'
  354. },
  355. ticks: {
  356. min: 0,
  357. stepSize: 40,
  358. max: 200
  359. }
  360. }
  361. , {
  362. display: true,
  363. id: 'A',
  364. name: 'A',
  365. scalePositionLeft: false,
  366. position: 'right',
  367. scaleLabel: {
  368. display: false,
  369. labelString: 'Value2'
  370. },
  371. ticks: {
  372. min: 0,
  373. stepSize: 2,
  374. max: 10
  375. }
  376. }]
  377. }
  378. }
  379. };
  380. var ctxDayZL = document.getElementById("canvasDayZL").getContext("2d");
  381. window.DayZL = new Chart(ctxDayZL, configDayZL);
  382. //===================================================
  383. }
  384. </script>
  385. <script src="/Plugins/chartjs-2.8.0/chart-2.8.min.js"></script>
  386. <script src="/Plugins/chartjs-2.8.0/chartjs-plugin-datalabels.js"></script>
  387. <script src="/Plugins/chartjs-2.8.0/utils.js"></script>
  388. <script src="/Plugins/circleChart/circleChart.min.js"></script>
  389. </body>
  390. </html>