mouldBoard.html 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  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. ],
  159. // 维修中模具表表头
  160. repairHeader: [
  161. '<span style="color:#ffffff;font-size:0.16rem"></span>',
  162. '<span style="color:#ffffff;font-size:0.16rem">零件号</span>',
  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. ],
  167. inventoryDatas: [], // 冲压模具管理看板数据
  168. fixtureDatas: [], // 检具校准有效期到期预警表数据
  169. maintainDatas: [], // 需保养模具预警表数据
  170. repairDatas: [], // 维修中模具表数据
  171. inventoryConfig: {}, // 冲压模具管理看板配置
  172. fixtureConfig: {}, // 检具校准有效期到期预警表配置
  173. maintainConfig: {}, // 需保养模具预警表配置
  174. repairConfig: {}, // 维修中模具表配置
  175. // 通用配置
  176. commonConfig: {
  177. headerHeight: 30,
  178. waitTime: 8000,
  179. carousel: "page",
  180. headerBGC: "#051b36",
  181. oddRowBGC: "#051b3c",
  182. evenRowBGC: "#030814",
  183. },
  184. count: {
  185. moldAllQuantity: "", // 模具总数
  186. moldInWarehouseQuantity: "", //模具在库数量
  187. moldProduceQuantity: "", // 模具生产数量
  188. moldMaintenanceAndRepairQuantity: "", // 模具维修保养数量
  189. fixtureAllQuantity: "", // 检具总数
  190. fixtureInWarehouseQuantity: "", // 检具在库数量
  191. fixtureProduceQuantity: "", // 检具生产数量
  192. fixtureMaintenanceAndRepairQuantity: "", // 检具维修保养数量
  193. },
  194. timer: null,
  195. warehouseId: null, // 车间id
  196. warehouseName: "", // 车间名称
  197. };
  198. },
  199. methods: {
  200. // 获取当前展示的仓库id
  201. getWarehouseId() {
  202. const _self = this;
  203. // 看板盒子从url获取
  204. const params = getQueryString();
  205. _self.warehouseId = params.warehouseId;
  206. // apk 安装包写死(需要多个页面)
  207. // _self.warehouseId = 460335910907969;
  208. },
  209. // 获取车间信息
  210. getWarehouseInfo() {
  211. const _self = this;
  212. const url = "/api/WarehouseResource/queryByWarehouseId";
  213. const params = [["warehouseId", _self.warehouseId]];
  214. ajaxGet(url, params).then((success) => {
  215. if (success.errorCode === 0) {
  216. _self.warehouseName = success.data.name;
  217. } else {
  218. console.log(success.errorMessage);
  219. }
  220. });
  221. },
  222. // 获取零件状态数据
  223. inventoryHandler(dtos) {
  224. const datas = [];
  225. dtos.forEach((item, index) => {
  226. if (
  227. item.inventoryStatus == "在库" ||
  228. item.inventoryStatus == "生产中" ||
  229. item.inventoryStatus == "维修中" ||
  230. item.inventoryStatus == "保养中"
  231. ) {
  232. datas.push(item);
  233. }
  234. });
  235. return datas;
  236. },
  237. // 冲压模具管理看板数据处理
  238. inventoryProcess(dtos) {
  239. const _self = this;
  240. _self.inventoryDatas = [];
  241. if (dtos && dtos.length) {
  242. const datas = _self.inventoryHandler(dtos)
  243. _self.inventoryDatas = datas.map((item) => {
  244. return [
  245. '<div class="table-img" ><img src="../images/icon.png"/></div>',
  246. item.type,
  247. item.inventoryStatus == "在库"
  248. ? '<div class="table-img"><img class="status-img" src="../images/in.png"/></div>'
  249. : item.inventoryStatus == "生产中"
  250. ? '<div class="table-img"><img class="status-img" src="../images/prod.png"/></div>'
  251. : item.inventoryStatus == "维修中"
  252. ? '<div class="table-img"><img class="status-img" src="../images/repair.png"/></div>'
  253. : item.inventoryStatus == "保养中"
  254. ? '<div class="table-img"><img class="status-img" src="../images/maintain.png"/></div>'
  255. : "",
  256. item.positionName,
  257. ];
  258. });
  259. }
  260. _self.inventoryDatas = _self.addEmpty(22, "table1");
  261. _self.inventoryConfig = {
  262. header: _self.mangerHeader,
  263. data: _self.inventoryDatas,
  264. rowNum: 22,
  265. align: ["center", "center", "center", "center"],
  266. columnWidth: [66, 370, 120, 180],
  267. ..._self.commonConfig,
  268. };
  269. },
  270. // 检具校准有效期到期预警表数据处理
  271. fixtureProcess(dtos) {
  272. const _self = this;
  273. _self.fixtureDatas = [];
  274. if (dtos && dtos.length) {
  275. _self.fixtureDatas = dtos.map((item) => [
  276. '<div class="table-img" ><img src="../images/icon.png"/></div>',
  277. item.inventoryName,
  278. item.effectiveDate,
  279. item.inventoryNo,
  280. ]);
  281. }
  282. _self.fixtureDatas = _self.addEmpty(12, "table2");
  283. _self.fixtureConfig = {
  284. header: _self.fixtureHeader,
  285. data: _self.fixtureDatas,
  286. rowNum: 12,
  287. align: ["center", "center", "center", "center"],
  288. columnWidth: [66, 280, 210, 200],
  289. ..._self.commonConfig,
  290. };
  291. },
  292. // 需保养模具预警表数据处理
  293. moldMaintainProcess(dtos) {
  294. const _self = this;
  295. _self.maintainDatas = [];
  296. if (dtos && dtos.length) {
  297. _self.maintainDatas = dtos.map((item) => [
  298. '<div class="table-img" ><img src="../images/icon.png"/></div>',
  299. item.inventoryType,
  300. item.maintenanceDate,
  301. item.positionName,
  302. ]);
  303. }
  304. _self.maintainDatas = _self.addEmpty(10, "table3");
  305. _self.maintainConfig = {
  306. header: _self.maintainHeader,
  307. data: _self.maintainDatas,
  308. rowNum: 10,
  309. align: ["center", "center", "center", "center"],
  310. columnWidth: [66, 280, 210, 200],
  311. ..._self.commonConfig,
  312. };
  313. },
  314. // 维修中模具表数据处理
  315. moldRepairProcess(dtos) {
  316. const _self = this;
  317. _self.repairDatas = [];
  318. if (dtos && dtos.length) {
  319. _self.repairDatas = dtos.map((item) => [
  320. '<div class="table-img" ><img src="../images/icon.png"/></div>',
  321. item.inventoryType,
  322. item.repairDate,
  323. item.positionName,
  324. item.status
  325. ]);
  326. }
  327. _self.repairDatas = _self.addEmpty(12, "table4");
  328. _self.repairConfig = {
  329. header: _self.repairHeader,
  330. data: _self.repairDatas,
  331. rowNum: 12,
  332. align: ["center", "center", "center", "center","center"],
  333. columnWidth: [66, 360, 260, 120,120],
  334. ..._self.commonConfig,
  335. };
  336. },
  337. // 处理接口数据
  338. dataProcess(datas) {
  339. const _self = this;
  340. _self.count = datas.centerBoardInventoryQuantityDto;
  341. _self.inventoryProcess(datas.boardInventoryResponses);
  342. _self.fixtureProcess(datas.fixtureEffectiveDtos);
  343. _self.moldMaintainProcess(datas.moldNeedMaintainDtos);
  344. _self.moldRepairProcess(datas.moldRepairingDtos);
  345. },
  346. // 获取表格数据
  347. getTableDatas() {
  348. const _self = this;
  349. const url = "/api/BulletinBoardResource/queryNewBoardData";
  350. const params = [["warehouseId", _self.warehouseId]];
  351. ajaxGet(url, params).then((success) => {
  352. if (success.errorCode === 0) {
  353. if (success.data) _self.dataProcess(success.data);
  354. } else {
  355. console.log(success.errorMessage);
  356. }
  357. });
  358. },
  359. addEmpty(size, flag) {
  360. const _self = this;
  361. let newDatas;
  362. if (flag == "table1") {
  363. newDatas = JSON.parse(JSON.stringify(_self.inventoryDatas));
  364. } else if (flag == "table2") {
  365. newDatas = JSON.parse(JSON.stringify(_self.fixtureDatas));
  366. } else if (flag == "table3") {
  367. newDatas = JSON.parse(JSON.stringify(_self.maintainDatas));
  368. } else if (flag == "table4") {
  369. newDatas = JSON.parse(JSON.stringify(_self.repairDatas));
  370. }
  371. if (newDatas.length < size) {
  372. const count = size - newDatas.length;
  373. for (let i = 0; i < count; i++) {
  374. let newArray = ["", "", "", ""];
  375. newDatas.push(newArray);
  376. }
  377. }
  378. return newDatas;
  379. },
  380. },
  381. mounted() {
  382. const _self = this;
  383. _self.getWarehouseId();
  384. _self.getTableDatas();
  385. _self.getWarehouseInfo();
  386. _self.timer = setInterval(() => {
  387. _self.getTableDatas();
  388. _self.getWarehouseInfo();
  389. }, 6000 * 10 * 5);
  390. },
  391. beforeUnmount() {
  392. const _self = this;
  393. clearInterval(_self.timer);
  394. _self.timer = null;
  395. },
  396. });
  397. </script>
  398. </body>
  399. </html>