index.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  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. <script src="/Plugins/xcountto/xcountTo.min.js"></script>
  12. <title>东科软件</title>
  13. </head>
  14. <body>
  15. <div class="m4_box_1920_1080">
  16. <div class="m4_box_title" onclick="showHelp()" style="cursor:pointer">
  17. <div class="m4_box_title_arrow"></div><div class="m4_box_title_arrow2"></div> <div>月计划达成率</div><span class="m4_box_title_loading" id="报表加载"></span>
  18. </div>
  19. <div class="m4_box_body" style="padding-right: 20px; width: 1720px;">
  20. <div style="width:1720px;height:480px;display:flex;flex-direction:row;">
  21. <div style="width: 70%;height:480px;">
  22. <!--月计划达成率表格-->
  23. <table cellspacing="0" cellpadding="0" border="0" style="width:99.9%;">
  24. <tr class="tr_title">
  25. <td colspan="6" style="color:white">包装成品统计(月度)</td>
  26. </tr>
  27. <tr class="tr_title">
  28. <td style="width:25%;">产品类别</td>
  29. <td style="width:25%;">包装计划数</td>
  30. <td style="width:25%;">实际生产数</td>
  31. <td style="width:25%;">计划达成率</td>
  32. </tr>
  33. </table>
  34. <div style=" height: 360px; overflow: hidden; width: 100%;">
  35. <div>
  36. <table id="dayTable_template" style="display:none;">
  37. <tr style=" height: 58px;" 360px; class="tr_title_warning">
  38. <!--<td style="width: 7.1%; font-size: 14px;">{成型线}</td>-->
  39. <td style="width: 25%; font-size: 20px;">{产品类别}</td>
  40. <td style="width: 25%; font-size: 20px;">{包装计划数}</td>
  41. <td style="width: 25%; font-size: 20px;">{实际生产数}</td>
  42. <td style="width: 25%; font-size: 20px;">{计划达成率}</td>
  43. </tr>
  44. </table>
  45. </div>
  46. <table id="dayTable" style="width: 100%; height: 360px;">
  47. </table>
  48. </div>
  49. </div>
  50. <div style="width: 30%; height: 500px; padding-left:20px;">
  51. <!--工序预警表格-->
  52. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
  53. <tr class="tr_title_warning">
  54. <td colspan="2" style="color:white">各产品类别达成率统计 (月度)</td>
  55. </tr>
  56. <tr class="tr_title_warning">
  57. <td>序号</td>
  58. <td>预警标准</td>
  59. </tr>
  60. <tr class="tr_bg_light_warning">
  61. <td>1</td>
  62. <td id="t1"></td>
  63. </tr>
  64. <tr class="tr_bg_dark_warning">
  65. <td>2</td>
  66. <td id="t2"></td>
  67. </tr>
  68. <tr class="tr_bg_light_warning">
  69. <td>3</td>
  70. <td id="t3"></td>
  71. </tr>
  72. <tr class="tr_bg_dark_warning">
  73. <td>4</td>
  74. <td id="t4"></td>
  75. </tr>
  76. <tr class="tr_bg_light_warning">
  77. <td>5</td>
  78. <td id="t5"></td>
  79. </tr>
  80. <tr class="tr_bg_dark_warning">
  81. <td>6</td>
  82. <td id="t6"></td>
  83. </tr>
  84. </table>
  85. </div>
  86. </div>
  87. <div style="width:1720px;height:340px;display:flex;flex-direction:row;">
  88. <div style="width: 50%; height: 340px; ">
  89. <!--包装月度计划-->
  90. <canvas id="canvasGoodsCL" style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; height: 340px; width: 100%"></canvas>
  91. </div>
  92. <div style="width: 50%; height: 340px;">
  93. <!--成型月度计划-->
  94. <canvas id="canvasCxGoodsCL" style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; height: 340px; width: 100%"></canvas>
  95. </div>
  96. </div>
  97. </div>
  98. </div>
  99. <script>
  100. //缺陷统计刷新时间
  101. var refreshTime1 = 600000;
  102. var currentTime1 = 0;
  103. var doGetData;
  104. var doGetTime;
  105. var frameHeight;
  106. var tableHeight;
  107. var offsetHeight = 20;
  108. $(document).ready(function () {
  109. initData();
  110. clearData();
  111. doGetData = setInterval(function () { timeUpdate(); }, 1000);
  112. loadMainTable()
  113. setInterval(function () { loadMainTable(); }, 600000);
  114. loadDataC();
  115. //setInterval(function () { loadDataC(); }, 10000);
  116. loadDataB();
  117. //setInterval(function () { loadDataB(); }, 10000);
  118. });
  119. //帮助说明
  120. function showHelp() {
  121. var message = "月计划达成率";
  122. alert(message);
  123. }
  124. function timeUpdate() {
  125. if (currentTime1 <= 0) {
  126. loadDataC();
  127. //setInterval(function () { loadDataC(); }, 5000);
  128. loadDataB();
  129. //setInterval(function () { loadDataB(); }, 5000);
  130. currentTime1 = refreshTime1;
  131. }
  132. else {
  133. if (currentTime1 > 0) {
  134. $('#报表加载').html('刷新:' + currentTime1 / 1000 + ' 秒');
  135. currentTime1 = currentTime1 - 1000;
  136. }
  137. }
  138. }
  139. function clearData() {
  140. //清除数据
  141. window.GoodsCL.data.datasets[0].data = [0, 0, 0, 0, 0, 0];
  142. window.GoodsCL.data.datasets[1].data = [0, 0, 0, 0, 0, 0];
  143. window.GoodsCL.update();
  144. window.GoodsCX.data.datasets[0].data = [0, 0, 0, 0, 0, 0, 0];
  145. window.GoodsCX.data.datasets[1].data = [0, 0, 0, 0, 0, 0, 0];
  146. window.GoodsCX.update();
  147. }
  148. function loadMainTable() {
  149. $.get("rpt.ashx?m=MonthTable", function (data) {
  150. var json = JSON.parse(data);
  151. if (json["success"] == true) {
  152. $("#dayTable").html("");
  153. for (var i = 0; i < json["rows"].length; i++) {
  154. var temp = $("#dayTable_template").html();
  155. temp = temp.replace("<tbody>", "").replace("</tbody>", "");
  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. temp = temp.replace('{计划达成率}', json["rows"][i]['计划达成率']);
  161. $("#dayTable").append(temp);
  162. }
  163. }
  164. });
  165. }
  166. function loadDataB(){
  167. //获取月产品完工数据
  168. $.get("rpt.ashx?m=finish", function (data){
  169. var json = JSON.parse(data);
  170. if (json["success"] == true) {
  171. let a = [];
  172. let a1 = [];
  173. let a2 = [];
  174. var num = parseInt(json["rows"].length);
  175. for (var i = 0; i < num; i++) {
  176. a.push(json["rows"][i]["产品类别"]);
  177. a1.push(parseInt(json["rows"][i]["包装计划数"]));
  178. a2.push(parseInt(json["rows"][i]["包装达成数"]));
  179. }
  180. window.GoodsCL.data.datasets[0].data = a1;
  181. window.GoodsCL.data.datasets[1].data = a2;
  182. window.GoodsCL.data.labels = a;
  183. window.GoodsCL.update();
  184. }
  185. });
  186. }
  187. function loadDataC() {
  188. //成型
  189. $.get("rpt.ashx?m=cx", function (data) {
  190. var json = JSON.parse(data);
  191. if (json["success"] == true) {
  192. let a = [];
  193. let a1 = [];
  194. let a2 = [];
  195. var num = parseInt(json["rows"].length);
  196. for (var i = 0; i < num; i++) {
  197. a.push(json["rows"][i]["产品类别"]);
  198. a1.push(parseInt(json["rows"][i]["成型计划数"]));
  199. a2.push(parseInt(json["rows"][i]["成型达成数"]));
  200. }
  201. window.GoodsCX.data.datasets[0].data = a1;
  202. window.GoodsCX.data.datasets[1].data = a2;
  203. window.GoodsCX.data.labels = a;
  204. window.GoodsCX.update();
  205. if (parseInt(json["rows"][0]["达成率"]) < 95) {
  206. $("#t1").text("【" + json["rows"][0]["产品类别"] + "】" + "计划达成率低于95" + "%");
  207. } else {
  208. $("#t1").text("【" + json["rows"][0]["产品类别"] + "】" + "计划达成");
  209. }
  210. if (parseInt(json["rows"][1]["达成率"]) < 95) {
  211. $("#t2").text("【" + json["rows"][1]["产品类别"] + "】" + "计划达成率低于95" + "%");
  212. } else {
  213. $("#t2").text("【" + json["rows"][1]["产品类别"] + "】" + "计划达成");
  214. }
  215. if (parseInt(json["rows"][2]["达成率"]) < 95) {
  216. $("#t3").text("【" + json["rows"][2]["产品类别"] + "】" + "计划达成率低于95" + "%");
  217. } else {
  218. $("#t3").text("【" + json["rows"][2]["产品类别"] + "】" + "计划达成");
  219. }
  220. if (parseInt(json["rows"][3]["达成率"]) < 95) {
  221. $("#t4").text("【" + json["rows"][3]["产品类别"] + "】" + "计划达成率低于95" + "%");
  222. } else {
  223. $("#t4").text("【" + json["rows"][3]["产品类别"] + "】" + "计划达成");
  224. }
  225. if (parseInt(json["rows"][4]["达成率"]) < 95) {
  226. $("#t5").text("【" + json["rows"][4]["产品类别"] + "】" + "计划达成率低于95" + "%");
  227. } else {
  228. $("#t5").text("【" + json["rows"][4]["产品类别"] + "】" + "计划达成");
  229. }
  230. if (parseInt(json["rows"][5]["达成率"]) < 95) {
  231. $("#t6").text("【" + json["rows"][5]["产品类别"] + "】" + "计划达成率低于95" + "%");
  232. } else {
  233. $("#t6").text("【" + json["rows"][5]["产品类别"] + "】" + "计划达成");
  234. }
  235. }
  236. });
  237. }
  238. function initData() {
  239. window.chartColors = {
  240. red: 'rgb(255, 99, 132)',
  241. orange: 'rgb(255, 159, 64)',
  242. yellow: 'rgb(255, 250, 86)',
  243. green: 'rgb(75, 192, 192)',
  244. blue: 'rgb(54, 162, 250)',
  245. purple: 'rgb(153, 102, 255)',
  246. grey: 'rgb(231,233,237)'
  247. };
  248. var color = Chart.helpers.color;
  249. window.randomScalingFactor = function (num) {
  250. return Math.round(Math.random() * num);
  251. }
  252. Chart.defaults.global.defaultFontColor = 'white';
  253. Chart.defaults.global.defaultFontSize = 24;
  254. Chart.defaults.global.legend.display = false;
  255. //包装月度计划=======================================
  256. window.configGoodsCL = {
  257. data: {
  258. labels: ['坐便器', '智能坐便器', '台下盆', '蹲便器', '小便器(挂)','柜盆'],
  259. datasets: [{
  260. type: 'line',
  261. label: '计划产量',
  262. backgroundColor: color(window.chartColors.orange).alpha(0.35).rgbString(),
  263. fill: false,
  264. borderColor: window.chartColors.orange,
  265. borderWidth: 2,
  266. pointRadius: 30,
  267. data: [0, 0, 0, 0, 0, 0]
  268. }, {
  269. label: '实际产量',
  270. backgroundColor: color(window.chartColors.blue).alpha(0.35).rgbString(),
  271. borderColor: window.chartColors.blue,
  272. borderWidth: 1,
  273. data: [0, 0, 0, 0, 0, 0]
  274. }]
  275. },
  276. type: 'bar',
  277. options: {
  278. legend: {
  279. display: true
  280. },
  281. title: {
  282. display: true,
  283. text: "包装月度计划"
  284. },
  285. tooltips: {
  286. mode: 'point',
  287. intersect: false
  288. },
  289. responsive: true,
  290. scales: {
  291. xAxes: [{
  292. stacked: false
  293. }],
  294. yAxes: [{
  295. display: true,
  296. stacked: false,
  297. ticks: {
  298. min: 0,
  299. stepSize: 20000,
  300. max: 100000
  301. }
  302. }]
  303. }
  304. }
  305. };
  306. var ctxGoodsCL = document.getElementById("canvasGoodsCL").getContext("2d");
  307. window.GoodsCL = new Chart(ctxGoodsCL, configGoodsCL);
  308. //===================================================
  309. //成型月度计划=======================================
  310. window.configGoodsCX = {
  311. data: {
  312. labels: ['GOODS', 'GOODS', 'GOODS', 'GOODS', 'GOODS', 'GOODS'],
  313. datasets: [{
  314. type: 'line',
  315. label: '计划产量',
  316. backgroundColor: color(window.chartColors.orange).alpha(0.35).rgbString(),
  317. fill: false,
  318. borderColor: window.chartColors.orange,
  319. borderWidth: 2,
  320. pointRadius: 30,
  321. data: [0, 0, 0, 0, 0, 0]
  322. }, {
  323. label: '实际产量',
  324. backgroundColor: color(window.chartColors.blue).alpha(0.35).rgbString(),
  325. borderColor: window.chartColors.blue,
  326. borderWidth: 1,
  327. data: [0, 0, 0, 0, 0, 0]
  328. }]
  329. },
  330. type: 'bar',
  331. options: {
  332. legend: {
  333. display: true
  334. },
  335. title: {
  336. display: true,
  337. text: "成型月度计划"
  338. },
  339. tooltips: {
  340. mode: 'point',
  341. intersect: false
  342. },
  343. responsive: true,
  344. scales: {
  345. xAxes: [{
  346. stacked: false
  347. }],
  348. yAxes: [{
  349. display: true,
  350. stacked: false,
  351. ticks: {
  352. min: 0,
  353. stepSize: 20000,
  354. max: 100000
  355. }
  356. }]
  357. }
  358. }
  359. };
  360. var ctxGoodsCX = document.getElementById("canvasCxGoodsCL").getContext("2d");
  361. window.GoodsCX = new Chart(ctxGoodsCX, configGoodsCX);
  362. //===================================================
  363. }
  364. </script>
  365. <script src="/Plugins/chartjs-2.8.0/chart-2.8.min.js"></script>
  366. <script src="/Plugins/chartjs-2.8.0/chartjs-plugin-datalabels.js"></script>
  367. <script src="/Plugins/chartjs-2.8.0/utils.js"></script>
  368. <script src="/Plugins/circleChart/circleChart.min.js"></script>
  369. </body>
  370. </html>