RefinementKanban.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  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. <link rel="stylesheet" href="/plugins/bootstrap-4.3.1/css/bootstrap.min.css">
  14. <link rel="stylesheet" href="/plugins/font-awesome-4.7.0/css/font-awesome.min.css">
  15. <link href="/Plugins/bootstrap-table/bootstrap-table.min.css" rel="stylesheet" />
  16. <title>东科软件</title>
  17. </head>
  18. <body >
  19. <div class="box_1920_1080">
  20. <div class="box_title" style="display:flex;flex-direction:row;">
  21. <div style="width:25%;text-align:left;"></div>
  22. <div style="width:50%;text-align:center; font-size:40px">精修看板</div>
  23. <div style="width:25%;text-align:right;"></div>
  24. </div>
  25. <div class="box_body" style="display: flex; flex-direction: column;">
  26. <!--31天产量曲线图-->
  27. <div style="width:1840px;height:30%;display:flex;flex-direction:row;">
  28. <div style="width: 75%; height: 300px;">
  29. <div style="color:white;font-size:15px;font-weight:600; text-align:center">每日产量计划达成</div>
  30. <canvas id="canvasDayCL" style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; height: 330px; width: 80% "></canvas>
  31. </div>
  32. </div>
  33. <div>
  34. <table rules="none" align="right" style="width: 20%; height: 270px; margin-left:80%;margin-top:-291px ">
  35. <tr class="tr_title_warning">
  36. <td style="width: 8%; height: 60px; font-size: 30px; text-align: left" colspan="2" ><strong><span id="sj" style="color:white;">2023-4-30 00:00:00</span></strong></td>
  37. </tr>
  38. <tr class="tr_title_warning">
  39. <td style="width: 8%; height: 95px; font-size: 35px; text-align: left ">月打磨:<span id="ydm" style="color:white;">加载中...</span></td>
  40. </tr>
  41. <tr class="tr_title_warning">
  42. <td style="width: 8%; height: 95px; font-size: 35px; text-align: left ">月擦洗:<span id="ycx" style="color:white;">加载中...</span></td>
  43. </tr>
  44. <tr class="tr_title_warning">
  45. <td style="width: 8%; height: 95px; font-size: 35px; text-align: left ">月改洗:<span id="ygx" style="color:white;">加载中...</span></td>
  46. </tr>
  47. </table>
  48. </div>
  49. <!--表格-->
  50. <div style="width: 100%; height: 530px; display: flex; flex-direction: row; margin-top: 4%">
  51. <div style="width: 100%; height: 530px; ">
  52. <table cellspacing="0" cellpadding="0" border="0" style="width:50%;">
  53. <tr class="tr_title_warning" style="height: 30px; font-size:27px">
  54. <td style="width: 15%;">工号</td>
  55. <td style="width: 15%;">数量</td>
  56. <td style="width: 15%;">工号</td>
  57. <td style="width: 15%;">数量</td>
  58. <td style="width: 15%;">工号</td>
  59. <td style="width: 15%;">数量</td>
  60. </tr>
  61. </table>
  62. <div style=" height:170px;overflow:hidden;">
  63. <table style="width: 50%; display:none;" id="StaffTable_template"> <!--style=""-->
  64. <tr class="tr_title_warning" style="height: 30px; font-size: 20px">
  65. <td style="font-size: 18px; color: white; height: 30px; width: 16%; text-align: left ">{工号}</td>
  66. <td style="font-size: 20px; color: white; height: 30px; width: 16%; ">{数量}</td>
  67. <td style="font-size: 18px; color: white; height: 30px; width: 16%; text-align: left ">{工号1}</td>
  68. <td style="font-size: 20px; color: white; height: 30px; width: 16%; ">{数量1}</td>
  69. <td style="font-size: 18px; color: white; height: 30px; width: 16%; text-align: left ">{工号2}</td>
  70. <td style="font-size: 20px; color: white; height: 30px; width: 16%; ">{数量2}</td>
  71. </tr>
  72. </table>
  73. <table id="StaffTable" style="width: 50%;">
  74. </table>
  75. </div>
  76. <table cellspacing="0" cellpadding="0" border="0" style="width: 50%;">
  77. <tr class="tr_title_warning" style="height: 60px; font-size: 30px">
  78. <td colspan="6">一烧产量:<span id="scl" style="color:white;">:——</span></td>
  79. </tr>
  80. <tr class="tr_title_warning" style="height: 50px; font-size: 30px">
  81. <td colspan="3">打磨缺陷率:<span id="dmqxl" style="color:white;">——</span></td>
  82. <td colspan="3">擦洗缺陷率:<span id="cxqxl" style="color:white;">——</span></td>
  83. </tr>
  84. <tr class="tr_bg_light_warning" style="height: 50px; font-size: 25px">
  85. <td>缺陷</td>
  86. <td id="qxname1">缺陷1</td>
  87. <td id="qxname2">缺陷2</td>
  88. <td id="qxname3">缺陷3</td>
  89. <td id="qxname4">缺陷4</td>
  90. <td>其他</td>
  91. </tr>
  92. <tr class="tr_bg_light_warning" style="height: 60px; font-size: 25px ">
  93. <td>数量</td>
  94. <td id="sl1">0</td>
  95. <td id="sl2">0</td>
  96. <td id="sl3">0</td>
  97. <td id="sl4">0</td>
  98. <td id="sl5">0</td>
  99. </tr>
  100. <tr class="tr_bg_light_warning" style="height: 60px; font-size: 25px ">
  101. <td>缺陷率</td>
  102. <td id="qxl1">0%</td>
  103. <td id="qxl2">0%</td>
  104. <td id="qxl3">0%</td>
  105. <td id="qxl4">0%</td>
  106. <td id="qxl5">0%</td>
  107. </tr>
  108. </table>
  109. </div>
  110. </div>
  111. <div style="width: 50%; height: 500px; padding-right: 20px; margin-top: -530px; margin-left: 50% ">
  112. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  113. <tr class="tr_title_warning">
  114. <td colspan="4" style="color:white;">成检实时数据(精修工序缺陷数据)</td>
  115. </tr>
  116. <tr class="tr_title_warning">
  117. <td style="font-size: 18px; width: 25%; height: 30px; ">责任工号</td>
  118. <td style="font-size: 18px; width: 25%; height: 30px; ">工种</td>
  119. <td style="font-size: 18px; width: 25%; height: 30px; ">缺陷位置</td>
  120. <td style="font-size: 18px; width: 25%; height: 30px; ">产品分级</td>
  121. </tr>
  122. </table>
  123. <div style=" height: 438px; overflow: hidden;">
  124. <table id="dayTable_template" style="display:none;">
  125. <tr class="tr_bg_light_warning" style="height:30px;">
  126. <td style="font-size: 18px; width: 25%; height: 30px; ">{责任工号}</td>
  127. <td style="font-size: 18px; width: 25%; height: 30px; ">{工种}</td>
  128. <td style="font-size: 18px; width: 25%; height: 30px; ">{缺陷名称}</td>
  129. <td style="font-size: 18px; width: 25%; height: 30px; ">{产品分级}</td>
  130. </tr>
  131. </table>
  132. <table id="dayTable" style="width: 100%; ">
  133. </table>
  134. </div>
  135. </div>
  136. </div>
  137. </div>
  138. <script>
  139. var refreshTime1 = 80000;
  140. var currentTime1 = 0;
  141. var doGetData;
  142. var doGetTime;
  143. var StaffInterval;
  144. var StaffTableRowCount = 0;
  145. var dayInterval;
  146. var dayTableRowCount = 0;
  147. //页面加载
  148. $(document).ready(function () {
  149. loadData();
  150. initData();
  151. clearData();
  152. timeUp();
  153. StaffTable();
  154. loadDayTable();
  155. doGetData = setInterval(function () { loadServerTime(); }, 3000);
  156. doGetData = setInterval(function () { timeUp(); }, 1000);
  157. });
  158. function timeUp() {
  159. loadData();
  160. DefectDetails();
  161. Alltotal();
  162. MonthSum();
  163. }
  164. function Alltotal() {
  165. $.get('RefinementKanban.ashx?m=Alltotal', function (data) {
  166. var json = JSON.parse(data);
  167. if (json["success"] == true) {
  168. $('#scl').text( json["rows"][0]["出窑数"]);
  169. $('#dmqxl').text(json["rows"][0]["打磨缺陷率"]);
  170. $('#cxqxl').text(json["rows"][0]["擦洗缺陷率"]);
  171. }
  172. });
  173. }
  174. function MonthSum() {
  175. $.get('RefinementKanban.ashx?m=MonthSum', function (data) {
  176. var json = JSON.parse(data);
  177. if (json["success"] == true) {
  178. $('#ydm').text( json["rows"][0]["打磨"]);
  179. $('#ycx').text(json["rows"][1]["打磨"]);
  180. $('#ygx').text(json["rows"][2]["打磨"]);
  181. }
  182. });
  183. }
  184. function StaffTableScroll() {
  185. var scrollHeight = $("#StaffTable_template").find("tr").outerHeight();
  186. $("#StaffTable").animate({ marginTop: -scrollHeight, }, 500,
  187. function () {
  188. $(this).css({ marginTop: "0px", }).find("tr:first").appendTo(this);
  189. if (--StaffTableRowCount > -1) {
  190. } else {
  191. clearInterval(StaffInterval);
  192. StaffTable();
  193. }
  194. }
  195. );
  196. }
  197. //表格滚动
  198. function dayTableScroll() {
  199. var scrollHeight = $("#dayTable_template").find("tr").outerHeight();
  200. $("#dayTable").animate({ marginTop: -scrollHeight, }, 500,
  201. function () {
  202. $(this).css({ marginTop: "0px", }).find("tr:first").appendTo(this);
  203. if (dayTableRowCount > -1) {
  204. dayTableRowCount--;
  205. console.log(dayTableRowCount);
  206. } else {
  207. clearInterval(dayInterval);
  208. loadDayTable();
  209. }
  210. }
  211. );
  212. }
  213. function StaffTable() {
  214. clearInterval(StaffInterval);
  215. $.get("RefinementKanban.ashx?m=StaffTable", function (data) {
  216. var json = JSON.parse(data);
  217. if (json["success"] == true) {
  218. $("#StaffTable").html("");
  219. for (var i = 0; i < json["rows"].length; i++) {
  220. var temp = $("#StaffTable_template").html();
  221. temp = temp.replace("<tbody>", "").replace("</tbody>", "");
  222. temp = temp.replace('{工号}', json["rows"][i]['STAFFCODE']);
  223. temp = temp.replace('{数量}', json["rows"][i]['COUNTS']);
  224. temp = temp.replace('{工号1}', json["rows"][i]['STAFFCODE1']);
  225. temp = temp.replace('{数量1}', json["rows"][i]['COUNTS1']);
  226. temp = temp.replace('{工号2}', json["rows"][i]['STAFFCODE2']);
  227. temp = temp.replace('{数量2}', json["rows"][i]['COUNTS2']);
  228. $("#StaffTable").append(temp);
  229. }
  230. StaffTableRowCount = json["rows"].length;
  231. StaffInterval = setInterval(StaffTableScroll, 2000);
  232. }
  233. });
  234. }
  235. //明细表
  236. function loadDayTable() {
  237. $.get("RefinementKanban.ashx?m=MonthTable", function (data) {
  238. var json = JSON.parse(data);
  239. if (json["success"] == true) {
  240. $("#dayTable").html("");
  241. for (var i = 0; i < json["rows"].length; i++) {
  242. var temp = $("#dayTable_template").html();
  243. temp = temp.replace("<tbody>", "").replace("</tbody>", "");
  244. temp = temp.replace('{责任工号}', json["rows"][i]['责任工号']);
  245. temp = temp.replace('{工种}', json["rows"][i]['生产线号']);
  246. temp = temp.replace('{缺陷名称}', json["rows"][i]['缺陷名称']);
  247. temp = temp.replace('{产品分级}', json["rows"][i]['产品分级']);
  248. $("#dayTable").append(temp);
  249. }
  250. dayTableRowCount = json["rows"].length;
  251. dayInterval = setInterval(dayTableScroll, 2000);
  252. }
  253. });
  254. }
  255. function clearData() {
  256. //清除数据
  257. window.DayCL.data.labels = [];
  258. //window.DayCL.data.datasets[0].data = [0, 0, 0, 0, 0, 0, 0];
  259. window.DayCL.data.datasets[0].data = [];
  260. //window.DayCL.data.datasets[1].data = [0, 0, 0, 0, 0, 0, 0];
  261. window.DayCL.data.datasets[1].data = [];
  262. window.DayCL.update();
  263. }
  264. function loadServerTime() {
  265. $.get('RefinementKanban.ashx?m=fwq', function (data) {
  266. var json = JSON.parse(data);
  267. if (json["success"] == true) {
  268. $('#sj').html(json["sj"]);
  269. }
  270. });
  271. }
  272. function DefectDetails() {
  273. $.get('RefinementKanban.ashx?m=DefectDetail', function (data) {
  274. var json = JSON.parse(data);
  275. if (json["success"] == true) {
  276. $('#qxname1').text(json["rows"][0]["缺陷名称"]);
  277. $('#qxname2').text(json["rows"][1]["缺陷名称"]);
  278. $('#qxname3').text(json["rows"][2]["缺陷名称"]);
  279. $('#qxname4').text(json["rows"][3]["缺陷名称"]);
  280. $('#sl1').text(json["rows"][0]["缺陷数量"]);
  281. $('#sl2').text(json["rows"][1]["缺陷数量"]);
  282. $('#sl3').text(json["rows"][2]["缺陷数量"]);
  283. $('#sl4').text(json["rows"][3]["缺陷数量"]);
  284. $('#sl5').text(json["rows"][0]["其他缺陷数量"]);
  285. $('#qxl1').text(json["rows"][0]["缺陷率"]);
  286. $('#qxl2').text(json["rows"][1]["缺陷率"]);
  287. $('#qxl3').text(json["rows"][2]["缺陷率"]);
  288. $('#qxl4').text(json["rows"][3]["缺陷率"]);
  289. $('#qxl5').text(json["rows"][0]["其他缺陷率"]);
  290. }
  291. });
  292. }
  293. function loadData() {
  294. $.get("RefinementKanban.ashx?m=rate", function (data) {
  295. clearData();
  296. var json = JSON.parse(data);
  297. if (json["success"] == true) {
  298. for (var n = 0; n < json["rows"].length; n++) {
  299. window.DayCL.data.labels.push(json["rows"][n]["SJ"]);
  300. window.DayCL.data.datasets[0].data[n] = (json["rows"][n]["打磨"]);
  301. window.DayCL.data.datasets[1].data[n] = (json["rows"][n]["擦洗"]);
  302. window.DayCL.data.datasets[2].data[n] = (json["rows"][n]["改洗"]);
  303. }
  304. }
  305. window.DayCL.update();
  306. });
  307. }
  308. function initData() {
  309. window.chartColors = {
  310. red: 'rgb(255, 99, 132)',
  311. orange: 'rgb(255, 159, 64)',
  312. yellow: 'rgb(255, 250, 86)',
  313. green: 'rgb(75, 192, 192)',
  314. blue: 'rgb(54, 162, 250)',
  315. purple: 'rgb(153, 102, 255)',
  316. grey: 'rgb(231,233,237)'
  317. };
  318. var color = Chart.helpers.color;
  319. window.randomScalingFactor = function (num) {
  320. return Math.round(Math.random() * num);
  321. }
  322. Chart.defaults.global.defaultFontColor = 'white';
  323. Chart.defaults.global.defaultFontSize = 18;
  324. Chart.defaults.global.legend.display = false;
  325. //每小时产量=========================================
  326. window.configDayCL = {
  327. data: {
  328. labels: [],
  329. datasets: [{
  330. label: "打磨量",
  331. backgroundColor: color(window.chartColors.red).alpha(0.6).rgbString(),
  332. borderColor: window.chartColors.red,
  333. borderWidth: 2,
  334. pointRadius: 15,
  335. data: [],
  336. fill: false,
  337. }, {
  338. label: "擦洗量",
  339. fill: false,
  340. backgroundColor: color(window.chartColors.blue).alpha(0.6).rgbString(),
  341. borderColor: window.chartColors.blue,
  342. borderWidth: 2,
  343. pointRadius: 15,
  344. data: []
  345. },
  346. {
  347. label: "改洗量",
  348. fill: false,
  349. backgroundColor: color(window.chartColors.green).alpha(0.6).rgbString(),
  350. borderColor: window.chartColors.green,
  351. borderWidth: 2,
  352. pointRadius: 15,
  353. data: []
  354. }]
  355. },
  356. type: 'line',
  357. options: {
  358. responsive: true,
  359. legend: {
  360. display: true
  361. },
  362. title: {
  363. display: false,
  364. text: '每小时产量'
  365. },
  366. tooltips: {
  367. mode: 'index',
  368. intersect: false,
  369. },
  370. hover: {
  371. mode: 'nearest',
  372. intersect: true
  373. },
  374. scales: {
  375. xAxes: [{
  376. display: true,
  377. scaleLabel: {
  378. display: false,
  379. labelString: ''
  380. }
  381. }],
  382. yAxes: [{
  383. display: true,
  384. scaleLabel: {
  385. display: false,
  386. labelString: 'Value'
  387. }
  388. }]
  389. }
  390. }
  391. };
  392. var ctxDayCL = document.getElementById("canvasDayCL").getContext("2d");
  393. window.DayCL = new Chart(ctxDayCL, configDayCL);
  394. }
  395. </script>
  396. <script src="/Plugins/chartjs-2.8.0/chart-2.8.min.js"></script>
  397. <script src="/Plugins/chartjs-2.8.0/chartjs-plugin-datalabels.js"></script>
  398. <script src="/Plugins/chartjs-2.8.0/utils.js"></script>
  399. <script src="/Plugins/circleChart/circleChart.min.js"></script>
  400. </body>
  401. </html>