You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

473 lines
26 KiB

3 days ago
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"/>
  6. <link rel="stylesheet" href="/css/reset.css"/>
  7. <link rel="stylesheet" href="/mint-ui/mint-ui.min.css"/>
  8. <link rel="stylesheet" href="/css/mobile.css"/>
  9. </head>
  10. <body>
  11. <div id="app">
  12. <#if currentUser??>
  13. <div class="main-container" style="display: none;" v-show="!rendering">
  14. <mt-header fixed>
  15. <div slot="left" class="header-title">
  16. <img class="logo" height="30" src="/img/ccl-logo.png"/>
  17. </div>
  18. <img src="/img/logout.svg" height="22" @click="logout" slot="right"/>
  19. </mt-header>
  20. <mt-tab-container v-model="selectedTab">
  21. <#if currentUser.isAdmin || currentUser.authorities?contains("receiving")>
  22. <script>var selectedTab = selectedTab || "receive";</script>
  23. <mt-tab-container-item id="receive">
  24. <div v-show="receive.screen === 'default'">
  25. <div class="input-group">
  26. <div class="input-left" style="width: calc(100% - 120px)">
  27. <mt-field label="" placeholder="Receiving No" ref="receiveNoRef" v-model="receive.search.receiveNo"></mt-field>
  28. </div>
  29. <div class="input-right">
  30. <mt-button @click="searchReceiveNo">Query</mt-button>
  31. <mt-button @click="scanReceive">Scanning</mt-button>
  32. </div>
  33. <div class="clear"></div>
  34. </div>
  35. <div class="receive-summary" v-show="receive.summary.receiveNo != ''">
  36. <div class="form">
  37. <span class="form-title">入库单号: </span>
  38. <span class="form-value">{{ receive.summary.receiveNo }}</span>
  39. </div>
  40. <div class="form">
  41. <span class="form-title">生产单号: </span>
  42. <span class="form-value">{{ receive.summary.orderNo }}</span>
  43. </div>
  44. <div class="form">
  45. <span class="form-title">创建日期: </span>
  46. <span class="form-value">{{ receive.summary.receivedDate | datetime}}</span>
  47. </div>
  48. <div class="form">
  49. <span class="form-title">创建人: </span>
  50. <span class="form-value">{{ receive.summary.receivedBy }}</span>
  51. </div>
  52. <div class="form">
  53. <span class="form-title">类型: </span>
  54. <span class="form-value">{{ receive.summary.receivedType | receivedType }}</span>
  55. </div>
  56. </div>
  57. <div style="text-align: right;margin-top:20px;">
  58. <mt-button type="primary" @click="enterAddReceiveScreen">新增良品入库</mt-button>
  59. </div>
  60. </div>
  61. <div v-show="receive.screen === 'scan'">
  62. <h1 class="title">入库扫描 - {{receive.summary.receiveNo}} ({{receive.summary.receivedType | receivedType}})</h1>
  63. <hr/>
  64. <a class="mint-cell mint-field is-nolabel">
  65. <div class="mint-cell-left"></div>
  66. <div class="mint-cell-wrapper">
  67. <div class="mint-cell-value">
  68. <input placeholder="请扫描小卷卷号" type="text" v-model="receive.scan.finalRollNo" class="mint-field-core" ref="receiveScanFinalRollNoRef" @keydown.enter.prevent="confirmScanFinalRollNo">
  69. <div class="mint-field-clear"><i class="mintui mintui-field-error"></i></div>
  70. <span class="mint-field-state is-default"><i class="mintui mintui-field-default"></i></span>
  71. <div class="mint-field-other"></div>
  72. </div>
  73. </div>
  74. </a>
  75. <br/><br/><br/>
  76. <h1 class="title">已扫描记录 {{receive.scan.rolls.length}}</h1>
  77. <hr/>
  78. <table class="table receive-scan-rolls">
  79. <thead>
  80. <tr>
  81. <th>
  82. Roll No
  83. </th>
  84. <th width="65">
  85. Created By
  86. </th>
  87. <th width="155">
  88. Created Time
  89. </th>
  90. </tr>
  91. </thead>
  92. <tbody>
  93. <tr v-for="(roll,i) in receive.scan.rolls" :style="{'color' : (i + 1) % 12 === 0 ? 'red':'inherit'}">
  94. <td> {{roll.finalRollNo}}</td>
  95. <td> {{roll.receivedBy}}</td>
  96. <td> {{roll.receivedDate | datetime}}</td>
  97. </tr>
  98. </tbody>
  99. </table>
  100. <div style="text-align: right;margin-top:20px;">
  101. <mt-button type="danger" @click="receive.screen = 'default'">返回</mt-button>
  102. </div>
  103. </div>
  104. <div v-show="receive.screen === 'add'">
  105. <div class="input-group">
  106. <div class="input-left">
  107. <mt-field label="" placeholder="请输入生产订单单号" ref="receiveAddOrderNoRef" v-model="receive.add.orderNo"></mt-field>
  108. </div>
  109. <div class="input-right">
  110. <mt-button @click="confirmAddReceive">Ok</mt-button>
  111. </div>
  112. <div class="clear"></div>
  113. </div>
  114. <div style="text-align: right;margin-top:20px;">
  115. <mt-button type="danger" @click="receive.screen = 'default'">返回</mt-button>
  116. </div>
  117. </div>
  118. </mt-tab-container-item>
  119. </#if>
  120. <#if currentUser.isAdmin || currentUser.authorities?contains("dispatch")>
  121. <script>var selectedTab = selectedTab || "shipment";</script>
  122. <mt-tab-container-item id="shipment">
  123. <div v-show="shipment.screen === 'default'">
  124. <div class="input-group">
  125. <div class="input-left" style="width: calc(100% - 120px)">
  126. <mt-field label="" ref="shipNoRef" placeholder="Delivery No" v-model="shipment.search.shipNo"></mt-field>
  127. </div>
  128. <div class="input-right">
  129. <mt-button @click="searchShipment">Query</mt-button>
  130. <mt-button @click="enterShipmentBoxes">箱子</mt-button>
  131. </div>
  132. <div class="clear"></div>
  133. </div>
  134. <div class="receive-summary" v-show="shipment.summary.shipNo != ''">
  135. <div class="form">
  136. <span class="form-title">出库单号: </span>
  137. <span class="form-value">{{ shipment.summary.shipNo }}</span>
  138. </div>
  139. <div class="form">
  140. <span class="form-title">创建日期: </span>
  141. <span class="form-value">{{ shipment.summary.shippedDate | datetime}}</span>
  142. </div>
  143. <div class="form">
  144. <span class="form-title">创建人: </span>
  145. <span class="form-value">{{ shipment.summary.shippedBy }}</span>
  146. </div>
  147. <div class="form">
  148. <span class="form-title">总箱数: </span>
  149. <span class="form-value">{{ shipment.summary.totalBoxes }}</span>
  150. </div>
  151. </div>
  152. <div style="text-align: right;margin-top:20px;">
  153. <mt-button type="primary" @click="confirmAddShipment">New Shipment</mt-button>
  154. </div>
  155. </div>
  156. <div v-show="shipment.screen === 'box'">
  157. <div class="shipment-boxes-title">
  158. <h1 class="title">
  159. {{ shipment.summary.shipNo }}中的箱子
  160. </h1>
  161. <mt-button type="primary" @click="newShipmentBox" size="small">New Box</mt-button>
  162. </div>
  163. <hr/>
  164. <table class="table receive-scan-rolls">
  165. <thead>
  166. <tr>
  167. <th>
  168. Box No
  169. </th>
  170. <th>
  171. Status
  172. </th>
  173. <th width="100">
  174. Actions
  175. </th>
  176. </tr>
  177. </thead>
  178. <tbody>
  179. <tr v-for="box in shipment.boxes">
  180. <td> {{box.boxNo}}</td>
  181. <td> {{box.status}}</td>
  182. <td>
  183. <mt-button type="default" v-if="box.status === 'Packed'" size="small" @click="gotoPrintBox(box.boxNo)">打印</mt-button>
  184. <mt-button type="default" v-else size="small" @click="scanShipmentBox(box.boxNo,box.id)">Scan and delivery</mt-button>
  185. </td>
  186. </tr>
  187. </tbody>
  188. </table>
  189. <div style="text-align: right;margin-top:20px;">
  190. <mt-button type="danger" @click="shipment.screen = 'default'">返回</mt-button>
  191. </div>
  192. </div>
  193. <div v-show="shipment.screen === 'scanBox'">
  194. <div class="shipment-boxes-title">
  195. <h1 class="title">
  196. 出库扫描 - {{shipment.summary.shipNo}} / {{shipment.summary.boxNo}}
  197. </h1>
  198. <mt-button type="primary" @click="finishScanShipmentBoxRoll" size="small">结束扫描</mt-button>
  199. </div>
  200. <hr/>
  201. <a class="mint-cell mint-field is-nolabel">
  202. <div class="mint-cell-left"></div>
  203. <div class="mint-cell-wrapper">
  204. <div class="mint-cell-value">
  205. <input placeholder="请扫描小卷卷号" type="text" v-model="shipment.scan.finalRollNo" class="mint-field-core" ref="shipmentScanFinalRollNoRef" @keydown.enter.prevent="confirmScanBoxFinalRollNo">
  206. <div class="mint-field-clear"><i class="mintui mintui-field-error"></i></div>
  207. <span class="mint-field-state is-default"><i class="mintui mintui-field-default"></i></span>
  208. <div class="mint-field-other"></div>
  209. </div>
  210. </div>
  211. </a>
  212. <br/><br/><br/>
  213. <h1 class="title">已扫描记录</h1>
  214. <hr/>
  215. <table class="table receive-scan-rolls">
  216. <thead>
  217. <tr>
  218. <th>
  219. Roll No
  220. </th>
  221. <th width="65">
  222. Created By
  223. </th>
  224. <th width="155">
  225. Created Time
  226. </th>
  227. </tr>
  228. </thead>
  229. <tbody>
  230. <tr v-for="roll in shipment.scan.rolls">
  231. <td> {{roll.finalRollNo}}</td>
  232. <td> {{roll.shippedBy}}</td>
  233. <td> {{roll.shippedDate | datetime}}</td>
  234. </tr>
  235. </tbody>
  236. </table>
  237. <div style="text-align: right;margin-top:20px;">
  238. <mt-button type="danger" @click="shipment.screen = 'box'">返回</mt-button>
  239. </div>
  240. </div>
  241. <div v-show="shipment.screen === 'print'">
  242. <div class="print-qr">
  243. <div class="box-summary">
  244. <qr :width="100" v-model="shipment.summary.boxNo"></qr>
  245. <div class="box-detail">
  246. <table>
  247. <tr>
  248. <td>Box ID:</td>
  249. <td>{{shipment.print.box.boxNo}}</td>
  250. </tr>
  251. <tr>
  252. <td>Box Qty:</td>
  253. <td>{{shipment.print.count}}</td>
  254. </tr>
  255. <tr>
  256. <td>IFS PN:</td>
  257. <td>{{shipment.print.partNo}}</td>
  258. </tr>
  259. <tr>
  260. <td>Customer PN:</td>
  261. <td>{{shipment.print.customerPartNo}}</td>
  262. </tr>
  263. </table>
  264. </div>
  265. </div>
  266. <div class="box-list">
  267. <table>
  268. <tr>
  269. <td>
  270. <div v-if="shipment.print.boxRoll0">
  271. <div class="r-title">R01</div>
  272. <qr :width="50" v-model="shipment.print.boxRoll0.finalRollNo"></qr>
  273. </div>
  274. </td>
  275. <td>
  276. <div v-if="shipment.print.boxRoll1">
  277. <div class="r-title">R02</div>
  278. <qr :width="50" v-model="shipment.print.boxRoll1.finalRollNo"></qr>
  279. </div>
  280. </td>
  281. <td>
  282. <div v-if="shipment.print.boxRoll2">
  283. <div class="r-title">R03</div>
  284. <qr :width="50" v-model="shipment.print.boxRoll2.finalRollNo"></qr>
  285. </div>
  286. </td>
  287. <td>
  288. <div v-if="shipment.print.boxRoll3">
  289. <div class="r-title">R04</div>
  290. <qr :width="50" v-model="shipment.print.boxRoll3.finalRollNo"></qr>
  291. </div>
  292. </td>
  293. <td>
  294. <div v-if="shipment.print.boxRoll4">
  295. <div class="r-title">R05</div>
  296. <qr :width="50" v-model="shipment.print.boxRoll4.finalRollNo"></qr>
  297. </div>
  298. </td>
  299. <td>
  300. <div v-if="shipment.print.boxRoll5">
  301. <div class="r-title">R06</div>
  302. <qr :width="50" v-model="shipment.print.boxRoll5.finalRollNo"></qr>
  303. </div>
  304. </td>
  305. </tr>
  306. <tr>
  307. <td>
  308. <div v-if="shipment.print.boxRoll6">
  309. <div class="r-title">R07</div>
  310. <qr :width="50" v-model="shipment.print.boxRoll6.finalRollNo"></qr>
  311. </div>
  312. </td>
  313. <td>
  314. <div v-if="shipment.print.boxRoll7">
  315. <div class="r-title">R08</div>
  316. <qr :width="50" v-model="shipment.print.boxRoll7.finalRollNo"></qr>
  317. </div>
  318. </td>
  319. <td>
  320. <div v-if="shipment.print.boxRoll8">
  321. <div class="r-title">R09</div>
  322. <qr :width="50" v-model="shipment.print.boxRoll8.finalRollNo"></qr>
  323. </div>
  324. </td>
  325. <td>
  326. <div v-if="shipment.print.boxRoll9">
  327. <div class="r-title">R10</div>
  328. <qr :width="50" v-model="shipment.print.boxRoll9.finalRollNo"></qr>
  329. </div>
  330. </td>
  331. <td>
  332. <div v-if="shipment.print.boxRoll10">
  333. <div class="r-title">R11</div>
  334. <qr :width="50" v-model="shipment.print.boxRoll10.finalRollNo"></qr>
  335. </div>
  336. </td>
  337. <td>
  338. <div v-if="shipment.print.boxRoll11">
  339. <div class="r-title">R12</div>
  340. <qr :width="50" v-model="shipment.print.boxRoll11.finalRollNo"></qr>
  341. </div>
  342. </td>
  343. </tr>
  344. </table>
  345. </div>
  346. </div>
  347. <div class="print-buttons">
  348. <mt-button type="primary" @click="printBox()">打印</mt-button>
  349. <mt-button type="danger" @click="shipment.screen = 'default'">返回</mt-button>
  350. </div>
  351. </div>
  352. </mt-tab-container-item>
  353. </#if>
  354. <#if currentUser.isAdmin || currentUser.authorities?contains("counting")>
  355. <script>var selectedTab = selectedTab || "counting";</script>
  356. <mt-tab-container-item id="counting">
  357. <div v-show="counting.screen === 'default'">
  358. <div class="input-group">
  359. <div class="input-left" style="width: calc(100% - 120px)">
  360. <mt-field label="" placeholder="盘点单号" v-model="counting.search.countingNo"></mt-field>
  361. </div>
  362. <div class="input-right">
  363. <mt-button @click="searchCountingNo">Query</mt-button>
  364. <mt-button @click="scanCounting">Scanning</mt-button>
  365. </div>
  366. <div class="clear"></div>
  367. </div>
  368. <div class="receive-summary" v-show="counting.summary.countingNo != ''">
  369. <div class="form">
  370. <span class="form-title">盘点单号: </span>
  371. <span class="form-value">{{ counting.summary.countingNo }}</span>
  372. </div>
  373. <div class="form">
  374. <span class="form-title">创建日期: </span>
  375. <span class="form-value">{{ counting.summary.createdDate | datetime}}</span>
  376. </div>
  377. <div class="form">
  378. <span class="form-title">创建人: </span>
  379. <span class="form-value">{{ counting.summary.createdBy }}</span>
  380. </div>
  381. <div class="form">
  382. <span class="form-title">Status: </span>
  383. <span class="form-value">{{ counting.summary.status }}</span>
  384. </div>
  385. </div>
  386. </div>
  387. <div v-show="counting.screen === 'scan'">
  388. <h1 class="title">盘点扫描 - {{counting.summary.countingNo}}</h1>
  389. <hr/>
  390. <a class="mint-cell mint-field is-nolabel">
  391. <div class="mint-cell-left"></div>
  392. <div class="mint-cell-wrapper">
  393. <div class="mint-cell-value">
  394. <input placeholder="请扫描盘点信息" type="text" v-model="counting.scan.info" class="mint-field-core" ref="countingScanRef" @keydown.enter.prevent="confirmCountingScan">
  395. <div class="mint-field-clear"><i class="mintui mintui-field-error"></i></div>
  396. <span class="mint-field-state is-default"><i class="mintui mintui-field-default"></i></span>
  397. <div class="mint-field-other"></div>
  398. </div>
  399. </div>
  400. </a>
  401. <br/><br/><br/>
  402. <h1 class="title">已扫描记录</h1>
  403. <hr/>
  404. <table class="table counting-act-table receive-scan-rolls">
  405. <thead>
  406. <tr>
  407. <th>
  408. Part
  409. </th>
  410. <th>
  411. Location
  412. </th>
  413. <th>
  414. LotBatch
  415. </th>
  416. <th>
  417. Counted
  418. </th>
  419. </tr>
  420. </thead>
  421. <tbody>
  422. <tr v-for="act in counting.scan.actData">
  423. <td> {{act.partNo}}</td>
  424. <td> {{act.locationNo}}</td>
  425. <td> {{act.lotBatchNo}}</td>
  426. <td> {{act.countedQty}}</td>
  427. </tr>
  428. </tbody>
  429. </table>
  430. <div style="text-align: right;margin-top:20px;">
  431. <mt-button type="danger" @click="counting.screen = 'default'">返回</mt-button>
  432. </div>
  433. </div>
  434. </mt-tab-container-item>
  435. </#if>
  436. </mt-tab-container>
  437. <mt-tabbar v-model="selectedTab">
  438. <#if currentUser.isAdmin || currentUser.authorities?contains("receiving")>
  439. <mt-tab-item id="receive">
  440. <img slot="icon" src="/img/in.svg"/>
  441. Receive
  442. </mt-tab-item>
  443. </#if>
  444. <#if currentUser.isAdmin || currentUser.authorities?contains("dispatch")>
  445. <mt-tab-item id="shipment">
  446. <img slot="icon" src="/img/out.svg"/>
  447. 发货
  448. </mt-tab-item>
  449. </#if>
  450. <#if currentUser.isAdmin || currentUser.authorities?contains("counting")>
  451. <mt-tab-item id="counting">
  452. <img slot="icon" src="/img/check.svg"/>
  453. Counting
  454. </mt-tab-item>
  455. </#if>
  456. </mt-tabbar>
  457. </div>
  458. </#if>
  459. </div>
  460. <form id="frmLogout" action="/logout" method="post"></form>
  461. </body>
  462. <script src="/qrcode/qrcode.min.js"></script>
  463. <script src="/vue/vue.js"></script>
  464. <script src="/vue/vue-resource.min.js"></script>
  465. <script src="/mint-ui/mint-ui.min.js"></script>
  466. <script src="/js/vue-qr.js"></script>
  467. <script src="/js/mobile.js"></script>
  468. </html>