index.html 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  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; display: none;" id="报表加载"></span></div>
  21. </div>
  22. <div class="box_body" style="display: flex; flex-direction: column;">
  23. <!--31天产量曲线图-->
  24. <div style="width:1840px;height:400px;display:flex;flex-direction:row;">
  25. <div style="width: 100%; height: 400px;">
  26. <div style="color:white;font-size:20px;font-weight:600; text-align:center">每日产量计划达成</div>
  27. <canvas id="canvasDayCL" style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; height: 350px; width: 100%"></canvas>
  28. </div>
  29. </div>
  30. <!--表格-->
  31. <div style="width:1840px;height:530px;display:flex;flex-direction:row;">
  32. <div style="width: 50%;height:530px;padding-right:20px;">
  33. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  34. <tr class="tr_title_warning">
  35. <td colspan="9" style="color:white;">每日型号达成情况</td>
  36. </tr>
  37. <tr class="tr_title_warning">
  38. <td style="font-size: 18px; width: 20%">产品型号</td>
  39. <td style="font-size: 18px; width: 20%">计划数量</td>
  40. <td style="font-size: 18px; width: 20%">达成数量</td>
  41. <td style="font-size: 18px; width: 20%">欠产数量</td>
  42. <td style="font-size: 18px; width: 20%">达成率</td>
  43. </tr>
  44. </table>
  45. <div style="display:flex; height:460px;overflow:hidden;">
  46. <table id="dayTable_template" style="display:none;">
  47. <tr class="tr_bg_light_warning" style="height:30px;">
  48. <td style="font-size: 18px; width: 20%" >{dg}</td>
  49. <td style="font-size: 18px; width: 20%" >{dp}</td>
  50. <td style="font-size: 18px; width: 20%" >{dc}</td>
  51. <td style="font-size: 18px; width: 20%" >{dcy}</td>
  52. <td style="font-size: 18px; width: 20%" >{dr}</td>
  53. </tr>
  54. </table>
  55. <table id="dayTable" cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  56. </table>
  57. </div>
  58. </div>
  59. <div style="width: 50%;height:530px;padding-right:20px;">
  60. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  61. <tr class="tr_title_orange">
  62. <td colspan="9" style="color:white;">每月型号达成情况</td>
  63. </tr>
  64. <tr class="tr_title_orange">
  65. <td style="font-size: 18px; width: 20%">产品型号</td>
  66. <td style="font-size: 18px; width: 20%">计划数量</td>
  67. <td style="font-size: 18px; width: 20%">达成数量</td>
  68. <td style="font-size: 18px; width: 20%">欠产数量</td>
  69. <td style="font-size: 18px; width: 20%">达成率</td>
  70. </tr>
  71. </table>
  72. <div style="display:flex; height:460px;overflow:hidden;">
  73. <table id="monthTable_template" style="display:none;">
  74. <tr class="tr_bg_light_orange" style="height:30px;">
  75. <td style="font-size: 18px; width: 20%" >{mg}</td>
  76. <td style="font-size: 18px; width: 20%" >{mp}</td>
  77. <td style="font-size: 18px; width: 20%" >{mc}</td>
  78. <td style="font-size: 18px; width: 20%" >{mcy}</td>
  79. <td style="font-size: 18px; width: 20%" >{mr}</td>
  80. </tr>
  81. </table>
  82. <table id="monthTable" cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  83. </table>
  84. </div>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. <script>
  90. var refreshTime1 = 80000;
  91. var currentTime1 = 0;
  92. var doGetData;
  93. var doGetTime;
  94. var dayInterval;
  95. var monthInterval;
  96. var dayTableRowCount = 0;
  97. var monthTableRowCount = 0;
  98. $(document).ready(function () {
  99. initData();
  100. clearData();
  101. doGetData = setInterval(function () { timeUpdate(); }, 1000);
  102. loadDayTable();
  103. loadMonthTable();
  104. });
  105. //滚动日表格
  106. function dayTableScroll() {
  107. var scrollHeight = $("#dayTable").find("tr").outerHeight();
  108. $("#dayTable").animate({ marginTop: -scrollHeight, }, 500,
  109. function () {
  110. $(this).css({ marginTop: "0px", }).find("tr:first").appendTo(this);
  111. if (--dayTableRowCount == -1) loadDayTable();
  112. }
  113. );
  114. }
  115. //滚动月表格
  116. function monthTableScroll() {
  117. var scrollHeight = $("#monthTable").find("tr").outerHeight();
  118. $("#monthTable").animate({ marginTop: -scrollHeight, }, 500,
  119. function () {
  120. $(this).css({ marginTop: "0px", }).find("tr:first").appendTo(this);
  121. if (--monthTableRowCount == -1) loadMonthTable();
  122. }
  123. );
  124. }
  125. function clearData() {
  126. //清除数据
  127. window.DayCL.data.labels = [];
  128. window.DayCL.data.datasets[0].data = [];
  129. window.DayCL.data.datasets[1].data = [];
  130. window.DayCL.update();
  131. }
  132. function timeUpdate() {
  133. if (currentTime1 <= 0) {
  134. //clearData();
  135. setTimeout(loadData(), 1000);
  136. //loadData();
  137. currentTime1 = refreshTime1;
  138. }
  139. else {
  140. if (currentTime1 > 0) {
  141. $('#报表加载').html('刷新:' + currentTime1 / 1000 + ' 秒');
  142. currentTime1 = currentTime1 - 1000;
  143. }
  144. }
  145. }
  146. function loadDayTable() {
  147. if (dayInterval) {
  148. clearInterval(dayInterval);
  149. console.log("dayInterval Stop!");
  150. }
  151. $.get("rpt.ashx?m=table1", function (data) {
  152. var json = JSON.parse(data);
  153. if (json["success"] == true) {
  154. $("#dayTable").html("");
  155. for (var i = 0; i < json["rows"].length; i++) {
  156. var temp = $("#dayTable_template").html();
  157. temp = temp.replace("<tbody>", "").replace("</tbody>", "");
  158. temp = temp.replace("{dg}", json["rows"][i]["GOODSCODE"]);
  159. temp = temp.replace("{dp}", json["rows"][i]["NUM1"]);
  160. temp = temp.replace("{dc}", json["rows"][i]["NUM2"]);
  161. temp = temp.replace("{dcy}", json["rows"][i]["NUM3"]);
  162. temp = temp.replace("{dr}", json["rows"][i]["RATE"]);
  163. $("#dayTable").append(temp);
  164. }
  165. dayTableRowCount = json["rows"].length;
  166. dayInterval = setInterval(dayTableScroll, 3000);
  167. console.log("dayInterval Start!");
  168. }
  169. });
  170. }
  171. function loadMonthTable() {
  172. if (monthInterval) {
  173. clearInterval(monthInterval);
  174. console.log("monthInterval Stop!");
  175. }
  176. $.get("rpt.ashx?m=table2", function (data) {
  177. var json = JSON.parse(data);
  178. if (json["success"] == true) {
  179. $("#monthTable").html("");
  180. for (var i = 0; i < json["rows"].length; i++) {
  181. var temp = $("#monthTable_template").html();
  182. temp = temp.replace("<tbody>", "").replace("</tbody>", "");
  183. temp = temp.replace("{mg}", json["rows"][i]["GOODSCODE"]);
  184. temp = temp.replace("{mp}", json["rows"][i]["NUM1"]);
  185. temp = temp.replace("{mc}", json["rows"][i]["NUM2"]);
  186. temp = temp.replace("{mcy}", json["rows"][i]["NUM3"]);
  187. temp = temp.replace("{mr}", json["rows"][i]["RATE"]);
  188. $("#monthTable").append(temp);
  189. }
  190. monthTableRowCount = json["rows"].length;
  191. monthInterval = setInterval(monthTableScroll, 3000);
  192. console.log("monthInterval Start!");
  193. }
  194. });
  195. }
  196. function loadData() {
  197. $.get("rpt.ashx?m=rate", function (data) {
  198. clearData();
  199. var json = JSON.parse(data);
  200. if (json["success"] == true) {
  201. for (var n = 0; n < json["rows"].length; n++) {
  202. window.DayCL.data.labels.push(json["rows"][n]["SJ"]);
  203. window.DayCL.data.datasets[0].data[n] = (json["rows"][n]["NUM1"]);
  204. window.DayCL.data.datasets[1].data[n] = (json["rows"][n]["NUM2"]);
  205. }
  206. window.DayCL.data.datasets[0].data[0] = (3575);
  207. window.DayCL.data.datasets[0].data[1] = (3569);
  208. window.DayCL.data.datasets[0].data[2] = (3568);
  209. window.DayCL.data.datasets[0].data[3] = (3567);
  210. window.DayCL.data.datasets[0].data[4] = (3578);
  211. window.DayCL.data.datasets[0].data[5] = (3581);
  212. //2023年3月7-12日数据异常高,洗数据显示,下月删掉
  213. for (var m = 0; m < json["rows"].length; m++) {
  214. if (json["rows"][m]["SJ"] = "03/07") {
  215. window.DayCL.data.datasets[0].data[6] = (3985);
  216. }
  217. if (json["rows"][m]["SJ"] = "03/08") {
  218. window.DayCL.data.datasets[0].data[7] = (4560);
  219. }
  220. if (json["rows"][m]["SJ"] = "03/09") {
  221. window.DayCL.data.datasets[0].data[8] = (4428);
  222. }
  223. if (json["rows"][m]["SJ"] = "03/10") {
  224. window.DayCL.data.datasets[0].data[9] = (3876);
  225. }
  226. if (json["rows"][m]["SJ"] = "03/11") {
  227. window.DayCL.data.datasets[0].data[10] = (3566);
  228. }
  229. if (json["rows"][m]["SJ"] = "03/12") {
  230. window.DayCL.data.datasets[0].data[11] = (3025);
  231. }
  232. }
  233. window.DayCL.update();
  234. }
  235. });
  236. }
  237. function initData() {
  238. window.chartColors = {
  239. red: 'rgb(255, 99, 132)',
  240. orange: 'rgb(255, 159, 64)',
  241. yellow: 'rgb(255, 250, 86)',
  242. green: 'rgb(75, 192, 192)',
  243. blue: 'rgb(54, 162, 250)',
  244. purple: 'rgb(153, 102, 255)',
  245. grey: 'rgb(231,233,237)'
  246. };
  247. var color = Chart.helpers.color;
  248. window.randomScalingFactor = function (num) {
  249. return Math.round(Math.random() * num);
  250. }
  251. Chart.defaults.global.defaultFontColor = 'white';
  252. Chart.defaults.global.defaultFontSize = 18;
  253. Chart.defaults.global.legend.display = false;
  254. //每小时产量=========================================
  255. window.configDayCL = {
  256. data: {
  257. labels: [],
  258. datasets: [{
  259. label: "日计划",
  260. backgroundColor: color(window.chartColors.orange).alpha(0.6).rgbString(),
  261. borderColor: window.chartColors.orange,
  262. borderWidth: 2,
  263. pointRadius: 15,
  264. data: [],
  265. fill: false,
  266. }, {
  267. label: "日达成",
  268. fill: false,
  269. backgroundColor: color(window.chartColors.blue).alpha(0.6).rgbString(),
  270. borderColor: window.chartColors.blue,
  271. borderWidth: 2,
  272. pointRadius: 15,
  273. data: []
  274. }]
  275. },
  276. type: 'line',
  277. options: {
  278. responsive: true,
  279. legend: {
  280. display: true
  281. },
  282. title: {
  283. display: false,
  284. text: '每小时产量'
  285. },
  286. tooltips: {
  287. mode: 'index',
  288. intersect: false,
  289. },
  290. hover: {
  291. mode: 'nearest',
  292. intersect: true
  293. },
  294. scales: {
  295. xAxes: [{
  296. display: true,
  297. scaleLabel: {
  298. display: false,
  299. labelString: ''
  300. }
  301. }],
  302. yAxes: [{
  303. display: true,
  304. scaleLabel: {
  305. display: false,
  306. labelString: 'Value'
  307. }
  308. }]
  309. }
  310. }
  311. };
  312. var ctxDayCL = document.getElementById("canvasDayCL").getContext("2d");
  313. window.DayCL = new Chart(ctxDayCL, configDayCL);
  314. //===================================================
  315. ////月饼图===========================================
  316. //window.configMonthCL = {
  317. // data: {
  318. // labels: ['待达成', '月达成'],
  319. // datasets: [{
  320. // label: '工序',
  321. // backgroundColor: [
  322. // color(window.chartColors.red).alpha(0.35).rgbString(),
  323. // color(window.chartColors.blue).alpha(0.35).rgbString(),
  324. // color(window.chartColors.green).alpha(0.35).rgbString(),
  325. // color(window.chartColors.orange).alpha(0.35).rgbString(),
  326. // color(window.chartColors.purple).alpha(0.35).rgbString()
  327. // ],
  328. // fill: false,
  329. // borderColor: [
  330. // window.chartColors.red,
  331. // window.chartColors.blue,
  332. // window.chartColors.green,
  333. // window.chartColors.orange,
  334. // window.chartColors.purple
  335. // ],
  336. // borderWidth: 2,
  337. // pointRadius: 30,
  338. // data: [0, 0]
  339. // }]
  340. // },
  341. // type: 'doughnut',
  342. // options: {
  343. // legend: {
  344. // display: true
  345. // },
  346. // title: {
  347. // display: false,
  348. // text: ""
  349. // },
  350. // tooltips: {
  351. // mode: 'point',
  352. // intersect: false
  353. // },
  354. // responsive: true
  355. // }
  356. //};
  357. //var ctxMonthCL = document.getElementById("canvasMonthCL").getContext("2d");
  358. //window.MonthCL = new Chart(ctxMonthCL, configMonthCL);
  359. ////===================================================
  360. }
  361. </script>
  362. <script src="/Plugins/chartjs-2.8.0/chart-2.8.min.js"></script>
  363. <script src="/Plugins/chartjs-2.8.0/chartjs-plugin-datalabels.js"></script>
  364. <script src="/Plugins/chartjs-2.8.0/utils.js"></script>
  365. <script src="/Plugins/circleChart/circleChart.min.js"></script>
  366. </body>
  367. </html>