index_sq.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432
  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">
  16. 月计划达成率&nbsp;&nbsp;<span class="box_title_arrow">>>></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:440px;display:flex;flex-direction:row;">
  20. <div style="width: 70%;height:440px;">
  21. <!--月计划达成率表格-->
  22. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  23. <tr class="tr_title">
  24. <td>序号</td>
  25. <td>产品型号</td>
  26. <td>本月计划数</td>
  27. <td>目标达成率</td>
  28. <td>单位</td>
  29. </tr>
  30. <tr class="tr_bg_light">
  31. <td>1</td>
  32. <td id="q1"></td>
  33. <td id="w1"></td>
  34. <td id="e1"></td>
  35. <td>件</td>
  36. </tr>
  37. <tr class="tr_bg_dark">
  38. <td>2</td>
  39. <td id="q2"></td>
  40. <td id="w2"></td>
  41. <td id="e2"></td>
  42. <td>件</td>
  43. </tr>
  44. <tr class="tr_bg_light">
  45. <td>3</td>
  46. <td id="q3"></td>
  47. <td id="w3"></td>
  48. <td id="e3"></td>
  49. <td>件</td>
  50. </tr>
  51. <tr class="tr_bg_dark">
  52. <td>4</td>
  53. <td id="q4"></td>
  54. <td id="w4"></td>
  55. <td id="e4"></td>
  56. <td>件</td>
  57. </tr>
  58. <tr class="tr_bg_light">
  59. <td>5</td>
  60. <td id="q5"></td>
  61. <td id="w5"></td>
  62. <td id="e5"></td>
  63. <td>件</td>
  64. </tr>
  65. <tr class="tr_bg_dark">
  66. <td>6</td>
  67. <td id="q6"></td>
  68. <td id="w6"></td>
  69. <td id="e6"></td>
  70. <td>件</td>
  71. </tr>
  72. </table>
  73. </div>
  74. <div style="width: 30%; height: 440px; padding-left:20px;">
  75. <!--工序预警表格-->
  76. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  77. <tr class="tr_title_warning">
  78. <td>序号</td>
  79. <td>工序预警</td>
  80. </tr>
  81. <tr class="tr_bg_light_warning">
  82. <td>1</td>
  83. <td id="t1"></td>
  84. </tr>
  85. <tr class="tr_bg_dark_warning">
  86. <td>2</td>
  87. <td id="t2"></td>
  88. </tr>
  89. <tr class="tr_bg_light_warning">
  90. <td>3</td>
  91. <td id="t3"></td>
  92. </tr>
  93. <tr class="tr_bg_dark_warning">
  94. <td>4</td>
  95. <td id="t4"></td>
  96. </tr>
  97. <tr class="tr_bg_light_warning">
  98. <td>5</td>
  99. <td id="t5"></td>
  100. </tr>
  101. <tr class="tr_bg_dark_warning">
  102. <td>6</td>
  103. <td id="t6"></td>
  104. </tr>
  105. </table>
  106. </div>
  107. </div>
  108. <div style="width:1840px;height:520px;display:flex;flex-direction:row;">
  109. <div style="width: 50%;height:520px;">
  110. <!--工序完工占比-->
  111. <canvas id="canvasProcedureCL" style="-moz-user-select: none;-webkit-user-select: none;-ms-user-select: none; height:520px;width:100%"></canvas>
  112. </div>
  113. <div style="width: 50%; height: 520px; ">
  114. <!--产品完成度百分比-->
  115. <canvas id="canvasGoodsCL" style="-moz-user-select: none;-webkit-user-select: none;-ms-user-select: none; height:520px;width:100%"></canvas>
  116. </div>
  117. </div>
  118. </div>
  119. </div>
  120. <script>
  121. //缺陷统计刷新时间
  122. var refreshTime1 = 60000;
  123. var currentTime1 = 0;
  124. var doGetData;
  125. var doGetTime;
  126. var frameHeight;
  127. var tableHeight;
  128. var offsetHeight = 20;
  129. $(document).ready(function () {
  130. initData();
  131. doGetData = setInterval(function () { timeUpdate(); }, 1000);
  132. });
  133. function timeUpdate() {
  134. if (currentTime1 <= 0) {
  135. loadData();
  136. currentTime1 = refreshTime1;
  137. }
  138. else {
  139. if (currentTime1 > 0) {
  140. $('#报表加载').html('刷新:' + currentTime1 / 1000 + ' 秒');
  141. currentTime1 = currentTime1 - 1000;
  142. }
  143. }
  144. }
  145. function loadData(callback) {
  146. var u1 = $.ajax({ url: "rpt.ashx?m=finish", dataType: "json", type: "get" });
  147. var u2 = $.ajax({ url: "rpt.ashx?m=procedure&&procedure=成型", dataType: "json", type: "get" });
  148. var u3 = $.ajax({ url: "rpt.ashx?m=procedure&&procedure=一检", dataType: "json", type: "get" });
  149. var u4 = $.ajax({ url: "rpt.ashx?m=procedure&&procedure=改洗", dataType: "json", type: "get" });
  150. var u5 = $.ajax({ url: "rpt.ashx?m=procedure&&procedure=二检", dataType: "json", type: "get" });
  151. var u6 = $.ajax({ url: "rpt.ashx?m=procedure&&procedure=施釉", dataType: "json", type: "get" });
  152. var u7 = $.ajax({ url: "rpt.ashx?m=procedure&&procedure=烧成", dataType: "json", type: "get" });
  153. var u8 = $.ajax({ url: "rpt.ashx?m=procedure&&procedure=成检", dataType: "json", type: "get" });
  154. $.when(u1, u2, u3, u4, u5, u6, u7, u8).then(
  155. function (result1, result2, result3, result4, result5, result6, result7, result8) {
  156. var json1 = result1[0];
  157. var json2 = result2[0];
  158. var json3 = result3[0];
  159. var json4 = result4[0];
  160. var json5 = result5[0];
  161. var json6 = result6[0];
  162. var json7 = result7[0];
  163. var json8 = result8[0];
  164. if (json2["success"] == true || json3["success"] == true || json4["success"] == true || json5["success"] == true || json6["success"] == true || json7["success"] == true || json8["success"] == true) {
  165. window.ProcedureCL.data.labels = [];
  166. window.ProcedureCL.data.datasets[1].data = [];
  167. window.ProcedureCL.data.datasets[0].data = [];
  168. }
  169. if (json1["success"] == true) {
  170. window.GoodsCL.data.labels = [];
  171. window.GoodsCL.data.datasets[1].data = [];
  172. window.GoodsCL.data.datasets[0].data = [];
  173. for (var i = 0; i < json1["rows"].length; i++) {
  174. $("#q" + (i + 1).toString()).text(json1["rows"][i]["型号"]);
  175. $("#w" + (i + 1).toString()).text(json1["rows"][i]["达成数"]);
  176. $("#e" + (i + 1).toString()).text(json1["rows"][i]["目标达成率"]);
  177. window.GoodsCL.data.labels.push(json1["rows"][i]["型号"]);
  178. window.GoodsCL.data.datasets[1].data.push(json1["rows"][i]["达成数"]);
  179. window.GoodsCL.data.datasets[0].data.push(json1["rows"][i]["本月计划数"]);
  180. }
  181. window.GoodsCL.update();
  182. }
  183. if (json2["success"] == true) {
  184. window.ProcedureCL.data.labels.push(json2["rows"][0]["工序"]);
  185. window.ProcedureCL.data.datasets[1].data.push(json2["rows"][0]["月实际生产数"]);
  186. window.ProcedureCL.data.datasets[0].data.push(json2["rows"][0]["计划数"]);
  187. window.ProcedureCL.update();
  188. if (parseInt(json2["rows"][0]["完成率"]) + parseInt(json2["rows"][0]["预警"]) < 100) {
  189. $("#t1").text("【成型】工序产量低于" + json2["rows"][0]["预警"] + "%");
  190. } else {
  191. $("#t1").text("【成型】达成");
  192. }
  193. }
  194. if (json3["success"] == true) {
  195. window.ProcedureCL.data.labels.push(json3["rows"][0]["工序"]);
  196. window.ProcedureCL.data.datasets[1].data.push(json3["rows"][0]["月实际生产数"]);
  197. window.ProcedureCL.data.datasets[0].data.push(json3["rows"][0]["计划数"]);
  198. window.ProcedureCL.update();
  199. if (parseInt(json3["rows"][0]["完成率"]) + parseInt(json3["rows"][0]["预警"]) < 100) {
  200. $("#t2").text("【一检】工序产量低于" + json2["rows"][0]["预警"] + "%");
  201. } else {
  202. $("#t2").text("【一检】达成");
  203. }
  204. }
  205. if (json4["success"] == true) {
  206. window.ProcedureCL.data.labels.push(json4["rows"][0]["工序"]);
  207. window.ProcedureCL.data.datasets[1].data.push(json4["rows"][0]["月实际生产数"]);
  208. window.ProcedureCL.data.datasets[0].data.push(json4["rows"][0]["计划数"]);
  209. window.ProcedureCL.update();
  210. if (parseInt(json4["rows"][0]["完成率"]) + parseInt(json4["rows"][0]["预警"]) < 100) {
  211. $("#t3").text("【改洗】工序产量低于" + json2["rows"][0]["预警"] + "%");
  212. } else {
  213. $("#t3").text("【改洗】达成");
  214. }
  215. }
  216. if (json5["success"] == true) {
  217. window.ProcedureCL.data.labels.push(json5["rows"][0]["工序"]);
  218. window.ProcedureCL.data.datasets[1].data.push(json5["rows"][0]["月实际生产数"]);
  219. window.ProcedureCL.data.datasets[0].data.push(json5["rows"][0]["计划数"]);
  220. window.ProcedureCL.update();
  221. if (parseInt(json5["rows"][0]["完成率"]) + parseInt(json5["rows"][0]["预警"]) < 100) {
  222. $("#t4").text("【二检】工序产量低于" + json2["rows"][0]["预警"] + "%");
  223. } else {
  224. $("#t4").text("【二检】达成");
  225. }
  226. }
  227. if (json6["success"] == true) {
  228. window.ProcedureCL.data.labels.push(json6["rows"][0]["工序"]);
  229. window.ProcedureCL.data.datasets[1].data.push(json6["rows"][0]["月实际生产数"]);
  230. window.ProcedureCL.data.datasets[0].data.push(json6["rows"][0]["计划数"]);
  231. window.ProcedureCL.update();
  232. if (parseInt(json6["rows"][0]["完成率"]) + parseInt(json6["rows"][0]["预警"]) < 100) {
  233. $("#t5").text("【施釉】工序产量低于" + json2["rows"][0]["预警"] + "%");
  234. } else {
  235. $("#t5").text("【施釉】达成");
  236. }
  237. }
  238. if (json7["success"] == true) {
  239. window.ProcedureCL.data.labels.push(json7["rows"][0]["工序"]);
  240. window.ProcedureCL.data.datasets[1].data.push(json7["rows"][0]["月实际生产数"]);
  241. window.ProcedureCL.data.datasets[0].data.push(json7["rows"][0]["计划数"]);
  242. window.ProcedureCL.update();
  243. if (parseInt(json7["rows"][0]["完成率"]) + parseInt(json7["rows"][0]["预警"]) < 100) {
  244. $("#t6").text("【烧成】工序产量低于" + json2["rows"][0]["预警"] + "%");
  245. } else {
  246. $("#t6").text("【烧成】达成");
  247. }
  248. }
  249. if (json8["success"] == true) {
  250. window.ProcedureCL.data.labels.push(json8["rows"][0]["工序"]);
  251. window.ProcedureCL.data.datasets[1].data.push(json8["rows"][0]["月实际生产数"]);
  252. window.ProcedureCL.data.datasets[0].data.push(json8["rows"][0]["计划数"]);
  253. window.ProcedureCL.update();
  254. }
  255. });
  256. $.ajax({ url: "rpt.ashx?m=finish", dataType: "json", type: "get" }).then({
  257. function(data) {
  258. for (var i = 0; i < data["rows"].count; i++) {
  259. $("#q" + (i + 1).toString()).text(data["rows"][i]["型号"]);
  260. $("#w" + (i + 1).toString()).text(data["rows"][i]["达成数"]);
  261. $("#e" + (i + 1).toString()).text(data["rows"][i]["目标达成率"]);
  262. }
  263. }
  264. });
  265. }
  266. function initData() {
  267. window.chartColors = {
  268. red: 'rgb(255, 99, 132)',
  269. orange: 'rgb(255, 159, 64)',
  270. yellow: 'rgb(255, 250, 86)',
  271. green: 'rgb(75, 192, 192)',
  272. blue: 'rgb(54, 162, 250)',
  273. purple: 'rgb(153, 102, 255)',
  274. grey: 'rgb(231,233,237)'
  275. };
  276. var color = Chart.helpers.color;
  277. window.randomScalingFactor = function (num) {
  278. return Math.round(Math.random() * num);
  279. }
  280. Chart.defaults.global.defaultFontColor = 'white';
  281. Chart.defaults.global.defaultFontSize = 24;
  282. Chart.defaults.global.legend.display = false;
  283. //产品型号达成=======================================
  284. window.configGoodsCL = {
  285. data: {
  286. labels: [],
  287. datasets: [{
  288. type: 'line',
  289. label: '计划产量',
  290. backgroundColor: color(window.chartColors.orange).alpha(0.35).rgbString(),
  291. fill: false,
  292. borderColor: window.chartColors.orange,
  293. borderWidth: 2,
  294. pointRadius: 30,
  295. data: []
  296. }, {
  297. label: '实际产量',
  298. backgroundColor: color(window.chartColors.blue).alpha(0.35).rgbString(),
  299. borderColor: window.chartColors.blue,
  300. borderWidth: 1,
  301. data: []
  302. }]
  303. },
  304. type: 'bar',
  305. options: {
  306. legend: {
  307. display: true
  308. },
  309. title: {
  310. display: true,
  311. text: "月度产品完工统计"
  312. },
  313. tooltips: {
  314. mode: 'point',
  315. intersect: false
  316. },
  317. responsive: true,
  318. scales: {
  319. xAxes: [{
  320. stacked: false
  321. }],
  322. yAxes: [{
  323. display: true,
  324. stacked: false,
  325. ticks: {
  326. min: 0,
  327. stepSize: 1000,
  328. max: 12000
  329. }
  330. }]
  331. }
  332. }
  333. };
  334. var ctxGoodsCL = document.getElementById("canvasGoodsCL").getContext("2d");
  335. window.GoodsCL = new Chart(ctxGoodsCL, configGoodsCL);
  336. //===================================================
  337. //工序产量达成=======================================
  338. window.configProcedureCL = {
  339. data: {
  340. labels: [],
  341. datasets: [{
  342. type: 'line',
  343. label: '计划产量',
  344. backgroundColor: color(window.chartColors.orange).alpha(0.35).rgbString(),
  345. fill: false,
  346. borderColor: window.chartColors.orange,
  347. borderWidth: 2,
  348. pointRadius: 30,
  349. data: []
  350. }, {
  351. label: '实际产量',
  352. backgroundColor: color(window.chartColors.blue).alpha(0.35).rgbString(),
  353. borderColor: window.chartColors.blue,
  354. borderWidth: 1,
  355. data: []
  356. }]
  357. },
  358. type: 'bar',
  359. options: {
  360. legend: {
  361. display: true
  362. },
  363. title: {
  364. display: true,
  365. text: "月度工序完工统计"
  366. },
  367. tooltips: {
  368. mode: 'point',
  369. intersect: false
  370. },
  371. responsive: true,
  372. scales: {
  373. xAxes: [{
  374. stacked: false
  375. }],
  376. yAxes: [{
  377. display: true,
  378. stacked: false,
  379. ticks: {
  380. min: 0,
  381. stepSize: 10000,
  382. max: 100000
  383. }
  384. }]
  385. }
  386. }
  387. };
  388. var ctxProcedureCL = document.getElementById("canvasProcedureCL").getContext("2d");
  389. window.ProcedureCL = new Chart(ctxProcedureCL, configProcedureCL);
  390. //===================================================
  391. }
  392. </script>
  393. <script src="/Plugins/chartjs-2.8.0/chart-2.8.min.js"></script>
  394. <script src="/Plugins/chartjs-2.8.0/chartjs-plugin-datalabels.js"></script>
  395. <script src="/Plugins/chartjs-2.8.0/utils.js"></script>
  396. <script src="/Plugins/circleChart/circleChart.min.js"></script>
  397. </body>
  398. </html>