RefinementKanban.html 21 KB

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