mouldBoard.html 16 KB

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