mouldBoard.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=1920" />
  6. <title>模检具看板</title>
  7. <link rel="stylesheet" href="../css/common.css" />
  8. <link rel="stylesheet" href="../css/mould.css" />
  9. <script type="text/javascript" src="../plugin/jquery.min.js"></script>
  10. <script type="text/javascript" src="../plugin/vue.js"></script>
  11. <script type="text/javascript" src="../js/util.js"></script>
  12. <script type="text/javascript" src="../js/common.js"></script>
  13. <script src="../plugin/datav.js"></script>
  14. </head>
  15. <script>
  16. $(window).load(function () {
  17. $(".loading").fadeOut();
  18. });
  19. //动态设置视口
  20. const setSize = () => {
  21. // 获取html元素
  22. const html = document.getElementsByTagName("html")[0];
  23. // 获取屏幕宽度
  24. const pageWidth = html.getBoundingClientRect().width;
  25. // 动态计算字体大小(rem)
  26. html.style.fontSize = pageWidth / 20 + "px";
  27. };
  28. setSize();
  29. window.addEventListener("resize", setSize, false);
  30. </script>
  31. <body>
  32. <div class="loading">
  33. <div class="load_box">
  34. <img src="../images/loading.gif" /> 看板加载中,请稍等...
  35. </div>
  36. </div>
  37. <div id="app" class="container">
  38. <div class="head">
  39. <h1>模检具看板</h1>
  40. <span id="showTime"></span>
  41. </div>
  42. <ul class="clearfix">
  43. <li>
  44. <div class="box management-box">
  45. <img src="../images/titleLogo.png" />
  46. <span class="board-title title1">冲压模具管理看板</span>
  47. <img src="../images/status.png" class="status" />
  48. <span class="status-span status1">在库</span>
  49. <span class="status-span status2">生产中</span>
  50. <span class="status-span status3">维修中</span>
  51. <span class="status-span status4">保养中</span>
  52. <img src="../images/mouldbg.png" class="box-border1" />
  53. <dv-scroll-board
  54. ref="scrollBoard"
  55. class="table1"
  56. :config="inventoryConfig"
  57. />
  58. </div>
  59. </li>
  60. <li>
  61. <div class="box">
  62. <div class="title aging center">{{warehouseName}}</div>
  63. <img src="../images/group1.png" class="group-common1 group1" />
  64. <span class="count mo_total">模具总数</span>
  65. <div class="count_box total1">{{count.moldAllQuantity}}</div>
  66. <img src="../images/group2.png" class="group-common1 group2" />
  67. <span class="count mo_store">模具在库数量</span>
  68. <div class="count_box store1">
  69. {{count.moldInWarehouseQuantity}}
  70. </div>
  71. <img src="../images/group3.png" class="group-common1 group3" />
  72. <span class="count mo_line">模具产线数量</span>
  73. <div class="count_box line1">{{count.moldProduceQuantity}}</div>
  74. <img src="../images/group4.png" class="group-common1 group4" />
  75. <span class="count mo_repair">模具维修保养</span>
  76. <div class="count_box repair1">
  77. {{count.moldMaintenanceAndRepairQuantity}}
  78. </div>
  79. <img src="../images/group1.png" class="group-common2 group1" />
  80. <span class="count gauge_total">检具总数</span>
  81. <div class="count_box total2">{{count.fixtureAllQuantity}}</div>
  82. <img src="../images/group2.png" class="group-common2 group2" />
  83. <span class="count gauge_store">检具在库数量</span>
  84. <div class="count_box store2">
  85. {{count.fixtureInWarehouseQuantity}}
  86. </div>
  87. <img src="../images/group3.png" class="group-common2 group3" />
  88. <span class="count gauge_line">检具产线数量</span>
  89. <div class="count_box line2">{{count.fixtureProduceQuantity}}</div>
  90. <img src="../images/group4.png" class="group-common2 group4" />
  91. <span class="count gauge_repair">检具校准数量</span>
  92. <div class="count_box repair2">
  93. {{count.fixtureMaintenanceAndRepairQuantity}}
  94. </div>
  95. </div>
  96. <div class="box warning-box">
  97. <img src="../images/titleLogo.png" />
  98. <span class="board-title title2">检具校准有效期到期预警表</span>
  99. <img src="../images/modulesbg.png" class="box-border2" />
  100. <dv-scroll-board
  101. ref="scrollBoard"
  102. class="table2"
  103. :config="fixtureConfig"
  104. />
  105. </div>
  106. </li>
  107. <li>
  108. <div class="box maintain-box">
  109. <img src="../images/titleLogo.png" />
  110. <span class="board-title title1">需保养模具预警表</span>
  111. <img src="../images/modulesbg.png" class="box-border3" />
  112. <dv-scroll-board
  113. ref="scrollBoard"
  114. class="table3"
  115. :config="maintainConfig"
  116. />
  117. </div>
  118. <div class="box repair-box">
  119. <img src="../images/titleLogo.png" />
  120. <span class="board-title title1">维修保养中模具表</span>
  121. <img src="../images/modulesbg.png" class="box-border2" />
  122. <dv-scroll-board
  123. ref="scrollBoard"
  124. class="table2"
  125. :config="repairConfig"
  126. />
  127. </div>
  128. </li>
  129. </ul>
  130. </div>
  131. <div class="back"></div>
  132. <script>
  133. var app = new Vue({
  134. el: "#app",
  135. data() {
  136. return {
  137. config: {},
  138. // 冲压模具管理看板表头
  139. mangerHeader: [
  140. '<span style="color:#ffffff;font-size:0.16rem"></span>',
  141. '<span style="color:#ffffff;font-size:0.16rem">零件号</span>',
  142. '<span style="color:#ffffff;font-size:0.16rem">状态</span>',
  143. '<span style="color:#ffffff;font-size:0.16rem">库位号</span>',
  144. ],
  145. // 检具校准有效期到期预警表表头
  146. fixtureHeader: [
  147. '<span style="color:#ffffff;font-size:0.16rem"></span>',
  148. '<span style="color:#ffffff;font-size:0.16rem">检具名称</span>',
  149. '<span style="color:#ffffff;font-size:0.16rem">到期日期</span>',
  150. '<span style="color:#ffffff;font-size:0.16rem">检具编号</span>',
  151. ],
  152. // 需保养模具预警表表头
  153. maintainHeader: [
  154. '<span style="color:#ffffff;font-size:0.16rem"></span>',
  155. '<span style="color:#ffffff;font-size:0.16rem">零件号</span>',
  156. '<span style="color:#ffffff;font-size:0.16rem">生产数量</span>',
  157. '<span style="color:#ffffff;font-size:0.16rem">生产数量阈值</span>',
  158. '<span style="color:#ffffff;font-size:0.16rem">保养时间</span>',
  159. '<span style="color:#ffffff;font-size:0.16rem">货位号</span>',
  160. ],
  161. // 维修中模具表表头
  162. repairHeader: [
  163. '<span style="color:#ffffff;font-size:0.16rem"></span>',
  164. '<span style="color:#ffffff;font-size:0.16rem">零件号</span>',
  165. '<span style="color:#ffffff;font-size:0.16rem">维修保养时间</span>',
  166. '<span style="color:#ffffff;font-size:0.16rem">货位号</span>',
  167. '<span style="color:#ffffff;font-size:0.16rem">状态</span>',
  168. ],
  169. inventoryDatas: [], // 冲压模具管理看板数据
  170. fixtureDatas: [], // 检具校准有效期到期预警表数据
  171. maintainDatas: [], // 需保养模具预警表数据
  172. repairDatas: [], // 维修中模具表数据
  173. inventoryConfig: {}, // 冲压模具管理看板配置
  174. fixtureConfig: {}, // 检具校准有效期到期预警表配置
  175. maintainConfig: {}, // 需保养模具预警表配置
  176. repairConfig: {}, // 维修中模具表配置
  177. // 通用配置
  178. commonConfig: {
  179. headerHeight: 30,
  180. waitTime: 8000,
  181. carousel: "page",
  182. headerBGC: "#051b36",
  183. oddRowBGC: "#051b3c",
  184. evenRowBGC: "#030814",
  185. },
  186. count: {
  187. moldAllQuantity: "", // 模具总数
  188. moldInWarehouseQuantity: "", //模具在库数量
  189. moldProduceQuantity: "", // 模具生产数量
  190. moldMaintenanceAndRepairQuantity: "", // 模具维修保养数量
  191. fixtureAllQuantity: "", // 检具总数
  192. fixtureInWarehouseQuantity: "", // 检具在库数量
  193. fixtureProduceQuantity: "", // 检具生产数量
  194. fixtureMaintenanceAndRepairQuantity: "", // 检具维修保养数量
  195. },
  196. timer: null,
  197. warehouseId: null, // 车间id
  198. warehouseName: "", // 车间名称
  199. };
  200. },
  201. methods: {
  202. // 获取当前展示的仓库id
  203. getWarehouseId() {
  204. const _self = this;
  205. // 看板盒子从url获取
  206. const params = getQueryString();
  207. _self.warehouseId = params.warehouseId;
  208. // apk 安装包写死(需要多个页面)
  209. // _self.warehouseId = 460335910907969;
  210. },
  211. // 获取车间信息
  212. getWarehouseInfo() {
  213. const _self = this;
  214. const url = "/api/WarehouseResource/queryByWarehouseId";
  215. const params = [["warehouseId", _self.warehouseId]];
  216. ajaxGet(url, params).then((success) => {
  217. if (success.errorCode === 0) {
  218. _self.warehouseName = success.data.name;
  219. } else {
  220. console.log(success.errorMessage);
  221. }
  222. });
  223. },
  224. // 获取零件状态数据
  225. inventoryHandler(dtos) {
  226. const datas = [];
  227. dtos.forEach((item, index) => {
  228. if (
  229. item.inventoryStatus == "在库" ||
  230. item.inventoryStatus == "生产中" ||
  231. item.inventoryStatus == "维修中" ||
  232. item.inventoryStatus == "保养中"
  233. ) {
  234. datas.push(item);
  235. }
  236. });
  237. return datas;
  238. },
  239. // 冲压模具管理看板数据处理
  240. inventoryProcess(dtos) {
  241. const _self = this;
  242. _self.inventoryDatas = [];
  243. if (dtos && dtos.length) {
  244. const datas = _self.inventoryHandler(dtos);
  245. _self.inventoryDatas = datas.map((item) => {
  246. return [
  247. '<div class="table-img" ><img src="../images/icon.png"/></div>',
  248. item.type,
  249. item.inventoryStatus == "在库"
  250. ? '<div class="table-img"><img class="status-img" src="../images/in.png"/></div>'
  251. : item.inventoryStatus == "生产中"
  252. ? '<div class="table-img"><img class="status-img" src="../images/prod.png"/></div>'
  253. : item.inventoryStatus == "维修中"
  254. ? '<div class="table-img"><img class="status-img" src="../images/repair.png"/></div>'
  255. : item.inventoryStatus == "保养中"
  256. ? '<div class="table-img"><img class="status-img" src="../images/maintain.png"/></div>'
  257. : "",
  258. item.positionName,
  259. ];
  260. });
  261. }
  262. _self.inventoryDatas = _self.addEmpty(22, "table1");
  263. _self.inventoryConfig = {
  264. header: _self.mangerHeader,
  265. data: _self.inventoryDatas,
  266. rowNum: 22,
  267. align: ["center", "center", "center", "center"],
  268. columnWidth: [66, 370, 120, 180],
  269. ..._self.commonConfig,
  270. };
  271. },
  272. // 检具校准有效期到期预警表数据处理
  273. fixtureProcess(dtos) {
  274. const _self = this;
  275. _self.fixtureDatas = [];
  276. if (dtos && dtos.length) {
  277. _self.fixtureDatas = dtos.map((item) => [
  278. '<div class="table-img" ><img src="../images/icon.png"/></div>',
  279. item.inventoryName,
  280. item.effectiveDate,
  281. item.inventoryNo,
  282. ]);
  283. }
  284. _self.fixtureDatas = _self.addEmpty(12, "table2");
  285. _self.fixtureConfig = {
  286. header: _self.fixtureHeader,
  287. data: _self.fixtureDatas,
  288. rowNum: 12,
  289. align: ["center", "center", "center", "center"],
  290. columnWidth: [66, 280, 210, 200],
  291. ..._self.commonConfig,
  292. };
  293. },
  294. // 需保养模具预警表数据处理
  295. moldMaintainProcess(dtos) {
  296. const _self = this;
  297. _self.maintainDatas = [];
  298. if (dtos && dtos.length) {
  299. _self.maintainDatas = dtos.map((item) => [
  300. '<div class="table-img" ><img src="../images/icon.png"/></div>',
  301. item.inventoryType,
  302. item.productSingle,
  303. item.productThreshold,
  304. item.maintenanceDate,
  305. item.positionName,
  306. ]);
  307. }
  308. _self.maintainDatas = _self.addEmpty(10, "table3");
  309. _self.maintainConfig = {
  310. header: _self.maintainHeader,
  311. data: _self.maintainDatas,
  312. rowNum: 10,
  313. align: [
  314. "center",
  315. "center",
  316. "center",
  317. "center",
  318. "center",
  319. "center",
  320. ],
  321. columnWidth: [66, 300, 166, 232, 250, 160],
  322. ..._self.commonConfig,
  323. };
  324. },
  325. // 维修中模具表数据处理
  326. moldRepairProcess(dtos) {
  327. const _self = this;
  328. _self.repairDatas = [];
  329. if (dtos && dtos.length) {
  330. _self.repairDatas = dtos.map((item) => [
  331. '<div class="table-img" ><img src="../images/icon.png"/></div>',
  332. item.inventoryType,
  333. item.repairDate,
  334. item.positionName,
  335. item.status,
  336. ]);
  337. }
  338. _self.repairDatas = _self.addEmpty(12, "table4");
  339. _self.repairConfig = {
  340. header: _self.repairHeader,
  341. data: _self.repairDatas,
  342. rowNum: 12,
  343. align: ["center", "center", "center", "center", "center"],
  344. columnWidth: [66, 360, 266, 120, 120],
  345. ..._self.commonConfig,
  346. };
  347. },
  348. // 处理接口数据
  349. dataProcess(datas) {
  350. const _self = this;
  351. _self.count = datas.centerBoardInventoryQuantityDto;
  352. _self.inventoryProcess(datas.boardInventoryResponses);
  353. _self.fixtureProcess(datas.fixtureEffectiveDtos);
  354. _self.moldMaintainProcess(datas.moldNeedMaintainDtos);
  355. _self.moldRepairProcess(datas.moldRepairingDtos);
  356. },
  357. // 获取表格数据
  358. getTableDatas() {
  359. const _self = this;
  360. const url = "/api/BulletinBoardResource/queryNewBoardData";
  361. const params = [["warehouseId", _self.warehouseId]];
  362. ajaxGet(url, params).then((success) => {
  363. if (success.errorCode === 0) {
  364. if (success.data) _self.dataProcess(success.data);
  365. } else {
  366. console.log(success.errorMessage);
  367. }
  368. });
  369. },
  370. addEmpty(size, flag) {
  371. const _self = this;
  372. let newDatas;
  373. if (flag == "table1") {
  374. newDatas = JSON.parse(JSON.stringify(_self.inventoryDatas));
  375. } else if (flag == "table2") {
  376. newDatas = JSON.parse(JSON.stringify(_self.fixtureDatas));
  377. } else if (flag == "table3") {
  378. newDatas = JSON.parse(JSON.stringify(_self.maintainDatas));
  379. } else if (flag == "table4") {
  380. newDatas = JSON.parse(JSON.stringify(_self.repairDatas));
  381. }
  382. if (newDatas.length < size) {
  383. const count = size - newDatas.length;
  384. for (let i = 0; i < count; i++) {
  385. let newArray = ["", "", "", ""];
  386. newDatas.push(newArray);
  387. }
  388. }
  389. return newDatas;
  390. },
  391. },
  392. mounted() {
  393. const _self = this;
  394. _self.getWarehouseId();
  395. _self.getTableDatas();
  396. _self.getWarehouseInfo();
  397. _self.timer = setInterval(() => {
  398. _self.getTableDatas();
  399. _self.getWarehouseInfo();
  400. }, 6000 * 10 * 5);
  401. },
  402. beforeUnmount() {
  403. const _self = this;
  404. clearInterval(_self.timer);
  405. _self.timer = null;
  406. },
  407. });
  408. </script>
  409. </body>
  410. </html>