@logwire/logwire-wms-pda-ui 1.1.16 → 1.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/README.md +134 -134
  2. package/package.json +69 -69
  3. package/src/api/common/Device.js +43 -43
  4. package/src/api/common/Dict.js +19 -19
  5. package/src/api/common/GetImgSrc.js +20 -20
  6. package/src/api/common/Language.js +31 -31
  7. package/src/api/common/Lot.js +20 -20
  8. package/src/api/common/Msg.js +26 -26
  9. package/src/api/common/Permissions.js +22 -22
  10. package/src/api/common/Print.js +65 -65
  11. package/src/api/common/Task.js +61 -61
  12. package/src/api/common/UUID.js +28 -28
  13. package/src/api/common/User.js +53 -53
  14. package/src/api/common/Waerhouse.js +28 -28
  15. package/src/api/common/barcode.js +165 -165
  16. package/src/api/common/common.js +33 -33
  17. package/src/api/common/index.js +37 -37
  18. package/src/api/inbound/index.js +6 -6
  19. package/src/api/inbound/quality.js +99 -99
  20. package/src/api/inbound/receive.js +119 -119
  21. package/src/api/inner/count/index.js +97 -97
  22. package/src/api/inner/disposeAbnormal/action.js +69 -69
  23. package/src/api/inner/disposeAbnormal/index.js +33 -33
  24. package/src/api/inner/materialApply/index.js +51 -51
  25. package/src/api/inner/move/abnormalMove.js +25 -25
  26. package/src/api/inner/move/lpnMove.js +25 -25
  27. package/src/api/inner/move/taskMove.js +57 -57
  28. package/src/api/inner/newProject/action.js +88 -88
  29. package/src/api/inner/newProject/index.js +17 -17
  30. package/src/api/inner/reportAbnormal/index.js +34 -34
  31. package/src/api/outbound/bale/checkBale/action.js +123 -114
  32. package/src/api/outbound/bale/checkBale/allCheck.js +25 -25
  33. package/src/api/outbound/bale/checkBale/index.js +52 -52
  34. package/src/api/outbound/delivery/action.js +148 -148
  35. package/src/api/outbound/delivery/addOrder.js +32 -32
  36. package/src/api/outbound/delivery/index.js +25 -25
  37. package/src/api/outbound/pick/alone.js +60 -60
  38. package/src/api/outbound/pick/box.js +42 -42
  39. package/src/api/outbound/pick/index.js +60 -60
  40. package/src/api/outbound/pick/lpn.js +42 -42
  41. package/src/api/outbound/pick/notAlone.js +33 -33
  42. package/src/api/outbound/pickMerge/index.js +69 -69
  43. package/src/api/outbound/sow/action.js +123 -123
  44. package/src/api/outbound/sow/index.js +24 -24
  45. package/src/api/outbound/summary/box.js +33 -33
  46. package/src/api/outbound/summary/lpn.js +23 -23
  47. package/src/api/receive/abnormal.js +34 -34
  48. package/src/api/receive/putaway.js +82 -82
  49. package/src/api/receive/randomMove.js +43 -43
  50. package/src/api/receive/receipt.js +25 -25
  51. package/src/assets/css/changeVant.less +22 -22
  52. package/src/assets/css/global.less +411 -411
  53. package/src/assets/css/index.less +4 -4
  54. package/src/assets/css/var.less +117 -117
  55. package/src/assets/css//345/205/250/345/261/200/346/240/267/345/274/217.md +31 -31
  56. package/src/components/module/InnerAbnormal/index.js +11 -11
  57. package/src/components/module/InnerAbnormal/index.vue +367 -347
  58. package/src/components/module/Login/index.js +11 -11
  59. package/src/components/module/Login/index.vue +328 -328
  60. package/src/components/module/Login//347/231/273/345/275/225/346/250/241/345/235/227.md +1 -1
  61. package/src/components/module/Lot/index.js +11 -11
  62. package/src/components/module/Lot/index.vue +181 -181
  63. package/src/components/module/Lot//346/211/271/346/254/241/345/261/236/346/200/247.md +2 -2
  64. package/src/components/module/LotLook/index.js +11 -11
  65. package/src/components/module/LotLook/index.vue +80 -80
  66. package/src/components/module/Menu/index.js +12 -12
  67. package/src/components/module/Menu/index.vue +118 -118
  68. package/src/components/module/Menu//350/217/234/345/215/225/346/240/217.md +1 -1
  69. package/src/components/module/MsgItem/index.js +11 -11
  70. package/src/components/module/MsgItem/index.vue +109 -109
  71. package/src/components/module/MsgItem//346/266/210/346/201/257/345/210/227/350/241/250/345/217/212/345/210/206/351/241/265/346/250/241/345/235/227.md +1 -1
  72. package/src/components/module/OnLine/index.js +11 -11
  73. package/src/components/module/OnLine/index.vue +195 -195
  74. package/src/components/module/OnLine//344/270/212/344/270/213/347/272/277/347/256/241/347/220/206/346/250/241/345/235/227.md +1 -1
  75. package/src/components/module/ReceiveAbnormal/index.js +11 -11
  76. package/src/components/module/ReceiveAbnormal/index.vue +865 -865
  77. package/src/components/module/ScanDataList/index.js +11 -11
  78. package/src/components/module/ScanDataList/index.vue +326 -326
  79. package/src/components/module/SkuInfo/index.js +11 -11
  80. package/src/components/module/SkuInfo/index.vue +65 -65
  81. package/src/components/module/SystemInfo/index.js +11 -11
  82. package/src/components/module/SystemInfo/index.vue +217 -217
  83. package/src/components/module/SystemInfo//347/263/273/347/273/237/344/277/241/346/201/257/344/270/216/344/270/212/347/272/277/347/212/266/346/200/201/346/250/241/345/235/227.md +1 -1
  84. package/src/components/module/index.js +42 -42
  85. package/src/components/page/common/Device/index.js +11 -11
  86. package/src/components/page/common/Device/index.vue +186 -186
  87. package/src/components/page/common/Device//350/256/276/345/244/207/347/256/241/347/220/206/351/241/265.md +1 -1
  88. package/src/components/page/common/Home/index.js +11 -11
  89. package/src/components/page/common/Home/index.vue +113 -113
  90. package/src/components/page/common/Home//344/270/273/351/241/265.md +1 -1
  91. package/src/components/page/common/Language/index.js +11 -11
  92. package/src/components/page/common/Language/index.vue +142 -142
  93. package/src/components/page/common/Language//350/257/255/350/250/200.md +1 -1
  94. package/src/components/page/common/Login/index.js +11 -11
  95. package/src/components/page/common/Login/index.vue +157 -157
  96. package/src/components/page/common/Login//347/231/273/345/275/225/351/241/265.md +1 -1
  97. package/src/components/page/common/Menu/index.js +11 -11
  98. package/src/components/page/common/Menu/index.vue +71 -71
  99. package/src/components/page/common/Menu//350/217/234/345/215/225/351/241/265.md +1 -1
  100. package/src/components/page/common/Msg/index.js +11 -11
  101. package/src/components/page/common/Msg/index.vue +152 -152
  102. package/src/components/page/common/Msg//346/266/210/346/201/257/351/241/265.md +1 -1
  103. package/src/components/page/common/My/index.js +11 -11
  104. package/src/components/page/common/My/index.vue +477 -477
  105. package/src/components/page/common/My//346/210/221/347/232/204/347/256/241/347/220/206/351/241/265.md +1 -1
  106. package/src/components/page/common/Print/index.js +11 -11
  107. package/src/components/page/common/Print/index.vue +314 -314
  108. package/src/components/page/common/Print//346/211/223/345/215/260/346/234/272/350/256/276/347/275/256/351/241/265.md +1 -1
  109. package/src/components/page/common/Task/index.js +11 -11
  110. package/src/components/page/common/Task/index.vue +699 -699
  111. package/src/components/page/common/Task//344/273/273/345/212/241/351/241/265.md +1 -1
  112. package/src/components/page/common/Warehouse/index.js +11 -11
  113. package/src/components/page/common/Warehouse/index.vue +213 -213
  114. package/src/components/page/common/Warehouse//344/273/223/345/272/223/351/200/211/346/213/251/351/241/265.md +1 -1
  115. package/src/components/page/common/index.js +39 -39
  116. package/src/components/page/count/components/CountBoard.vue +115 -115
  117. package/src/components/page/count/components/RandomCount.vue +153 -162
  118. package/src/components/page/count/index.js +21 -21
  119. package/src/components/page/count/inv/action/index.js +5 -5
  120. package/src/components/page/count/inv/action/index.vue +271 -271
  121. package/src/components/page/count/inv/index/index.js +5 -5
  122. package/src/components/page/count/inv/index/index.vue +189 -189
  123. package/src/components/page/count/loc/action/index.js +5 -5
  124. package/src/components/page/count/loc/action/index.vue +545 -545
  125. package/src/components/page/count/loc/index/index.js +5 -5
  126. package/src/components/page/count/loc/index/index.vue +184 -184
  127. package/src/components/page/inbound/components/AsnInfo.vue +180 -180
  128. package/src/components/page/inbound/components/AsnSkuInfo.vue +45 -45
  129. package/src/components/page/inbound/components/QualityCard.vue +230 -230
  130. package/src/components/page/inbound/components/QualityTaskInfo.vue +88 -88
  131. package/src/components/page/inbound/components/SnsList.vue +98 -98
  132. package/src/components/page/inbound/index.js +16 -10
  133. package/src/components/page/{inner → inbound}/newProject/action/index.js +13 -13
  134. package/src/components/page/{inner → inbound}/newProject/action/index.less +0 -0
  135. package/src/components/page/{inner → inbound}/newProject/action/index.vue +1468 -1463
  136. package/src/components/page/{inner → inbound}/newProject/index/index.js +13 -13
  137. package/src/components/page/{inner → inbound}/newProject/index/index.less +0 -0
  138. package/src/components/page/{inner → inbound}/newProject/index/index.vue +121 -121
  139. package/src/components/page/{inner → inbound}/newProject//346/226/260/345/223/201/351/205/215/347/275/256.md +0 -0
  140. package/src/components/page/inbound/receive/home/index.js +5 -5
  141. package/src/components/page/inbound/receive/home/index.vue +73 -73
  142. package/src/components/page/inbound/receive/index/index.js +5 -5
  143. package/src/components/page/inbound/receive/index/index.vue +89 -89
  144. package/src/components/page/inbound/receive/quality/LwInboundQualityExecutePage.vue +405 -397
  145. package/src/components/page/inbound/receive/quality/LwInboundQualityTaskListPage.vue +163 -166
  146. package/src/components/page/inbound/receive/quality/index.js +16 -16
  147. package/src/components/page/inbound/receive/receive-sku/LwInboundReceiveSkuAdvancePage.vue +320 -318
  148. package/src/components/page/inbound/receive/receive-sku/LwInboundReceiveSkuDirectPage.vue +407 -401
  149. package/src/components/page/inbound/receive/receive-sku/LwInboundReceiveSkuScanPage.vue +149 -149
  150. package/src/components/page/inbound/receive/receive-sku/index.js +19 -19
  151. package/src/components/page/index.js +33 -33
  152. package/src/components/page/inner/abnormalMove/index/index.js +11 -11
  153. package/src/components/page/inner/abnormalMove/index/index.vue +468 -468
  154. package/src/components/page/inner/disposeAbnormal/action/index.js +11 -11
  155. package/src/components/page/inner/disposeAbnormal/action/index.vue +524 -524
  156. package/src/components/page/inner/disposeAbnormal/components/abnInfo/index.vue +655 -655
  157. package/src/components/page/inner/disposeAbnormal/components/disposePopup/index.vue +229 -229
  158. package/src/components/page/inner/disposeAbnormal/components/listItem/index.vue +213 -213
  159. package/src/components/page/inner/disposeAbnormal/components/searchBar/index.vue +264 -264
  160. package/src/components/page/inner/disposeAbnormal/index/index.js +11 -11
  161. package/src/components/page/inner/disposeAbnormal/index/index.vue +237 -237
  162. package/src/components/page/inner/index.js +62 -66
  163. package/src/components/page/inner/lpnMove/action/index.js +11 -11
  164. package/src/components/page/inner/lpnMove/action/index.vue +222 -222
  165. package/src/components/page/inner/lpnMove/index/index.js +11 -11
  166. package/src/components/page/inner/lpnMove/index/index.vue +155 -155
  167. package/src/components/page/inner/materialApply/action/index.js +10 -10
  168. package/src/components/page/inner/materialApply/action/index.vue +563 -563
  169. package/src/components/page/inner/materialApply/generate/index.js +10 -10
  170. package/src/components/page/inner/materialApply/generate/index.vue +376 -376
  171. package/src/components/page/inner/movePutAway/index/index.js +11 -11
  172. package/src/components/page/inner/movePutAway/index/index.vue +363 -363
  173. package/src/components/page/inner/randomMove/components/Down/index.vue +470 -470
  174. package/src/components/page/inner/randomMove/components/Up/index.vue +523 -523
  175. package/src/components/page/inner/randomMove/index/index.js +11 -11
  176. package/src/components/page/inner/randomMove/index/index.vue +152 -152
  177. package/src/components/page/inner/reportAbnormal/action/index.js +11 -11
  178. package/src/components/page/inner/reportAbnormal/action/index.vue +246 -246
  179. package/src/components/page/inner/reportAbnormal/index/index.js +11 -11
  180. package/src/components/page/inner/reportAbnormal/index/index.vue +243 -243
  181. package/src/components/page/inner/taskMove/index/index.js +11 -11
  182. package/src/components/page/inner/taskMove/index/index.vue +1374 -1374
  183. package/src/components/page/outbound/bale/aloneBale/action/index.js +11 -11
  184. package/src/components/page/outbound/bale/aloneBale/action/index.vue +192 -192
  185. package/src/components/page/outbound/bale/aloneBale/index/index.js +11 -11
  186. package/src/components/page/outbound/bale/aloneBale/index/index.vue +86 -86
  187. package/src/components/page/outbound/bale/aloneBale/newBale/index.js +11 -11
  188. package/src/components/page/outbound/bale/aloneBale/newBale/index.vue +53 -53
  189. package/src/components/page/outbound/bale/checkBale/action/index.js +11 -11
  190. package/src/components/page/outbound/bale/checkBale/action/index.vue +1330 -1321
  191. package/src/components/page/outbound/bale/checkBale/allCheck/index.js +11 -11
  192. package/src/components/page/outbound/bale/checkBale/allCheck/index.vue +119 -119
  193. package/src/components/page/outbound/bale/checkBale/index/index.js +11 -11
  194. package/src/components/page/outbound/bale/checkBale/index/index.vue +259 -259
  195. package/src/components/page/outbound/bale/checkBale/newBale/index.js +11 -11
  196. package/src/components/page/outbound/bale/checkBale/newBale/index.vue +62 -62
  197. package/src/components/page/outbound/bale/components/allBlock/index.vue +97 -97
  198. package/src/components/page/outbound/bale/components/containerInfo/index.vue +237 -229
  199. package/src/components/page/outbound/bale/components/containerInfo//346/215/206/345/214/205/345/256/271/345/231/250/344/277/241/346/201/257.md +2 -2
  200. package/src/components/page/outbound/bale/components/containerSkuQty/index.vue +58 -58
  201. package/src/components/page/outbound/bale/components/mainPage/index.vue +620 -620
  202. package/src/components/page/outbound/bale/components/partBlock/index.vue +197 -197
  203. package/src/components/page/outbound/bale/components/planCollapse/index.vue +396 -396
  204. package/src/components/page/outbound/bale/components/storeInfo/index.vue +135 -135
  205. package/src/components/page/outbound/bale/components/storeInfo//345/256/242/346/210/267/346/215/206/345/214/205/344/277/241/346/201/257.md +1 -1
  206. package/src/components/page/outbound/bale/components/storeInfoSkuList/index.vue +121 -121
  207. package/src/components/page/outbound/delivery/action/index.js +11 -11
  208. package/src/components/page/outbound/delivery/action/index.vue +646 -646
  209. package/src/components/page/outbound/delivery/addOrder/index.js +11 -11
  210. package/src/components/page/outbound/delivery/addOrder/index.vue +281 -281
  211. package/src/components/page/outbound/delivery/components/boxItem/index.vue +118 -118
  212. package/src/components/page/outbound/delivery/components/orderContent/index.vue +143 -143
  213. package/src/components/page/outbound/delivery/components/orderContentTitle/index.vue +239 -239
  214. package/src/components/page/outbound/delivery/components/soAndLpnItem/index.vue +152 -152
  215. package/src/components/page/outbound/delivery/index/index.js +11 -11
  216. package/src/components/page/outbound/delivery/index/index.vue +154 -154
  217. package/src/components/page/outbound/index.js +94 -94
  218. package/src/components/page/outbound/pick/alone/index.js +11 -11
  219. package/src/components/page/outbound/pick/alone/index.vue +497 -497
  220. package/src/components/page/outbound/pick/box/index.js +11 -11
  221. package/src/components/page/outbound/pick/box/index.vue +363 -363
  222. package/src/components/page/outbound/pick/components/dataLookAndChange/index.vue +748 -748
  223. package/src/components/page/outbound/pick/components/skuLocationInfo/index.vue +208 -208
  224. package/src/components/page/outbound/pick/components/splitPutDown/index.vue +208 -208
  225. package/src/components/page/outbound/pick/index/index.js +11 -11
  226. package/src/components/page/outbound/pick/index/index.vue +624 -624
  227. package/src/components/page/outbound/pick/lpn/index.js +11 -11
  228. package/src/components/page/outbound/pick/lpn/index.vue +305 -305
  229. package/src/components/page/outbound/pick/mixin/all.js +100 -100
  230. package/src/components/page/outbound/pick/mixin/aloneAndNotAlone.js +132 -132
  231. package/src/components/page/outbound/pick/notAlone/index.js +11 -11
  232. package/src/components/page/outbound/pick/notAlone/index.vue +524 -524
  233. package/src/components/page/outbound/pickMerge/action/index.js +11 -11
  234. package/src/components/page/outbound/pickMerge/action/index.vue +543 -543
  235. package/src/components/page/outbound/pickMerge/components/containerInfo/index.vue +89 -89
  236. package/src/components/page/outbound/pickMerge/components/finishPopup/index.vue +88 -88
  237. package/src/components/page/outbound/pickMerge/components/skuInfo/index.vue +132 -132
  238. package/src/components/page/outbound/pickMerge/content/index.js +11 -11
  239. package/src/components/page/outbound/pickMerge/content/index.vue +170 -170
  240. package/src/components/page/outbound/pickMerge/index/index.js +11 -11
  241. package/src/components/page/outbound/pickMerge/index/index.vue +77 -77
  242. package/src/components/page/outbound/sow/action/index.js +11 -11
  243. package/src/components/page/outbound/sow/action/index.vue +1420 -1420
  244. package/src/components/page/outbound/sow/components/sowLocationList/index.vue +80 -80
  245. package/src/components/page/outbound/sow/components/waitSowCollapse/index.vue +105 -105
  246. package/src/components/page/outbound/sow/index/index.js +11 -11
  247. package/src/components/page/outbound/sow/index/index.vue +374 -374
  248. package/src/components/page/outbound/summary/box/index/index.js +11 -11
  249. package/src/components/page/outbound/summary/box/index/index.vue +645 -645
  250. package/src/components/page/outbound/summary/lpn/action/index.js +12 -12
  251. package/src/components/page/outbound/summary/lpn/action/index.vue +253 -253
  252. package/src/components/page/outbound/summary/lpn/index/index.js +12 -12
  253. package/src/components/page/outbound/summary/lpn/index/index.vue +70 -70
  254. package/src/components/page/receive/abnormal/action/index.js +11 -11
  255. package/src/components/page/receive/abnormal/action/index.vue +45 -45
  256. package/src/components/page/receive/abnormal/index/index.js +11 -11
  257. package/src/components/page/receive/abnormal/index/index.vue +73 -73
  258. package/src/components/page/receive/index.js +36 -36
  259. package/src/components/page/receive/putaway/components/SkuInfo/index.vue +247 -247
  260. package/src/components/page/receive/putaway/components/SkuPutAwayInfo/index.vue +203 -203
  261. package/src/components/page/receive/putaway/components/TaskInfo/index.vue +216 -216
  262. package/src/components/page/receive/putaway/index/index.js +11 -11
  263. package/src/components/page/receive/putaway/index/index.vue +288 -288
  264. package/src/components/page/receive/putaway/lpnAction/index.js +11 -11
  265. package/src/components/page/receive/putaway/lpnAction/index.vue +332 -332
  266. package/src/components/page/receive/putaway/skuAction/index.js +11 -11
  267. package/src/components/page/receive/putaway/skuAction/index.vue +741 -741
  268. package/src/components/page/receive/receipt/action/index.js +11 -11
  269. package/src/components/page/receive/receipt/action/index.vue +260 -260
  270. package/src/components/page/receive/receipt/index/index.js +11 -11
  271. package/src/components/page/receive/receipt/index/index.vue +124 -124
  272. package/src/components/ui/BottomBar/index.js +5 -5
  273. package/src/components/ui/BottomBar/index.vue +72 -72
  274. package/src/components/ui/BottomBarBtnHidden/index.js +11 -11
  275. package/src/components/ui/BottomBarBtnHidden/index.vue +91 -91
  276. package/src/components/ui/Button/index.js +5 -5
  277. package/src/components/ui/Button/index.vue +183 -183
  278. package/src/components/ui/CarPlate/index.js +11 -11
  279. package/src/components/ui/CarPlate/index.vue +378 -378
  280. package/src/components/ui/CarPlate//350/275/246/347/211/214/345/217/267.md +1 -1
  281. package/src/components/ui/Cell/index.js +5 -5
  282. package/src/components/ui/Cell/index.vue +259 -259
  283. package/src/components/ui/CellPopupDate/index.js +11 -11
  284. package/src/components/ui/CellPopupDate/index.vue +167 -167
  285. package/src/components/ui/CellPopupDate//345/215/225/345/205/203/350/241/214/345/212/240/346/227/266/351/227/264/351/200/211/346/213/251/345/231/250.md +1 -1
  286. package/src/components/ui/CellPopupRadio/index.js +11 -11
  287. package/src/components/ui/CellPopupRadio/index.vue +136 -136
  288. package/src/components/ui/CellPopupRadio//350/241/214/345/212/240/345/215/225/351/200/211/345/274/271/345/207/272/346/241/206.md +1 -1
  289. package/src/components/ui/CutCard/index.js +11 -11
  290. package/src/components/ui/CutCard/index.vue +132 -132
  291. package/src/components/ui/CutCard//345/215/241/347/211/207/351/241/265/351/235/242/345/210/207/346/215/242.md +1 -1
  292. package/src/components/ui/DataLookBg/index.js +11 -11
  293. package/src/components/ui/DataLookBg/index.vue +104 -104
  294. package/src/components/ui/DataLookBg//346/225/260/346/215/256/347/234/213/346/235/277/350/203/214/346/231/257/345/233/276.md +1 -1
  295. package/src/components/ui/ErrorMsg/index.js +59 -59
  296. package/src/components/ui/ErrorMsg/index.vue +141 -141
  297. package/src/components/ui/Form/index.js +5 -5
  298. package/src/components/ui/Form/index.vue +36 -36
  299. package/src/components/ui/ImgLook/index.js +5 -5
  300. package/src/components/ui/ImgLook/index.vue +96 -96
  301. package/src/components/ui/ImgUpload/index.js +12 -12
  302. package/src/components/ui/ImgUpload/index.vue +120 -120
  303. package/src/components/ui/Input/index.js +5 -5
  304. package/src/components/ui/Input/index.vue +546 -546
  305. package/src/components/ui/Input//350/276/223/345/205/245/346/241/206.md +1 -1
  306. package/src/components/ui/Loading/index.js +49 -49
  307. package/src/components/ui/Loading/index.vue +61 -61
  308. package/src/components/ui/MenuItem/index.js +5 -5
  309. package/src/components/ui/MenuItem/index.vue +170 -170
  310. package/src/components/ui/NavBar/index.js +5 -5
  311. package/src/components/ui/NavBar/index.vue +143 -143
  312. package/src/components/ui/NavBar//351/241/266/351/203/250/345/257/274/350/210/252/346/240/217.md +1 -1
  313. package/src/components/ui/NotData/index.js +5 -5
  314. package/src/components/ui/NotData/index.vue +75 -75
  315. package/src/components/ui/Pages/index.js +5 -5
  316. package/src/components/ui/Pages/index.vue +186 -186
  317. package/src/components/ui/Popup/index.js +5 -5
  318. package/src/components/ui/Popup/index.vue +245 -245
  319. package/src/components/ui/PopupCheckbox/index.js +5 -5
  320. package/src/components/ui/PopupCheckbox/index.vue +207 -207
  321. package/src/components/ui/PopupRadio/index.js +5 -5
  322. package/src/components/ui/PopupRadio/index.vue +124 -124
  323. package/src/components/ui/TabBar/index.js +11 -11
  324. package/src/components/ui/TabBar/index.vue +132 -132
  325. package/src/components/ui/TabBar//345/272/225/351/203/250/345/257/274/350/210/252/346/240/217.md +1 -1
  326. package/src/components/ui/Table/index.js +5 -5
  327. package/src/components/ui/Table/index.vue +213 -213
  328. package/src/components/ui/Tag/index.js +5 -5
  329. package/src/components/ui/Tag/index.vue +142 -142
  330. package/src/components/ui/TitleValueCell/index.js +11 -11
  331. package/src/components/ui/TitleValueCell/index.vue +61 -61
  332. package/src/components/ui/index.js +84 -84
  333. package/src/directive/Permissions.js +35 -35
  334. package/src/directive/index.js +12 -12
  335. package/src/index.js +67 -67
  336. package/src/router/index.js +405 -405
  337. package/src/router/menu.js +367 -367
  338. package/src/test/file/index.js +11 -11
  339. package/src/test/file/index.vue +25 -25
  340. package/src/utils/ApiUtils.js +48 -48
  341. package/src/utils/AppBack.js +44 -44
  342. package/src/utils/Axios.js +160 -160
  343. package/src/utils/BarcodeResolve.js +281 -281
  344. package/src/utils/DateTime.js +219 -219
  345. package/src/utils/DeepCopy.js +61 -61
  346. package/src/utils/Dict.js +73 -73
  347. package/src/utils/GetImgSrc.js +53 -53
  348. package/src/utils/Init.js +12 -12
  349. package/src/utils/Language.js +59 -59
  350. package/src/utils/LocalStorage.js +30 -30
  351. package/src/utils/Permissions.js +51 -51
  352. package/src/utils/Print.js +179 -179
  353. package/src/utils/README.md +2 -2
  354. package/src/utils/RouteInit.js +14 -14
  355. package/src/utils/ScanRule.js +150 -150
  356. package/src/utils/SetColor.js +22 -22
  357. package/src/utils/TabBar.js +30 -30
  358. package/src/utils/Tip.js +26 -26
  359. package/src/utils/Toast.js +41 -41
  360. package/src/utils/UUID.js +33 -33
  361. package/src/utils/Warehouse.js +26 -26
  362. package/src/utils/index.js +63 -63
  363. package/src/utils/windowGlobalData.js +88 -88
  364. package/src/views/common/home/index.vue +67 -67
  365. package/src/views/common/init/index.vue +124 -124
  366. package/src/views/common/login/index.vue +23 -23
  367. package/src/views/common/menu/menuOne.vue +36 -36
  368. package/src/views/common/menu/menuTwo.vue +33 -33
  369. package/src/views/common/my/device.vue +23 -23
  370. package/src/views/common/my/index.vue +23 -23
  371. package/src/views/common/my/language.vue +23 -23
  372. package/src/views/common/my/msg.vue +23 -23
  373. package/src/views/common/my/print.vue +23 -23
  374. package/src/views/common/my/warehouse.vue +25 -25
  375. package/src/views/common/task/index.vue +23 -23
  376. package/src/views/count/index.vue +87 -87
  377. package/src/views/count/inv/action.vue +12 -12
  378. package/src/views/count/inv/index.vue +12 -12
  379. package/src/views/count/loc/action.vue +12 -12
  380. package/src/views/count/loc/index.vue +12 -12
  381. package/src/views/{inner → inbound}/newProject/action.vue +23 -23
  382. package/src/views/{inner → inbound}/newProject/index.vue +23 -23
  383. package/src/views/inbound/quality/InboundQualityExecuteView.vue +11 -11
  384. package/src/views/inbound/quality/InboundQualityTaskListView.vue +11 -11
  385. package/src/views/inbound/receive/home.vue +14 -14
  386. package/src/views/inbound/receive/index.vue +13 -13
  387. package/src/views/inbound/receive/sku/InboundReceiveSkuAdvanceView.vue +13 -13
  388. package/src/views/inbound/receive/sku/InboundReceiveSkuDirectView.vue +13 -13
  389. package/src/views/inbound/receive/sku/InboundReceiveSkuScanView.vue +13 -13
  390. package/src/views/inner/abnormalMove/index.vue +23 -23
  391. package/src/views/inner/disposeAbnormal/action.vue +23 -23
  392. package/src/views/inner/disposeAbnormal/index.vue +23 -23
  393. package/src/views/inner/lpnMove/action.vue +23 -23
  394. package/src/views/inner/lpnMove/index.vue +23 -23
  395. package/src/views/inner/materialApply/action.vue +22 -22
  396. package/src/views/inner/materialApply/generate.vue +22 -22
  397. package/src/views/inner/movePutAway/index.vue +22 -22
  398. package/src/views/inner/randomMove/index.vue +23 -23
  399. package/src/views/inner/reportAbnormal/action.vue +23 -23
  400. package/src/views/inner/reportAbnormal/index.vue +23 -23
  401. package/src/views/inner/taskMove/index.vue +23 -23
  402. package/src/views/outbound/aloneBale/action.vue +23 -23
  403. package/src/views/outbound/aloneBale/index.vue +23 -23
  404. package/src/views/outbound/aloneBale/newBale.vue +23 -23
  405. package/src/views/outbound/bale/action.vue +23 -23
  406. package/src/views/outbound/bale/allCheck.vue +23 -23
  407. package/src/views/outbound/bale/index.vue +23 -23
  408. package/src/views/outbound/bale/newBale.vue +23 -23
  409. package/src/views/outbound/delivery/action.vue +23 -23
  410. package/src/views/outbound/delivery/addOrder.vue +23 -23
  411. package/src/views/outbound/delivery/index.vue +23 -23
  412. package/src/views/outbound/pick/aloneAction.vue +23 -23
  413. package/src/views/outbound/pick/boxAction.vue +23 -23
  414. package/src/views/outbound/pick/index.vue +23 -23
  415. package/src/views/outbound/pick/lpnAction.vue +23 -23
  416. package/src/views/outbound/pick/notAloneAction.vue +23 -23
  417. package/src/views/outbound/pickMerge/action.vue +23 -23
  418. package/src/views/outbound/pickMerge/content.vue +23 -23
  419. package/src/views/outbound/pickMerge/index.vue +23 -23
  420. package/src/views/outbound/sow/action.vue +23 -23
  421. package/src/views/outbound/sow/index.vue +23 -23
  422. package/src/views/outbound/summary/box/index.vue +23 -23
  423. package/src/views/outbound/summary/lpn/action.vue +23 -23
  424. package/src/views/outbound/summary/lpn/index.vue +23 -23
  425. package/src/views/receive/abnormal/action.vue +23 -23
  426. package/src/views/receive/abnormal/index.vue +24 -24
  427. package/src/views/receive/putaway/index.vue +23 -23
  428. package/src/views/receive/putaway/lpnAction.vue +23 -23
  429. package/src/views/receive/putaway/skuAction.vue +23 -23
  430. package/src/views/receive/receipt/action.vue +25 -25
  431. package/src/views/receive/receipt/index.vue +25 -25
  432. package/dist/logwire-wms-pda-ui.js +0 -7
@@ -1,1420 +1,1420 @@
1
- <!--
2
- 播种分拣 - 执行页
3
- @author: 张文
4
- @date: 2022-06-27
5
- -->
6
- <template>
7
- <div>
8
-
9
- <lw-nav-bar :title="$lwLanguage.get('','播种分拣')"/>
10
-
11
- <div v-if="Object.keys(sowData).length" class="lw-global-page-box">
12
-
13
- <div
14
- class="lw-global-model-box"
15
- style="border-radius: 10px 10px 0 0"
16
- >
17
-
18
- <div class="lw-global-flex-between lw-global-row">
19
-
20
- <div
21
- style="flex: 1"
22
- class="lw-global-flex-start"
23
- >
24
- <div class="lw-global-title">
25
- {{ $lwLanguage.get('','播种墙编号') }}
26
- </div>
27
- <div class="lw-global-value-bold">{{ sowData.sowWallCode }}</div>
28
- </div>
29
-
30
- <lw-tag
31
- round
32
- plain
33
- type="danger"
34
- >{{ $lwLanguage.get('','播种中') }}</lw-tag>
35
-
36
- </div>
37
-
38
- <lw-title-value-cell
39
- :title="$lwLanguage.get('','当前批次')"
40
- :value="sowData.sowLot"
41
- val-bold
42
- />
43
-
44
- <van-progress
45
- style="margin: 15px 0 5px 0"
46
- stroke-width="8"
47
- :percentage="sowData.sowRate ||0"
48
- color="linear-gradient(90deg, #FF8E8F 0%, #C5000A 100%)"
49
- />
50
-
51
- </div>
52
- <lw-data-look-bg
53
- style="margin-bottom: 10px"
54
- type="bottom"
55
- click-style
56
- @click="openWaitSowPopup"
57
- >
58
- <div>
59
- <div>{{ sowData.containerCount }}</div>
60
- <div
61
- class="lw-data-look-bg-title"
62
- >{{ $lwLanguage.get('','托盘数') }}</div>
63
- </div>
64
-
65
- <div>
66
- <div>{{ sowData.waitSowQty }}</div>
67
- <div
68
- class="lw-data-look-bg-title"
69
- >{{ $lwLanguage.get('','待播种') }}</div>
70
- </div>
71
- <div>
72
- <div>{{ sowData.sowQty }}</div>
73
- <div
74
- class="lw-data-look-bg-title"
75
- >{{ $lwLanguage.get('','已播种') }}</div>
76
- </div>
77
-
78
- <div class="lw-data-last-item">
79
- <div>{{ sowData.abnormalQty }}</div>
80
- <div
81
- class="lw-data-look-bg-title"
82
- >{{ $lwLanguage.get('','异常') }}</div>
83
- </div>
84
- </lw-data-look-bg>
85
-
86
- <!-- 绑定周转箱的提示信息 -->
87
- <div
88
- class="lw-global-model-box border-2"
89
- style="text-align: center;padding: 20px 10px;color: #aaa"
90
- v-if="sowData.needBindContainer"
91
- >{{ $lwLanguage.get('','请绑定周转箱到播种墙') }}</div>
92
- <!-- 已经绑定周转箱 -->
93
- <div
94
- v-else
95
- class="lw-global-model-box border-2"
96
- style="padding-top: 3px"
97
- >
98
-
99
- <!-- 扫描拣选容器号获取播种类型 -->
100
- <lw-input
101
- :title="$lwLanguage.get('','拣选容器号')"
102
- v-model="startSow.pickContainer.value"
103
- :get-focus.sync="startSow.pickContainer.focus"
104
- :disabled="startSow.start"
105
- rule-key="container"
106
- @confirm="pickConfirm"
107
- >
108
-
109
- <template #button>
110
- <lw-button
111
- v-if="!startSow.start"
112
- round
113
- mini
114
- @click="pickConfirm"
115
- >{{ $lwLanguage.get('','确认') }}</lw-button>
116
- <div v-else>
117
- <span class="lw-global-value-bold-red">{{ startSow.data.sowQty }}</span>
118
- <span class="lw-global-value-bold"> / {{ startSow.data.pickQty }}</span>
119
- </div>
120
- </template>
121
-
122
- </lw-input>
123
-
124
- <!-- 获取到播种类型 -->
125
- <template v-if="startSow.start">
126
-
127
- <div
128
- style="margin-top: 10px"
129
- class="lw-global-flex-between"
130
- >
131
- <div style="flex: 1">
132
- <!-- 播种方式 -->
133
- <lw-tag
134
- type="danger"
135
- size="large"
136
- round
137
- plain
138
- >{{ sowMethod.method }}</lw-tag>
139
-
140
- <!-- 批量播种输入的商品号 -->
141
- <lw-input
142
- v-if="sowMethod.sku"
143
- :title="sowMethod.inputTitle"
144
- v-model="skuSow.sku.value"
145
- :get-focus.sync="skuSow.sku.focus"
146
- auto-clear-val
147
- rule-key="batchSku"
148
- @confirm="skuSowConfirm"
149
- />
150
-
151
- <!-- 逐件扫描的序列号 -->
152
- <lw-input
153
- v-else
154
- :title="sowMethod.inputTitle"
155
- v-model="snSow.value"
156
- :get-focus.sync="snSow.focus"
157
- auto-clear-val
158
- rule-key="sn"
159
- @confirm="snSowConfirm"
160
- />
161
- </div>
162
-
163
- <!-- 播种位指示 -->
164
- <div
165
- v-if="Object.keys(nowSowSkuInfo.data).length"
166
- :class="[
167
- 'lw-global-flex-center',
168
- 'lw-outbound-sow-code',
169
- nowSowSkuInfo.animation ? 'lw-global-animation-breath' : ''
170
- ]"
171
- >{{ nowSowSkuInfo.data.sowWallLineCode }}</div>
172
- </div>
173
-
174
- <!-- 播种信息展示 -->
175
- <template v-if="Object.keys(nowSowSkuInfo.data).length">
176
-
177
- <div class="lw-global-row">
178
- <div class="lw-global-value-bold">{{ nowSowSkuInfo.data.skuCode }}</div>
179
- <div class="lw-global-title">{{ nowSowSkuInfo.data.skuName }}</div>
180
- </div>
181
-
182
- <lw-title-value-cell
183
- :title="$lwLanguage.get('','最小销售量')"
184
- :value="nowSowSkuInfo.data.minSellQty"
185
- val-bold
186
- />
187
-
188
- <div class="lw-global-row lw-global-flex-between">
189
-
190
- <lw-title-value-cell
191
- :title="$lwLanguage.get('','待播种')"
192
- :value="nowSowSkuInfo.data.waitSowQty"
193
- val-red
194
- val-bold
195
- :is-row="false"
196
- />
197
-
198
-
199
- <div class="lw-global-flex-between">
200
-
201
- <div class="lw-global-title">
202
- {{ $lwLanguage.get('','已播种/总量') }}
203
- </div>
204
- <div class="lw-global-value">
205
- <span class="lw-global-value-bold-red">{{ nowSowSkuInfo.data.sowQty }}</span>
206
- <span class="lw-global-value-bold"> / {{ nowSowSkuInfo.data.totalQty }}</span>
207
- </div>
208
-
209
- </div>
210
-
211
- </div>
212
-
213
-
214
- <!-- 批量播种数量输入框 -->
215
- <template v-if="sowMethod.sku">
216
- <lw-input
217
- :title="$lwLanguage.get('','当前扫描量')"
218
- v-model="skuSow.qty.value"
219
- :get-focus.sync="skuSow.qty.focus"
220
- type="digit"
221
- @confirm="skuSowQtyConfirm"
222
- />
223
-
224
- <div
225
- class="lw-global-flex-between lw-global-row-end"
226
- style="padding-bottom: 0"
227
- >
228
- <lw-button
229
- type="last"
230
- plain
231
- block
232
- mini
233
- round
234
- @click="skuSowRepeatScan"
235
- >{{ $lwLanguage.get('','重新扫描') }}</lw-button>
236
-
237
- <lw-button
238
- style="margin-left: 10px"
239
- block
240
- mini
241
- round
242
- @click="skuSowQtyConfirm"
243
- >{{ $lwLanguage.get('','确认播种') }}</lw-button>
244
- </div>
245
- </template>
246
-
247
-
248
- <!-- 逐件扫描播种 -->
249
- <template v-else>
250
- <lw-title-value-cell
251
- :title="$lwLanguage.get('','当前序列号')"
252
- :value="snSow.scanData.sn"
253
- val-bold
254
- />
255
- <lw-input
256
- :title="$lwLanguage.get('','当前扫描量')"
257
- v-model="snSow.scanData.qty"
258
- :disabled="true"
259
- >
260
-
261
- <template #button>
262
-
263
- <lw-button
264
- round
265
- mini
266
- @click="snSowClearNow"
267
- >{{ $lwLanguage.get('','取消本次扫描') }}</lw-button>
268
-
269
- </template>
270
-
271
- </lw-input>
272
- </template>
273
-
274
- </template>
275
-
276
- </template>
277
-
278
- </div>
279
-
280
- <!-- 拣选容器折叠框 -->
281
- <div class="lw-global-model-box lw-global-collapse-box">
282
- <van-collapse
283
- v-model="pickCollapse"
284
- :border="false"
285
- >
286
- <van-collapse-item name="pick">
287
-
288
- <template #title>
289
- <div class="lw-global-flex-between">
290
-
291
- <div>{{ $lwLanguage.get('', '拣选容器') }}</div>
292
- <div class="lw-global-value-bold-red">
293
- {{ sowData.containerList.length || 0 }}
294
- {{ $lwLanguage.get('', '行') }}
295
- </div>
296
-
297
- </div>
298
- </template>
299
-
300
- <div
301
- v-for="(i,k) in sowData.containerList"
302
- :key="k"
303
- class="lw-global-row lw-global-flex-between"
304
- >
305
-
306
- <div
307
- style="flex-shrink: 0"
308
- class="lw-global-title"
309
- >
310
- {{ $lwLanguage.get('', '拣选容器号') }}
311
- </div>
312
-
313
- <div
314
- style="flex: 1"
315
- class="lw-global-flex-between lw-global-value-bold"
316
- >
317
-
318
- <div style="flex: 1">{{ i.pickContainer }}</div>
319
- <div style="flex-shrink: 0">
320
- <span class="lw-global-value-bold-red">{{ i.sowQty }}</span>
321
- /
322
- {{ i.pickQty }}
323
- </div>
324
-
325
- </div>
326
-
327
- </div>
328
-
329
- </van-collapse-item>
330
- </van-collapse>
331
- </div>
332
-
333
- <!-- 播种位列表折叠框 -->
334
- <div class="lw-global-model-box lw-global-collapse-box">
335
- <van-collapse
336
- v-model="sowCollapse"
337
- :border="false"
338
- >
339
- <van-collapse-item name="sow">
340
-
341
- <template #title>
342
- <div class="lw-global-flex-between">
343
-
344
- <div>{{ $lwLanguage.get('', '播种位列表') }}</div>
345
- <div class="lw-global-value-bold-red">
346
- {{ sowData.sowWallLineList.length || 0 }}
347
- {{ $lwLanguage.get('', '行') }}
348
- </div>
349
-
350
- </div>
351
- </template>
352
- <sow-location-list :sow-list="sowData.sowWallLineList"/>
353
-
354
- </van-collapse-item>
355
- </van-collapse>
356
- </div>
357
-
358
- </div>
359
-
360
- <lw-bottom-bar-btn-hidden :btn-list="bottomBtnList"/>
361
-
362
- <!-- 绑定周转箱 -->
363
- <lw-popup
364
- :title="$lwLanguage.get('','绑定周转箱')"
365
- v-model="bindContainerPopup.show"
366
- @closed="bindContainerPopupOff"
367
- >
368
-
369
- <template v-if="sowData.sowWallLineList">
370
- <lw-title-value-cell
371
- :title="$lwLanguage.get('','播种墙')"
372
- :value="sowData.sowWallCode"
373
- val-bold
374
- />
375
-
376
- <lw-title-value-cell
377
- :title="$lwLanguage.get('','当前正在绑定播种位')"
378
- :value="sowData.sowWallLineList[bindContainerPopup.index].sowWallLineCode"
379
- val-bold
380
- val-red
381
- val-size="16px"
382
- />
383
-
384
- <lw-input
385
- :title="$lwLanguage.get('','周转箱号')"
386
- v-model="bindContainerPopup.container.value"
387
- :get-focus.sync="bindContainerPopup.container.focus"
388
- rule-key="container"
389
- @confirm="sowLocationBindContainerConfirm"
390
- >
391
-
392
- <template #button>
393
- <lw-button
394
- mini
395
- round
396
- @click="sowLocationBindContainerConfirm"
397
- >{{ $lwLanguage.get('','绑定') }}</lw-button>
398
- </template>
399
-
400
- </lw-input>
401
-
402
- <div
403
- class="lw-global-flex-between lw-global-row lw-global-click-style"
404
- v-for="(i,k) in sowData.sowWallLineList"
405
- :key="k"
406
- @click="selectSowLocation(k)"
407
- >
408
-
409
- <div class="lw-global-value-bold">{{ i.sowWallLineCode }}</div>
410
- <div class="lw-global-value-bold">{{ i.sowPositionContainer }}</div>
411
-
412
- </div>
413
- </template>
414
-
415
- <template #button>
416
- <lw-button @click="repeatBind">
417
- {{ $lwLanguage.get('','重新绑定') }}
418
- </lw-button>
419
- </template>
420
-
421
- </lw-popup>
422
-
423
- <!-- 缺货完成 -->
424
- <lw-popup
425
- :title="$lwLanguage.get('','缺货完成')"
426
- v-model="littlePopup.show"
427
- >
428
-
429
- <div style="margin-bottom: 10px" class="lw-global-flex-between">
430
-
431
- <lw-title-value-cell
432
- :title="$lwLanguage.get('','播种墙')"
433
- :value="sowData.sowWallCode"
434
- val-bold
435
- :is-row="false"
436
- />
437
-
438
- <lw-title-value-cell
439
- :title="$lwLanguage.get('','总缺货量')"
440
- :value="littlePopup.data.waitSowQty"
441
- val-bold
442
- val-red
443
- :is-row="false"
444
- />
445
-
446
- </div>
447
-
448
- <sow-location-list :sow-list="littlePopup.data.sowWallLineList"/>
449
-
450
- <template #button>
451
- <lw-button @click="littleConfirm">
452
- {{ $lwLanguage.get('','确认缺货完成') }}
453
- </lw-button>
454
- </template>
455
- </lw-popup>
456
-
457
- <!-- 播种位播种完成 -->
458
- <lw-popup
459
- :title="$lwLanguage.get('','播种位播种完成')"
460
- v-model="sowLocationOverPopup.show"
461
- @closed="getData"
462
- >
463
-
464
- <lw-title-value-cell
465
- :title="$lwLanguage.get('','播种墙')"
466
- :value="sowData.sowWallCode"
467
- val-bold
468
- />
469
-
470
- <lw-title-value-cell
471
- :title="$lwLanguage.get('','播种位')"
472
- :value="sowLocationOverPopup.data.sowWallLineCode"
473
- val-bold
474
- />
475
-
476
- <lw-title-value-cell
477
- :title="$lwLanguage.get('','周转箱号')"
478
- :value="sowLocationOverPopup.data.sowPositionContainer"
479
- val-bold
480
- />
481
-
482
- <lw-title-value-cell
483
- :title="$lwLanguage.get('','商品数量')"
484
- :value="sowLocationOverPopup.data.sowWallLineQty"
485
- val-bold
486
- val-red
487
- />
488
-
489
- <div
490
- class="lw-global-row-end"
491
- style="text-align: center;padding-bottom: 0"
492
- >
493
- <lw-tag
494
- plain
495
- size="large"
496
- >{{ $lwLanguage.get('','已播种完成') }}</lw-tag>
497
- </div>
498
-
499
- </lw-popup>
500
-
501
- <!-- 播种批次完成 -->
502
- <lw-popup
503
- :title="$lwLanguage.get('','播种批次完成')"
504
- v-model="sowLotOverPopup.show"
505
- @closed="goBack"
506
- >
507
-
508
- <lw-title-value-cell
509
- :title="$lwLanguage.get('','播种墙')"
510
- :value="sowData.sowWallCode"
511
- val-bold
512
- />
513
-
514
- <div class="lw-global-row" style="text-align: center">
515
- <lw-tag
516
- plain
517
- size="large"
518
- >{{ $lwLanguage.get('','已播种完成') }}</lw-tag>
519
- </div>
520
-
521
- <sow-location-list :sow-list="sowLotOverPopup.data.sowWallLineList"/>
522
-
523
- </lw-popup>
524
-
525
- <!-- 播满换箱 -->
526
- <lw-popup
527
- :title="$lwLanguage.get('','播满换箱')"
528
- v-model="sowFullPopup.show"
529
- @closed="sowFullOff"
530
- >
531
-
532
- <lw-input
533
- :title="$lwLanguage.get('','已满容器号')"
534
- v-model="sowFullPopup.fullContainer.value"
535
- :get-focus.sync="sowFullPopup.fullContainer.focus"
536
- rule-key="fullContainer"
537
- @confirm="sowFullContainerConfirm"
538
- />
539
-
540
- <div class="lw-global-row lw-global-flex-between">
541
-
542
- <lw-title-value-cell
543
- :title="$lwLanguage.get('','播种位')"
544
- :value="sowFullPopup.sowLocationInfo.sowWallLineCode"
545
- val-bold
546
- :is-row="false"
547
- />
548
-
549
- <lw-title-value-cell
550
- :title="$lwLanguage.get('','已播种量')"
551
- :value="sowFullPopup.sowLocationInfo.sowQty"
552
- val-bold
553
- val-red
554
- :is-row="false"
555
- />
556
-
557
- </div>
558
-
559
- <lw-input
560
- :title="$lwLanguage.get('','新容器号')"
561
- v-model="sowFullPopup.newContainer.value"
562
- :get-focus.sync="sowFullPopup.newContainer.focus"
563
- rule-key="newContainer"
564
- @confirm="sowFullNewContainerConfirm"
565
- />
566
-
567
- <div
568
- class="lw-global-value"
569
- style="margin-top: 8px;text-align: center"
570
- >{{$lwLanguage.get(
571
- '',
572
- '拿下已播满容器号!因为没有播种完成,还需要扫码新空容器号,继续播种接货'
573
- )}}</div>
574
-
575
- <template #button>
576
- <lw-button @click="sowFullNewContainerConfirm">
577
- {{ $lwLanguage.get('','确认') }}
578
- </lw-button>
579
- </template>
580
-
581
- </lw-popup>
582
-
583
- <!-- 查看未播种数 -->
584
- <lw-popup
585
- :title="$lwLanguage.get('','未播种商品')"
586
- v-model="waitSowSkuPopup.show"
587
- @closed="waitSowSkuPopup.showCom=false"
588
- >
589
-
590
- <template v-if="waitSowSkuPopup.showCom && waitSowSkuPopup.data.length">
591
- <wait-sow-collapse
592
- v-for="(i,k) in waitSowSkuPopup.data"
593
- :key="k"
594
- :item="i"
595
- @abn="abnClick"
596
- />
597
- </template>
598
- <lw-not-data v-else/>
599
-
600
- </lw-popup>
601
-
602
- <!-- 异常弹框 -->
603
- <lw-popup
604
- :title="$lwLanguage.get('','播种分拣异常上报')"
605
- v-model="abnPopup.show"
606
- @closed="abnPopup.showCom=false"
607
- >
608
-
609
- <lw-inner-abnormal-module
610
- ref="abnormal"
611
- v-if="abnPopup.showCom"
612
- :location="abnPopup.data.locationCode"
613
- :sku-code="abnPopup.data.skuCode"
614
- :sku-name="abnPopup.data.skuName"
615
- :qty="abnPopup.data.waitSowQty"
616
- :type="$lwLanguage.get('','出库')"
617
- :ab-type="$lwLanguage.get('','播种分拣')"
618
- />
619
-
620
- <template #button>
621
- <lw-button @click="abnConfirm">
622
- {{ $lwLanguage.get('','上报') }}
623
- </lw-button>
624
- </template>
625
-
626
- </lw-popup>
627
-
628
- </div>
629
- </template>
630
-
631
- <script>
632
-
633
- import sowLocationList from './../components/sowLocationList/index.vue'
634
- import waitSowCollapse from './../components/waitSowCollapse/index.vue'
635
- import {
636
- projectWmsBindSowPositionContainer,
637
- projectWmsSowBatchSubmit,
638
- projectWmsSowChangePositionContainer,
639
- projectWmsSowComputeSkuSowPosition,
640
- projectWmsSowContainerData,
641
- projectWmsSowLotQueryUnfinishContainer,
642
- projectWmsSowQuerySowLotData,
643
- projectWmsSowQueryStockoutData,
644
- projectWmsSowRebindContainer,
645
- projectWmsSowSingleCancel,
646
- projectWmsSowSingleSubmit,
647
- projectWmsSowStockoutFinish,
648
- projectWmsSowSubmitAbnormal
649
- } from "../../../../../api/outbound/sow/action";
650
-
651
- export default {
652
- name: "lwOutboundSowActionPage",
653
- components:{
654
- sowLocationList,
655
- waitSowCollapse
656
- },
657
- data() {
658
- return {
659
-
660
- // 底部按钮列表
661
- bottomBtnAll:{
662
- bindContainer:{
663
- text: this.$lwLanguage.get('','绑定容器号'),
664
- click: this.bindContainerClick
665
- },
666
- littleOver:{
667
- text: this.$lwLanguage.get('','缺货完成'),
668
- click: this.littleClick
669
- },
670
- abn:{
671
- text: this.$lwLanguage.get('','商品异常'),
672
- click: this.openWaitSowPopup
673
- },
674
- cutContainer:{
675
- text: this.$lwLanguage.get('','切换容器'),
676
- click: this.cutPickContainer
677
- },
678
- sowFull:{
679
- text: this.$lwLanguage.get('','播满换箱'),
680
- click: this.openSowFullPopup
681
- },
682
- },
683
-
684
- // 拣选容器折叠
685
- pickCollapse:['pick'],
686
-
687
- // 播种位折叠
688
- sowCollapse:['sow'],
689
-
690
- // 播种数据
691
- sowData:{},
692
-
693
- // 播种方式
694
- sowMethod:{},
695
-
696
- // 当前播种商品信息
697
- nowSowSkuInfo:{
698
- data:{},
699
- animation: false,
700
- },
701
-
702
- // 扫描播种
703
- startSow:{
704
- start: false,
705
- pickContainer:{
706
- value:'',
707
- focus: false
708
- },
709
- data:{},
710
- },
711
-
712
- // 批量播种商品
713
- skuSow:{
714
- sku:{
715
- value: '',
716
- focus: false
717
- },
718
-
719
- qty:{
720
- value:'',
721
- focus: false,
722
- disabled: false
723
- }
724
- },
725
-
726
- // 逐件播种
727
- snSow:{
728
- value: '',
729
- focus: false,
730
- scanData:{}
731
- },
732
-
733
- // 绑定周转箱弹框
734
- bindContainerPopup:{
735
- show: false,
736
- container:{
737
- value:'',
738
- focus: true
739
- },
740
- index: 0,
741
- sowLocation:''
742
- },
743
-
744
- // 缺货完成弹框
745
- littlePopup:{
746
- show: false,
747
- data:{}
748
- },
749
-
750
- // 播种位播种完成弹框
751
- sowLocationOverPopup:{
752
- show: false,
753
- data:{}
754
- },
755
-
756
- // 播种批次完成弹框
757
- sowLotOverPopup:{
758
- show: false,
759
- data:{}
760
- },
761
-
762
- // 播满换箱弹框
763
- sowFullPopup:{
764
- show: false,
765
- fullContainer:{
766
- value: '',
767
- focus: false
768
- },
769
- sowLocationInfo:{},
770
- newContainer:{
771
- value:'',
772
- focus: false
773
- }
774
- },
775
-
776
- // 未播种商品弹框
777
- waitSowSkuPopup:{
778
- show: false,
779
- showCom: false,
780
- data:{}
781
- },
782
-
783
- // 异常上报
784
- abnPopup:{
785
- show: false,
786
- showCom: false,
787
- data:{}
788
- }
789
- }
790
- },
791
- computed:{
792
- // 底部按钮显示列表
793
- bottomBtnList(){
794
- // 是否需要绑定容器号
795
- if (this.sowData.needBindContainer){
796
- return [
797
- this.bottomBtnAll.bindContainer,
798
- this.bottomBtnAll.littleOver
799
- ]
800
- }
801
-
802
- // 是否已经扫描了拣选容器
803
- if (!this.startSow.start){
804
- return [
805
- this.bottomBtnAll.littleOver,
806
- this.bottomBtnAll.abn
807
- ]
808
- }
809
-
810
- return [
811
- this.bottomBtnAll.cutContainer,
812
- this.bottomBtnAll.littleOver,
813
- this.bottomBtnAll.sowFull,
814
- this.bottomBtnAll.abn,
815
- ]
816
- },
817
- },
818
- mounted() {
819
- this.getData()
820
- },
821
- methods: {
822
- // 获取数据
823
- getData(isSow=false, isSn=false){
824
- return new Promise((pres, err)=>{
825
- const qutry = this.$route.query
826
- projectWmsSowQuerySowLotData({
827
- sowWallId: qutry.lwSowWallId,
828
- sowWallCode: qutry.lwSowWallCode,
829
- sowLot:qutry.lwSowLot,
830
- }).then(res=>{
831
- this.sowData = res
832
-
833
- // 判断当前是否存在正在播种的拣选容器
834
- if (this.startSow.start){
835
-
836
- // 过滤找到当前播种的拣选容器
837
- const list = res.containerList.filter(item=>{
838
- return item.pickContainer === this.startSow.pickContainer.value
839
- })
840
-
841
- let over = false
842
-
843
- // 判断当前拣选容器是否存在新返回的数据中,如果存在就替换数据
844
- if (list.length){
845
- const data = list[0]
846
- this.startSow.data.pickQty = data.pickQty
847
- this.startSow.data.sowQty = data.sowQty
848
-
849
- over = data.sowQty === data.pickQty
850
- over && !isSn && this.cutPickContainer()
851
-
852
- }else {
853
- !isSn && this.cutPickContainer()
854
- }
855
-
856
- const msg = over ?
857
- this.$lwLanguage.get('','当前容器已播种完成') :
858
- this.$lwLanguage.get('','播种成功')
859
-
860
- isSow && this.$lwToast.success(msg)
861
- }
862
- pres()
863
- }).catch(()=>{
864
- this.goBack()
865
- err()
866
- })
867
- })
868
- },
869
-
870
- // 绑定周转箱
871
- bindContainerClick(){
872
- this.selectFistSowBind(true)
873
- this.bindContainerPopup.show = true
874
- },
875
- // 找到第一个需要绑定容器的播种位
876
- selectFistSowBind(need){
877
- const wait = this.sowData.sowWallLineList
878
-
879
- // 找到第一个需要绑定的播种位
880
- for (let i=0;i<wait.length;i++){
881
- if (wait[i].needBindContainer){
882
- this.bindContainerPopup.index = i
883
- this.bindContainerPopup.container.focus = true
884
- return
885
- }
886
- }
887
-
888
- if (need) {
889
- this.bindContainerPopup.index = 0
890
- this.bindContainerPopup.container.focus = true
891
- return;
892
- }
893
-
894
- this.$lwToast.success(
895
- this.$lwLanguage.get('','播种位已全部绑定周转箱')
896
- )
897
- this.bindContainerPopup.show = false
898
- },
899
- // 播种位绑定周转箱确认
900
- sowLocationBindContainerConfirm(){
901
-
902
- if (!this.bindContainerPopup.container.value){
903
- this.bindContainerPopup.container.focus = true
904
- this.$lwShowErrorMsg(
905
- this.$lwLanguage.get('','容器号不能为空')
906
- )
907
- return
908
- }
909
-
910
- const item = this.sowData.sowWallLineList[this.bindContainerPopup.index]
911
- projectWmsBindSowPositionContainer({
912
- sowWallId: this.sowData.sowWallId,
913
- sowWallLineId: item.sowWallLineId,
914
- sowWallLineCode: item.sowWallLineCode,
915
- bindContainer: this.bindContainerPopup.container.value
916
- }).then(()=>{
917
- item.sowPositionContainer = this.bindContainerPopup.container.value
918
- item.needBindContainer = false
919
- this.bindContainerPopup.container.value = ''
920
- this.selectFistSowBind()
921
- }).catch(()=>{
922
- this.bindContainerPopup.container.focus = true
923
- this.bindContainerPopup.container.value = ''
924
- })
925
- },
926
- // 点击播种位位选择绑定容器
927
- selectSowLocation(index){
928
- this.bindContainerPopup.container.value = ''
929
- this.bindContainerPopup.container.focus = true
930
- this.bindContainerPopup.index = index
931
- },
932
- // 重新绑定
933
- repeatBind(){
934
- this.$dialog.confirm({
935
- title: this.$lwLanguage.get('','警告'),
936
- message: this.$lwLanguage.get('','当前播种位绑定的容器将会被全部清空')
937
- }).then(()=>{
938
- projectWmsSowRebindContainer({
939
- sowWallId: this.sowData.sowWallId,
940
- sowWallCode: this.sowData.sowWallCode,
941
- sowLot: this.sowData.sowLot,
942
- }).then(()=>{
943
- this.$lwToast.success(
944
- this.$lwLanguage.get('','操作成功')
945
- )
946
- this.getData().then(()=>this.selectFistSowBind(true))
947
- })
948
- }).catch(()=>{})
949
- },
950
- // 绑定周转箱弹出框关闭
951
- bindContainerPopupOff(){
952
- this.bindContainerPopup.container.value=''
953
- this.getData()
954
- },
955
-
956
-
957
- // 缺货完成按钮点击
958
- littleClick(){
959
- projectWmsSowQueryStockoutData({
960
- sowWallId: this.sowData.sowWallId,
961
- sowLot: this.sowData.sowLot,
962
- }).then(res=>{
963
- this.littlePopup.data = res
964
- this.littlePopup.show = true
965
- })
966
- },
967
- // 确认缺货完成
968
- littleConfirm(){
969
- projectWmsSowStockoutFinish({
970
- sowWallId: this.sowData.sowWallId,
971
- sowLot: this.sowData.sowLot
972
- }).then(()=>{
973
- this.$lwToast.success(
974
- this.$lwLanguage.get('','缺货完成')
975
- )
976
- history.go(-1)
977
- })
978
- },
979
-
980
- // 拣选容器号确认
981
- pickConfirm(){
982
- if (!this.startSow.pickContainer.value){
983
- this.startSow.pickContainer.focus = true
984
- this.$lwShowErrorMsg(
985
- this.$lwLanguage.get('','拣选容器号不能为空')
986
- )
987
- return
988
- }
989
-
990
- const list = this.sowData.containerList.filter(item=>{
991
- return item.pickContainer === this.startSow.pickContainer.value
992
- })
993
-
994
- if(!list.length){
995
- this.startSow.pickContainer.focus = true
996
- this.$lwShowErrorMsg(
997
- this.$lwLanguage.get('','扫描容器号不在当前播种批次内')
998
- )
999
- this.startSow.pickContainer.value = ''
1000
- return
1001
- }
1002
-
1003
- projectWmsSowContainerData({
1004
- sowWallId: this.sowData.sowWallId,
1005
- sowWallCode: this.sowData.sowWallCode,
1006
- sowLot: this.sowData.sowLot,
1007
- pickContainer: this.startSow.pickContainer.value
1008
- }).then(res=>{
1009
-
1010
- // 判断是否是批量播种
1011
- if (res.sowMethod === 'BATCH') {
1012
- this.sowMethod = {
1013
- method: this.$lwLanguage.get('', '批量播种'),
1014
- inputTitle: this.$lwLanguage.get('', '商品条码'),
1015
- sku: true
1016
- }
1017
- this.skuSow.sku.focus = true
1018
- } else {
1019
- this.sowMethod = {
1020
- method: this.$lwLanguage.get('', '逐件扫描播种'),
1021
- inputTitle: this.$lwLanguage.get('', '商品序列号'),
1022
- sku: false
1023
- }
1024
- this.snSow.focus = true
1025
- }
1026
-
1027
- this.startSow.data = res
1028
- this.startSow.start = true
1029
- })
1030
- },
1031
- // 切换拣选容器号
1032
- cutPickContainer(){
1033
- this.startSow.pickContainer.value = ''
1034
- this.startSow.pickContainer.focus = true
1035
- this.startSow.start = false
1036
- this.startSow.data = {}
1037
- this.clearSkuSowData()
1038
- },
1039
-
1040
- // 商品合法性校验
1041
- skuCodeCheck(skuCode){
1042
-
1043
- if (!skuCode){
1044
- this.skuSow.sku.focus = true
1045
- this.$lwShowErrorMsg(
1046
- this.$lwLanguage.get('','商品号不能为空')
1047
- )
1048
- return {
1049
- success: false
1050
- }
1051
- }
1052
-
1053
- const skuList = this.startSow.data.skuList.filter(item=>{
1054
- return item.skuCode === skuCode
1055
- })
1056
-
1057
- if(!skuList.length){
1058
- this.skuSow.sku.focus = true
1059
- this.$lwShowErrorMsg(
1060
- this.$lwLanguage.get('','当前商品不在拣选容器内')
1061
- )
1062
- return {
1063
- success: false
1064
- }
1065
- }
1066
-
1067
- return {
1068
- success: true,
1069
- skuList
1070
- }
1071
- },
1072
-
1073
- // 设置当前播种的商品数据
1074
- setNowSowSkuInfo(res){
1075
- this.nowSowSkuInfo.data = res
1076
- this.nowSowSkuInfo.animation = true
1077
- this.$lwAppPower.speak(this.nowSowSkuInfo.data.sowWallLineCode)
1078
- },
1079
-
1080
- // 清除当前播种数据
1081
- clearSkuSowData(){
1082
- this.nowSowSkuInfo.data = {}
1083
- this.snSow.value = ''
1084
- this.skuSow.qty.value = ''
1085
- this.nowSowSkuInfo.data = {}
1086
- this.nowSowSkuInfo.animation = false
1087
- },
1088
-
1089
- // 批量播种商品扫描完成
1090
- skuSowConfirm(val, data){
1091
- const {skuCode, qty} = data.data
1092
-
1093
- this.nowSowSkuInfo.animation = false
1094
-
1095
- const {success, skuList} = this.skuCodeCheck(skuCode)
1096
- if(!success) return
1097
-
1098
- const oldSkuCode = this.nowSowSkuInfo.data.skuCode
1099
- if (oldSkuCode && oldSkuCode !== skuCode){
1100
- this.skuSow.sku.focus = true
1101
- this.$lwShowErrorMsg(
1102
- this.$lwLanguage.get('','当前商品与正在播种商品不一致')
1103
- )
1104
- return
1105
- }
1106
-
1107
- projectWmsSowComputeSkuSowPosition({
1108
- sowWallId: this.sowData.sowWallId,
1109
- sowWallCode: this.sowData.sowWallCode,
1110
- sowLot: this.sowData.sowLot,
1111
- pickContainer: this.startSow.pickContainer.value,
1112
- ownerId: skuList[0].ownerId,
1113
- skuId: skuList[0].skuId,
1114
- skuCode: skuList[0].skuCode,
1115
- }).then(res=>{
1116
-
1117
- const oldSowWall = this.nowSowSkuInfo.data.sowWallLineCode
1118
- if (oldSowWall && oldSowWall !== res.sowWallLineCode){
1119
- this.skuSow.sku.focus = true
1120
- this.$lwShowErrorMsg(
1121
- this.$lwLanguage.get('','当前商品与正在播种商品不在同一播种位,不能播种!')
1122
- )
1123
- return
1124
- }
1125
-
1126
- this.setNowSowSkuInfo(res)
1127
-
1128
- const total = Number(this.skuSow.qty.value || 0) + Number(qty || 0)
1129
- this.skuSow.qty.value = total
1130
-
1131
- // 如果播种量等于待播种量就自动提交
1132
- if (total === Number(res.waitSowQty || 0)){
1133
- this.skuSowQtyConfirm()
1134
- return
1135
- }
1136
-
1137
- this.skuSow.sku.focus = true
1138
- })
1139
- },
1140
- // 扫描数量确定
1141
- skuSowQtyConfirm(){
1142
-
1143
- const qty = Number(this.skuSow.qty.value || 0)
1144
- if (!qty){
1145
- this.skuSow.qty.focus = true
1146
- this.$lwShowErrorMsg(
1147
- this.$lwLanguage.get('','播种量不能为空,且应当是大于0的整数')
1148
- )
1149
- return
1150
- }
1151
- if (qty > Number(this.nowSowSkuInfo.data.waitSowQty ||0)){
1152
- this.skuSow.qty.focus = true
1153
- this.$lwShowErrorMsg(
1154
- this.$lwLanguage.get('','播种量不能大于待播种量')
1155
- )
1156
- this.skuSow.qty.value = ''
1157
- return
1158
- }
1159
-
1160
- projectWmsSowBatchSubmit({
1161
- sowWallId: this.sowData.sowWallId,
1162
- sowWallCode: this.sowData.sowWallCode,
1163
- sowLot: this.sowData.sowLot,
1164
- sowWallLineId: this.nowSowSkuInfo.data.sowWallLineId,
1165
- sowWallLineCode: this.nowSowSkuInfo.data.sowWallLineCode,
1166
- sowPositionContainer: this.nowSowSkuInfo.data.sowPositionContainer,
1167
- ownerId: this.nowSowSkuInfo.data.ownerId,
1168
- skuId: this.nowSowSkuInfo.data.skuId,
1169
- pickContainer: this.startSow.pickContainer.value,
1170
- currentSowQty: qty
1171
- }).then(res=>{
1172
-
1173
- this.sowOver(res)
1174
- })
1175
- },
1176
- // 批量扫描 - 重新扫描
1177
- skuSowRepeatScan(){
1178
- this.clearSkuSowData()
1179
- this.skuSow.sku.focus = true
1180
- },
1181
-
1182
- // 逐件扫描序列号确认
1183
- snSowConfirm(val,data){
1184
- const {skuCode, sn, qty} = data.data
1185
- this.nowSowSkuInfo.animation = false
1186
-
1187
- const {success, skuList} = this.skuCodeCheck(skuCode)
1188
- if(!success) return
1189
-
1190
- if (!sn){
1191
- this.skuSow.sku.focus = true
1192
- this.$lwShowErrorMsg(
1193
- this.$lwLanguage.get('','序列号不能为空')
1194
- )
1195
- return
1196
- }
1197
-
1198
- const scanData = {
1199
- sn,
1200
- qty: qty || skuList[0].minSellQty,
1201
- ownerId: skuList[0].ownerId,
1202
- skuId: skuList[0].skuId,
1203
- skuCode: skuList[0].skuCode,
1204
- sowWallId: this.sowData.sowWallId,
1205
- sowLot: this.sowData.sowLot,
1206
- pickContainer: this.startSow.pickContainer.value,
1207
- sowWallCode: this.sowData.sowWallCode,
1208
- }
1209
-
1210
- projectWmsSowSingleSubmit({
1211
- ...scanData,
1212
- currentSowQty: scanData.qty
1213
- }).then(res=>{
1214
-
1215
- this.setNowSowSkuInfo(res)
1216
-
1217
- this.snSow.scanData = {
1218
- ...scanData,
1219
- sowWallLineId: res.sowWallLineId,
1220
- sowWallLineCode: res.sowWallLineCode,
1221
- sowPositionContainer: res.sowPositionContainer,
1222
- }
1223
-
1224
- this.sowOver(res, true)
1225
- })
1226
- },
1227
- // 逐件扫描 - 取消本次扫描
1228
- snSowClearNow(){
1229
- projectWmsSowSingleCancel({
1230
- ...this.snSow.scanData,
1231
- cancelQty: this.snSow.scanData.qty
1232
- }).then(()=>{
1233
- this.$lwToast.success(
1234
- this.$lwLanguage.get('','已取消')
1235
- )
1236
-
1237
- this.clearSkuSowData()
1238
- this.getData(false, true)
1239
- this.snSow.focus = true
1240
-
1241
- })
1242
- },
1243
-
1244
- // 校验当前播种是否完成
1245
- checkSowOver(res){
1246
- // 当前批次是否完成
1247
- if (res.sowLotFinish){
1248
- this.sowLotOverPopup.data = res
1249
- this.sowLotOverPopup.show = true
1250
- return true
1251
- }
1252
-
1253
- // 当前播种位是否完成
1254
- if (res.sowWallLineFinish){
1255
- this.sowLocationOverPopup.data = res
1256
- this.sowLocationOverPopup.show = true
1257
- return true
1258
- }
1259
-
1260
- return false
1261
- },
1262
- // 播种完成
1263
- sowOver(res, isSn=false){
1264
-
1265
- !isSn && this.clearSkuSowData()
1266
-
1267
- !isSn && this.cutPickContainer()
1268
-
1269
- if(this.checkSowOver(res)) return
1270
-
1271
- this.getData(true, isSn)
1272
- this.startSow.pickContainer.focus = true
1273
- },
1274
-
1275
- // 返回上一页
1276
- goBack(){
1277
- history.go(-1)
1278
- },
1279
-
1280
- // 播满换箱弹框 - 打开弹框
1281
- openSowFullPopup(){
1282
- this.sowFullPopup.show = true
1283
- this.sowFullPopup.fullContainer.focus = true
1284
- },
1285
- // 播满换箱弹框 - 已满容器确认
1286
- sowFullContainerConfirm(){
1287
-
1288
- if(!this.sowFullPopup.fullContainer.value){
1289
- this.sowFullPopup.fullContainer.focus = true
1290
- this.$lwShowErrorMsg(
1291
- this.$lwLanguage.get('','已满容器不能为空')
1292
- )
1293
- return
1294
- }
1295
-
1296
- const list = this.sowData.sowWallLineList.filter(item=>{
1297
- return item.sowPositionContainer === this.sowFullPopup.fullContainer.value
1298
- })
1299
-
1300
- if(!list.length){
1301
- this.sowFullPopup.fullContainer.focus = true
1302
- this.$lwShowErrorMsg(
1303
- this.$lwLanguage.get('','没有找到已满的容器号')
1304
- )
1305
- this.sowFullPopup.fullContainer.value = ''
1306
- return
1307
- }
1308
-
1309
- this.sowFullPopup.sowLocationInfo = list[0]
1310
- this.sowFullPopup.newContainer.focus = true
1311
-
1312
- },
1313
- // 播满换箱弹框 - 新容器确定
1314
- sowFullNewContainerConfirm(){
1315
-
1316
- if (!this.sowFullPopup.sowLocationInfo.sowWallLineCode){
1317
- this.sowFullPopup.fullContainer.focus = true
1318
- this.$lwShowErrorMsg(
1319
- this.$lwLanguage.get('','请输入已满容器,并获取容器对应的播种位信息')
1320
- )
1321
- return
1322
- }
1323
-
1324
- if (!this.sowFullPopup.newContainer.value){
1325
- this.sowFullPopup.newContainer.focus = true
1326
- this.$lwShowErrorMsg(
1327
- this.$lwLanguage.get('','新容器不能为空')
1328
- )
1329
- return
1330
- }
1331
-
1332
- projectWmsSowChangePositionContainer({
1333
- sowWallId: this.sowData.sowWallId,
1334
- sowLot: this.sowData.sowLot,
1335
- sowWallLineId: this.sowFullPopup.sowLocationInfo.sowWallLineId,
1336
- sowWallLineCode: this.sowFullPopup.sowLocationInfo.sowWallLineCode,
1337
- sowPositionContainer: this.sowFullPopup.fullContainer.value,
1338
- bindContainer: this.sowFullPopup.newContainer.value,
1339
- }).then(()=>{
1340
- this.$lwToast.success(
1341
- this.$lwLanguage.get('','已更换')
1342
- )
1343
- this.getData()
1344
- this.sowFullPopup.show = false
1345
- })
1346
- },
1347
- // 播满换箱弹框 - 关闭
1348
- sowFullOff(){
1349
- this.sowFullPopup.fullContainer.value = ''
1350
- this.sowFullPopup.newContainer.value = ''
1351
- this.sowFullPopup.sowLocationInfo = {}
1352
- },
1353
-
1354
- // 查看未播种商品弹框
1355
- openWaitSowPopup(){
1356
- projectWmsSowLotQueryUnfinishContainer({
1357
- sowWallId: this.sowData.sowWallId,
1358
- sowWallCode: this.sowData.sowWallCode,
1359
- sowLot: this.sowData.sowLot,
1360
- }).then(res=>{
1361
- this.waitSowSkuPopup.data = res
1362
- this.waitSowSkuPopup.showCom = true
1363
- this.waitSowSkuPopup.show = true
1364
- })
1365
- },
1366
-
1367
- // 异常弹框打开
1368
- abnClick(data){
1369
- this.abnPopup.data = data
1370
- this.abnPopup.showCom = true
1371
- this.abnPopup.show = true
1372
- this.waitSowSkuPopup.show = false
1373
- },
1374
- // 确认异常上报
1375
- abnConfirm(){
1376
- const {success, data} = this.$refs.abnormal.getAbnormalData()
1377
-
1378
- if (!success) return
1379
-
1380
- projectWmsSowSubmitAbnormal({
1381
- ...data,
1382
- ...this.abnPopup.data,
1383
- sowLot: this.sowData.sowLot,
1384
- sowWallId: this.sowData.sowWallId,
1385
- sowWallCode: this.sowData.sowWallCode,
1386
- }).then(res=>{
1387
- this.$lwToast.success(
1388
- this.$lwLanguage.get('','异常上报成功')
1389
- )
1390
- this.abnPopup.show = false
1391
-
1392
- if (this.checkSowOver(res)) return
1393
-
1394
- this.getData()
1395
- })
1396
- }
1397
- }
1398
- }
1399
- </script>
1400
-
1401
- <style scoped lang="less">
1402
- @import "./../../../../../assets/css/var.less";
1403
-
1404
- .border-2{
1405
- border: solid 2px @baseColor;
1406
- }
1407
-
1408
- .lw-outbound-sow-code{
1409
- flex-shrink: 0;
1410
- padding: 5px;
1411
- width: 50px;
1412
- height: 50px;
1413
- background: #ccc;
1414
- color: @baseColor;
1415
- font-size: 24px;
1416
- font-weight: bold;
1417
- border-radius: 8px;
1418
- }
1419
-
1420
- </style>
1
+ <!--
2
+ 播种分拣 - 执行页
3
+ @author: 张文
4
+ @date: 2022-06-27
5
+ -->
6
+ <template>
7
+ <div>
8
+
9
+ <lw-nav-bar :title="$lwLanguage.get('','播种分拣')"/>
10
+
11
+ <div v-if="Object.keys(sowData).length" class="lw-global-page-box">
12
+
13
+ <div
14
+ class="lw-global-model-box"
15
+ style="border-radius: 10px 10px 0 0"
16
+ >
17
+
18
+ <div class="lw-global-flex-between lw-global-row">
19
+
20
+ <div
21
+ style="flex: 1"
22
+ class="lw-global-flex-start"
23
+ >
24
+ <div class="lw-global-title">
25
+ {{ $lwLanguage.get('','播种墙编号') }}
26
+ </div>
27
+ <div class="lw-global-value-bold">{{ sowData.sowWallCode }}</div>
28
+ </div>
29
+
30
+ <lw-tag
31
+ round
32
+ plain
33
+ type="danger"
34
+ >{{ $lwLanguage.get('','播种中') }}</lw-tag>
35
+
36
+ </div>
37
+
38
+ <lw-title-value-cell
39
+ :title="$lwLanguage.get('','当前批次')"
40
+ :value="sowData.sowLot"
41
+ val-bold
42
+ />
43
+
44
+ <van-progress
45
+ style="margin: 15px 0 5px 0"
46
+ stroke-width="8"
47
+ :percentage="sowData.sowRate ||0"
48
+ color="linear-gradient(90deg, #FF8E8F 0%, #C5000A 100%)"
49
+ />
50
+
51
+ </div>
52
+ <lw-data-look-bg
53
+ style="margin-bottom: 10px"
54
+ type="bottom"
55
+ click-style
56
+ @click="openWaitSowPopup"
57
+ >
58
+ <div>
59
+ <div>{{ sowData.containerCount }}</div>
60
+ <div
61
+ class="lw-data-look-bg-title"
62
+ >{{ $lwLanguage.get('','托盘数') }}</div>
63
+ </div>
64
+
65
+ <div>
66
+ <div>{{ sowData.waitSowQty }}</div>
67
+ <div
68
+ class="lw-data-look-bg-title"
69
+ >{{ $lwLanguage.get('','待播种') }}</div>
70
+ </div>
71
+ <div>
72
+ <div>{{ sowData.sowQty }}</div>
73
+ <div
74
+ class="lw-data-look-bg-title"
75
+ >{{ $lwLanguage.get('','已播种') }}</div>
76
+ </div>
77
+
78
+ <div class="lw-data-last-item">
79
+ <div>{{ sowData.abnormalQty }}</div>
80
+ <div
81
+ class="lw-data-look-bg-title"
82
+ >{{ $lwLanguage.get('','异常') }}</div>
83
+ </div>
84
+ </lw-data-look-bg>
85
+
86
+ <!-- 绑定周转箱的提示信息 -->
87
+ <div
88
+ class="lw-global-model-box border-2"
89
+ style="text-align: center;padding: 20px 10px;color: #aaa"
90
+ v-if="sowData.needBindContainer"
91
+ >{{ $lwLanguage.get('','请绑定周转箱到播种墙') }}</div>
92
+ <!-- 已经绑定周转箱 -->
93
+ <div
94
+ v-else
95
+ class="lw-global-model-box border-2"
96
+ style="padding-top: 3px"
97
+ >
98
+
99
+ <!-- 扫描拣选容器号获取播种类型 -->
100
+ <lw-input
101
+ :title="$lwLanguage.get('','拣选容器号')"
102
+ v-model="startSow.pickContainer.value"
103
+ :get-focus.sync="startSow.pickContainer.focus"
104
+ :disabled="startSow.start"
105
+ rule-key="container"
106
+ @confirm="pickConfirm"
107
+ >
108
+
109
+ <template #button>
110
+ <lw-button
111
+ v-if="!startSow.start"
112
+ round
113
+ mini
114
+ @click="pickConfirm"
115
+ >{{ $lwLanguage.get('','确认') }}</lw-button>
116
+ <div v-else>
117
+ <span class="lw-global-value-bold-red">{{ startSow.data.sowQty }}</span>
118
+ <span class="lw-global-value-bold"> / {{ startSow.data.pickQty }}</span>
119
+ </div>
120
+ </template>
121
+
122
+ </lw-input>
123
+
124
+ <!-- 获取到播种类型 -->
125
+ <template v-if="startSow.start">
126
+
127
+ <div
128
+ style="margin-top: 10px"
129
+ class="lw-global-flex-between"
130
+ >
131
+ <div style="flex: 1">
132
+ <!-- 播种方式 -->
133
+ <lw-tag
134
+ type="danger"
135
+ size="large"
136
+ round
137
+ plain
138
+ >{{ sowMethod.method }}</lw-tag>
139
+
140
+ <!-- 批量播种输入的商品号 -->
141
+ <lw-input
142
+ v-if="sowMethod.sku"
143
+ :title="sowMethod.inputTitle"
144
+ v-model="skuSow.sku.value"
145
+ :get-focus.sync="skuSow.sku.focus"
146
+ auto-clear-val
147
+ rule-key="batchSku"
148
+ @confirm="skuSowConfirm"
149
+ />
150
+
151
+ <!-- 逐件扫描的序列号 -->
152
+ <lw-input
153
+ v-else
154
+ :title="sowMethod.inputTitle"
155
+ v-model="snSow.value"
156
+ :get-focus.sync="snSow.focus"
157
+ auto-clear-val
158
+ rule-key="sn"
159
+ @confirm="snSowConfirm"
160
+ />
161
+ </div>
162
+
163
+ <!-- 播种位指示 -->
164
+ <div
165
+ v-if="Object.keys(nowSowSkuInfo.data).length"
166
+ :class="[
167
+ 'lw-global-flex-center',
168
+ 'lw-outbound-sow-code',
169
+ nowSowSkuInfo.animation ? 'lw-global-animation-breath' : ''
170
+ ]"
171
+ >{{ nowSowSkuInfo.data.sowWallLineCode }}</div>
172
+ </div>
173
+
174
+ <!-- 播种信息展示 -->
175
+ <template v-if="Object.keys(nowSowSkuInfo.data).length">
176
+
177
+ <div class="lw-global-row">
178
+ <div class="lw-global-value-bold">{{ nowSowSkuInfo.data.skuCode }}</div>
179
+ <div class="lw-global-title">{{ nowSowSkuInfo.data.skuName }}</div>
180
+ </div>
181
+
182
+ <lw-title-value-cell
183
+ :title="$lwLanguage.get('','最小销售量')"
184
+ :value="nowSowSkuInfo.data.minSellQty"
185
+ val-bold
186
+ />
187
+
188
+ <div class="lw-global-row lw-global-flex-between">
189
+
190
+ <lw-title-value-cell
191
+ :title="$lwLanguage.get('','待播种')"
192
+ :value="nowSowSkuInfo.data.waitSowQty"
193
+ val-red
194
+ val-bold
195
+ :is-row="false"
196
+ />
197
+
198
+
199
+ <div class="lw-global-flex-between">
200
+
201
+ <div class="lw-global-title">
202
+ {{ $lwLanguage.get('','已播种/总量') }}
203
+ </div>
204
+ <div class="lw-global-value">
205
+ <span class="lw-global-value-bold-red">{{ nowSowSkuInfo.data.sowQty }}</span>
206
+ <span class="lw-global-value-bold"> / {{ nowSowSkuInfo.data.totalQty }}</span>
207
+ </div>
208
+
209
+ </div>
210
+
211
+ </div>
212
+
213
+
214
+ <!-- 批量播种数量输入框 -->
215
+ <template v-if="sowMethod.sku">
216
+ <lw-input
217
+ :title="$lwLanguage.get('','当前扫描量')"
218
+ v-model="skuSow.qty.value"
219
+ :get-focus.sync="skuSow.qty.focus"
220
+ type="digit"
221
+ @confirm="skuSowQtyConfirm"
222
+ />
223
+
224
+ <div
225
+ class="lw-global-flex-between lw-global-row-end"
226
+ style="padding-bottom: 0"
227
+ >
228
+ <lw-button
229
+ type="last"
230
+ plain
231
+ block
232
+ mini
233
+ round
234
+ @click="skuSowRepeatScan"
235
+ >{{ $lwLanguage.get('','重新扫描') }}</lw-button>
236
+
237
+ <lw-button
238
+ style="margin-left: 10px"
239
+ block
240
+ mini
241
+ round
242
+ @click="skuSowQtyConfirm"
243
+ >{{ $lwLanguage.get('','确认播种') }}</lw-button>
244
+ </div>
245
+ </template>
246
+
247
+
248
+ <!-- 逐件扫描播种 -->
249
+ <template v-else>
250
+ <lw-title-value-cell
251
+ :title="$lwLanguage.get('','当前序列号')"
252
+ :value="snSow.scanData.sn"
253
+ val-bold
254
+ />
255
+ <lw-input
256
+ :title="$lwLanguage.get('','当前扫描量')"
257
+ v-model="snSow.scanData.qty"
258
+ :disabled="true"
259
+ >
260
+
261
+ <template #button>
262
+
263
+ <lw-button
264
+ round
265
+ mini
266
+ @click="snSowClearNow"
267
+ >{{ $lwLanguage.get('','取消本次扫描') }}</lw-button>
268
+
269
+ </template>
270
+
271
+ </lw-input>
272
+ </template>
273
+
274
+ </template>
275
+
276
+ </template>
277
+
278
+ </div>
279
+
280
+ <!-- 拣选容器折叠框 -->
281
+ <div class="lw-global-model-box lw-global-collapse-box">
282
+ <van-collapse
283
+ v-model="pickCollapse"
284
+ :border="false"
285
+ >
286
+ <van-collapse-item name="pick">
287
+
288
+ <template #title>
289
+ <div class="lw-global-flex-between">
290
+
291
+ <div>{{ $lwLanguage.get('', '拣选容器') }}</div>
292
+ <div class="lw-global-value-bold-red">
293
+ {{ sowData.containerList.length || 0 }}
294
+ {{ $lwLanguage.get('', '行') }}
295
+ </div>
296
+
297
+ </div>
298
+ </template>
299
+
300
+ <div
301
+ v-for="(i,k) in sowData.containerList"
302
+ :key="k"
303
+ class="lw-global-row lw-global-flex-between"
304
+ >
305
+
306
+ <div
307
+ style="flex-shrink: 0"
308
+ class="lw-global-title"
309
+ >
310
+ {{ $lwLanguage.get('', '拣选容器号') }}
311
+ </div>
312
+
313
+ <div
314
+ style="flex: 1"
315
+ class="lw-global-flex-between lw-global-value-bold"
316
+ >
317
+
318
+ <div style="flex: 1">{{ i.pickContainer }}</div>
319
+ <div style="flex-shrink: 0">
320
+ <span class="lw-global-value-bold-red">{{ i.sowQty }}</span>
321
+ /
322
+ {{ i.pickQty }}
323
+ </div>
324
+
325
+ </div>
326
+
327
+ </div>
328
+
329
+ </van-collapse-item>
330
+ </van-collapse>
331
+ </div>
332
+
333
+ <!-- 播种位列表折叠框 -->
334
+ <div class="lw-global-model-box lw-global-collapse-box">
335
+ <van-collapse
336
+ v-model="sowCollapse"
337
+ :border="false"
338
+ >
339
+ <van-collapse-item name="sow">
340
+
341
+ <template #title>
342
+ <div class="lw-global-flex-between">
343
+
344
+ <div>{{ $lwLanguage.get('', '播种位列表') }}</div>
345
+ <div class="lw-global-value-bold-red">
346
+ {{ sowData.sowWallLineList.length || 0 }}
347
+ {{ $lwLanguage.get('', '行') }}
348
+ </div>
349
+
350
+ </div>
351
+ </template>
352
+ <sow-location-list :sow-list="sowData.sowWallLineList"/>
353
+
354
+ </van-collapse-item>
355
+ </van-collapse>
356
+ </div>
357
+
358
+ </div>
359
+
360
+ <lw-bottom-bar-btn-hidden :btn-list="bottomBtnList"/>
361
+
362
+ <!-- 绑定周转箱 -->
363
+ <lw-popup
364
+ :title="$lwLanguage.get('','绑定周转箱')"
365
+ v-model="bindContainerPopup.show"
366
+ @closed="bindContainerPopupOff"
367
+ >
368
+
369
+ <template v-if="sowData.sowWallLineList">
370
+ <lw-title-value-cell
371
+ :title="$lwLanguage.get('','播种墙')"
372
+ :value="sowData.sowWallCode"
373
+ val-bold
374
+ />
375
+
376
+ <lw-title-value-cell
377
+ :title="$lwLanguage.get('','当前正在绑定播种位')"
378
+ :value="sowData.sowWallLineList[bindContainerPopup.index].sowWallLineCode"
379
+ val-bold
380
+ val-red
381
+ val-size="16px"
382
+ />
383
+
384
+ <lw-input
385
+ :title="$lwLanguage.get('','周转箱号')"
386
+ v-model="bindContainerPopup.container.value"
387
+ :get-focus.sync="bindContainerPopup.container.focus"
388
+ rule-key="container"
389
+ @confirm="sowLocationBindContainerConfirm"
390
+ >
391
+
392
+ <template #button>
393
+ <lw-button
394
+ mini
395
+ round
396
+ @click="sowLocationBindContainerConfirm"
397
+ >{{ $lwLanguage.get('','绑定') }}</lw-button>
398
+ </template>
399
+
400
+ </lw-input>
401
+
402
+ <div
403
+ class="lw-global-flex-between lw-global-row lw-global-click-style"
404
+ v-for="(i,k) in sowData.sowWallLineList"
405
+ :key="k"
406
+ @click="selectSowLocation(k)"
407
+ >
408
+
409
+ <div class="lw-global-value-bold">{{ i.sowWallLineCode }}</div>
410
+ <div class="lw-global-value-bold">{{ i.sowPositionContainer }}</div>
411
+
412
+ </div>
413
+ </template>
414
+
415
+ <template #button>
416
+ <lw-button @click="repeatBind">
417
+ {{ $lwLanguage.get('','重新绑定') }}
418
+ </lw-button>
419
+ </template>
420
+
421
+ </lw-popup>
422
+
423
+ <!-- 缺货完成 -->
424
+ <lw-popup
425
+ :title="$lwLanguage.get('','缺货完成')"
426
+ v-model="littlePopup.show"
427
+ >
428
+
429
+ <div style="margin-bottom: 10px" class="lw-global-flex-between">
430
+
431
+ <lw-title-value-cell
432
+ :title="$lwLanguage.get('','播种墙')"
433
+ :value="sowData.sowWallCode"
434
+ val-bold
435
+ :is-row="false"
436
+ />
437
+
438
+ <lw-title-value-cell
439
+ :title="$lwLanguage.get('','总缺货量')"
440
+ :value="littlePopup.data.waitSowQty"
441
+ val-bold
442
+ val-red
443
+ :is-row="false"
444
+ />
445
+
446
+ </div>
447
+
448
+ <sow-location-list :sow-list="littlePopup.data.sowWallLineList"/>
449
+
450
+ <template #button>
451
+ <lw-button @click="littleConfirm">
452
+ {{ $lwLanguage.get('','确认缺货完成') }}
453
+ </lw-button>
454
+ </template>
455
+ </lw-popup>
456
+
457
+ <!-- 播种位播种完成 -->
458
+ <lw-popup
459
+ :title="$lwLanguage.get('','播种位播种完成')"
460
+ v-model="sowLocationOverPopup.show"
461
+ @closed="getData"
462
+ >
463
+
464
+ <lw-title-value-cell
465
+ :title="$lwLanguage.get('','播种墙')"
466
+ :value="sowData.sowWallCode"
467
+ val-bold
468
+ />
469
+
470
+ <lw-title-value-cell
471
+ :title="$lwLanguage.get('','播种位')"
472
+ :value="sowLocationOverPopup.data.sowWallLineCode"
473
+ val-bold
474
+ />
475
+
476
+ <lw-title-value-cell
477
+ :title="$lwLanguage.get('','周转箱号')"
478
+ :value="sowLocationOverPopup.data.sowPositionContainer"
479
+ val-bold
480
+ />
481
+
482
+ <lw-title-value-cell
483
+ :title="$lwLanguage.get('','商品数量')"
484
+ :value="sowLocationOverPopup.data.sowWallLineQty"
485
+ val-bold
486
+ val-red
487
+ />
488
+
489
+ <div
490
+ class="lw-global-row-end"
491
+ style="text-align: center;padding-bottom: 0"
492
+ >
493
+ <lw-tag
494
+ plain
495
+ size="large"
496
+ >{{ $lwLanguage.get('','已播种完成') }}</lw-tag>
497
+ </div>
498
+
499
+ </lw-popup>
500
+
501
+ <!-- 播种批次完成 -->
502
+ <lw-popup
503
+ :title="$lwLanguage.get('','播种批次完成')"
504
+ v-model="sowLotOverPopup.show"
505
+ @closed="goBack"
506
+ >
507
+
508
+ <lw-title-value-cell
509
+ :title="$lwLanguage.get('','播种墙')"
510
+ :value="sowData.sowWallCode"
511
+ val-bold
512
+ />
513
+
514
+ <div class="lw-global-row" style="text-align: center">
515
+ <lw-tag
516
+ plain
517
+ size="large"
518
+ >{{ $lwLanguage.get('','已播种完成') }}</lw-tag>
519
+ </div>
520
+
521
+ <sow-location-list :sow-list="sowLotOverPopup.data.sowWallLineList"/>
522
+
523
+ </lw-popup>
524
+
525
+ <!-- 播满换箱 -->
526
+ <lw-popup
527
+ :title="$lwLanguage.get('','播满换箱')"
528
+ v-model="sowFullPopup.show"
529
+ @closed="sowFullOff"
530
+ >
531
+
532
+ <lw-input
533
+ :title="$lwLanguage.get('','已满容器号')"
534
+ v-model="sowFullPopup.fullContainer.value"
535
+ :get-focus.sync="sowFullPopup.fullContainer.focus"
536
+ rule-key="fullContainer"
537
+ @confirm="sowFullContainerConfirm"
538
+ />
539
+
540
+ <div class="lw-global-row lw-global-flex-between">
541
+
542
+ <lw-title-value-cell
543
+ :title="$lwLanguage.get('','播种位')"
544
+ :value="sowFullPopup.sowLocationInfo.sowWallLineCode"
545
+ val-bold
546
+ :is-row="false"
547
+ />
548
+
549
+ <lw-title-value-cell
550
+ :title="$lwLanguage.get('','已播种量')"
551
+ :value="sowFullPopup.sowLocationInfo.sowQty"
552
+ val-bold
553
+ val-red
554
+ :is-row="false"
555
+ />
556
+
557
+ </div>
558
+
559
+ <lw-input
560
+ :title="$lwLanguage.get('','新容器号')"
561
+ v-model="sowFullPopup.newContainer.value"
562
+ :get-focus.sync="sowFullPopup.newContainer.focus"
563
+ rule-key="newContainer"
564
+ @confirm="sowFullNewContainerConfirm"
565
+ />
566
+
567
+ <div
568
+ class="lw-global-value"
569
+ style="margin-top: 8px;text-align: center"
570
+ >{{$lwLanguage.get(
571
+ '',
572
+ '拿下已播满容器号!因为没有播种完成,还需要扫码新空容器号,继续播种接货'
573
+ )}}</div>
574
+
575
+ <template #button>
576
+ <lw-button @click="sowFullNewContainerConfirm">
577
+ {{ $lwLanguage.get('','确认') }}
578
+ </lw-button>
579
+ </template>
580
+
581
+ </lw-popup>
582
+
583
+ <!-- 查看未播种数 -->
584
+ <lw-popup
585
+ :title="$lwLanguage.get('','未播种商品')"
586
+ v-model="waitSowSkuPopup.show"
587
+ @closed="waitSowSkuPopup.showCom=false"
588
+ >
589
+
590
+ <template v-if="waitSowSkuPopup.showCom && waitSowSkuPopup.data.length">
591
+ <wait-sow-collapse
592
+ v-for="(i,k) in waitSowSkuPopup.data"
593
+ :key="k"
594
+ :item="i"
595
+ @abn="abnClick"
596
+ />
597
+ </template>
598
+ <lw-not-data v-else/>
599
+
600
+ </lw-popup>
601
+
602
+ <!-- 异常弹框 -->
603
+ <lw-popup
604
+ :title="$lwLanguage.get('','播种分拣异常上报')"
605
+ v-model="abnPopup.show"
606
+ @closed="abnPopup.showCom=false"
607
+ >
608
+
609
+ <lw-inner-abnormal-module
610
+ ref="abnormal"
611
+ v-if="abnPopup.showCom"
612
+ :location="abnPopup.data.locationCode"
613
+ :sku-code="abnPopup.data.skuCode"
614
+ :sku-name="abnPopup.data.skuName"
615
+ :qty="abnPopup.data.waitSowQty"
616
+ :type="$lwLanguage.get('','出库')"
617
+ :ab-type="$lwLanguage.get('','播种分拣')"
618
+ />
619
+
620
+ <template #button>
621
+ <lw-button @click="abnConfirm">
622
+ {{ $lwLanguage.get('','上报') }}
623
+ </lw-button>
624
+ </template>
625
+
626
+ </lw-popup>
627
+
628
+ </div>
629
+ </template>
630
+
631
+ <script>
632
+
633
+ import sowLocationList from './../components/sowLocationList/index.vue'
634
+ import waitSowCollapse from './../components/waitSowCollapse/index.vue'
635
+ import {
636
+ projectWmsBindSowPositionContainer,
637
+ projectWmsSowBatchSubmit,
638
+ projectWmsSowChangePositionContainer,
639
+ projectWmsSowComputeSkuSowPosition,
640
+ projectWmsSowContainerData,
641
+ projectWmsSowLotQueryUnfinishContainer,
642
+ projectWmsSowQuerySowLotData,
643
+ projectWmsSowQueryStockoutData,
644
+ projectWmsSowRebindContainer,
645
+ projectWmsSowSingleCancel,
646
+ projectWmsSowSingleSubmit,
647
+ projectWmsSowStockoutFinish,
648
+ projectWmsSowSubmitAbnormal
649
+ } from "../../../../../api/outbound/sow/action";
650
+
651
+ export default {
652
+ name: "lwOutboundSowActionPage",
653
+ components:{
654
+ sowLocationList,
655
+ waitSowCollapse
656
+ },
657
+ data() {
658
+ return {
659
+
660
+ // 底部按钮列表
661
+ bottomBtnAll:{
662
+ bindContainer:{
663
+ text: this.$lwLanguage.get('','绑定容器号'),
664
+ click: this.bindContainerClick
665
+ },
666
+ littleOver:{
667
+ text: this.$lwLanguage.get('','缺货完成'),
668
+ click: this.littleClick
669
+ },
670
+ abn:{
671
+ text: this.$lwLanguage.get('','商品异常'),
672
+ click: this.openWaitSowPopup
673
+ },
674
+ cutContainer:{
675
+ text: this.$lwLanguage.get('','切换容器'),
676
+ click: this.cutPickContainer
677
+ },
678
+ sowFull:{
679
+ text: this.$lwLanguage.get('','播满换箱'),
680
+ click: this.openSowFullPopup
681
+ },
682
+ },
683
+
684
+ // 拣选容器折叠
685
+ pickCollapse:['pick'],
686
+
687
+ // 播种位折叠
688
+ sowCollapse:['sow'],
689
+
690
+ // 播种数据
691
+ sowData:{},
692
+
693
+ // 播种方式
694
+ sowMethod:{},
695
+
696
+ // 当前播种商品信息
697
+ nowSowSkuInfo:{
698
+ data:{},
699
+ animation: false,
700
+ },
701
+
702
+ // 扫描播种
703
+ startSow:{
704
+ start: false,
705
+ pickContainer:{
706
+ value:'',
707
+ focus: false
708
+ },
709
+ data:{},
710
+ },
711
+
712
+ // 批量播种商品
713
+ skuSow:{
714
+ sku:{
715
+ value: '',
716
+ focus: false
717
+ },
718
+
719
+ qty:{
720
+ value:'',
721
+ focus: false,
722
+ disabled: false
723
+ }
724
+ },
725
+
726
+ // 逐件播种
727
+ snSow:{
728
+ value: '',
729
+ focus: false,
730
+ scanData:{}
731
+ },
732
+
733
+ // 绑定周转箱弹框
734
+ bindContainerPopup:{
735
+ show: false,
736
+ container:{
737
+ value:'',
738
+ focus: true
739
+ },
740
+ index: 0,
741
+ sowLocation:''
742
+ },
743
+
744
+ // 缺货完成弹框
745
+ littlePopup:{
746
+ show: false,
747
+ data:{}
748
+ },
749
+
750
+ // 播种位播种完成弹框
751
+ sowLocationOverPopup:{
752
+ show: false,
753
+ data:{}
754
+ },
755
+
756
+ // 播种批次完成弹框
757
+ sowLotOverPopup:{
758
+ show: false,
759
+ data:{}
760
+ },
761
+
762
+ // 播满换箱弹框
763
+ sowFullPopup:{
764
+ show: false,
765
+ fullContainer:{
766
+ value: '',
767
+ focus: false
768
+ },
769
+ sowLocationInfo:{},
770
+ newContainer:{
771
+ value:'',
772
+ focus: false
773
+ }
774
+ },
775
+
776
+ // 未播种商品弹框
777
+ waitSowSkuPopup:{
778
+ show: false,
779
+ showCom: false,
780
+ data:{}
781
+ },
782
+
783
+ // 异常上报
784
+ abnPopup:{
785
+ show: false,
786
+ showCom: false,
787
+ data:{}
788
+ }
789
+ }
790
+ },
791
+ computed:{
792
+ // 底部按钮显示列表
793
+ bottomBtnList(){
794
+ // 是否需要绑定容器号
795
+ if (this.sowData.needBindContainer){
796
+ return [
797
+ this.bottomBtnAll.bindContainer,
798
+ this.bottomBtnAll.littleOver
799
+ ]
800
+ }
801
+
802
+ // 是否已经扫描了拣选容器
803
+ if (!this.startSow.start){
804
+ return [
805
+ this.bottomBtnAll.littleOver,
806
+ this.bottomBtnAll.abn
807
+ ]
808
+ }
809
+
810
+ return [
811
+ this.bottomBtnAll.cutContainer,
812
+ this.bottomBtnAll.littleOver,
813
+ this.bottomBtnAll.sowFull,
814
+ this.bottomBtnAll.abn,
815
+ ]
816
+ },
817
+ },
818
+ mounted() {
819
+ this.getData()
820
+ },
821
+ methods: {
822
+ // 获取数据
823
+ getData(isSow=false, isSn=false){
824
+ return new Promise((pres, err)=>{
825
+ const qutry = this.$route.query
826
+ projectWmsSowQuerySowLotData({
827
+ sowWallId: qutry.lwSowWallId,
828
+ sowWallCode: qutry.lwSowWallCode,
829
+ sowLot:qutry.lwSowLot,
830
+ }).then(res=>{
831
+ this.sowData = res
832
+
833
+ // 判断当前是否存在正在播种的拣选容器
834
+ if (this.startSow.start){
835
+
836
+ // 过滤找到当前播种的拣选容器
837
+ const list = res.containerList.filter(item=>{
838
+ return item.pickContainer === this.startSow.pickContainer.value
839
+ })
840
+
841
+ let over = false
842
+
843
+ // 判断当前拣选容器是否存在新返回的数据中,如果存在就替换数据
844
+ if (list.length){
845
+ const data = list[0]
846
+ this.startSow.data.pickQty = data.pickQty
847
+ this.startSow.data.sowQty = data.sowQty
848
+
849
+ over = data.sowQty === data.pickQty
850
+ over && !isSn && this.cutPickContainer()
851
+
852
+ }else {
853
+ !isSn && this.cutPickContainer()
854
+ }
855
+
856
+ const msg = over ?
857
+ this.$lwLanguage.get('','当前容器已播种完成') :
858
+ this.$lwLanguage.get('','播种成功')
859
+
860
+ isSow && this.$lwToast.success(msg)
861
+ }
862
+ pres()
863
+ }).catch(()=>{
864
+ this.goBack()
865
+ err()
866
+ })
867
+ })
868
+ },
869
+
870
+ // 绑定周转箱
871
+ bindContainerClick(){
872
+ this.selectFistSowBind(true)
873
+ this.bindContainerPopup.show = true
874
+ },
875
+ // 找到第一个需要绑定容器的播种位
876
+ selectFistSowBind(need){
877
+ const wait = this.sowData.sowWallLineList
878
+
879
+ // 找到第一个需要绑定的播种位
880
+ for (let i=0;i<wait.length;i++){
881
+ if (wait[i].needBindContainer){
882
+ this.bindContainerPopup.index = i
883
+ this.bindContainerPopup.container.focus = true
884
+ return
885
+ }
886
+ }
887
+
888
+ if (need) {
889
+ this.bindContainerPopup.index = 0
890
+ this.bindContainerPopup.container.focus = true
891
+ return;
892
+ }
893
+
894
+ this.$lwToast.success(
895
+ this.$lwLanguage.get('','播种位已全部绑定周转箱')
896
+ )
897
+ this.bindContainerPopup.show = false
898
+ },
899
+ // 播种位绑定周转箱确认
900
+ sowLocationBindContainerConfirm(){
901
+
902
+ if (!this.bindContainerPopup.container.value){
903
+ this.bindContainerPopup.container.focus = true
904
+ this.$lwShowErrorMsg(
905
+ this.$lwLanguage.get('','容器号不能为空')
906
+ )
907
+ return
908
+ }
909
+
910
+ const item = this.sowData.sowWallLineList[this.bindContainerPopup.index]
911
+ projectWmsBindSowPositionContainer({
912
+ sowWallId: this.sowData.sowWallId,
913
+ sowWallLineId: item.sowWallLineId,
914
+ sowWallLineCode: item.sowWallLineCode,
915
+ bindContainer: this.bindContainerPopup.container.value
916
+ }).then(()=>{
917
+ item.sowPositionContainer = this.bindContainerPopup.container.value
918
+ item.needBindContainer = false
919
+ this.bindContainerPopup.container.value = ''
920
+ this.selectFistSowBind()
921
+ }).catch(()=>{
922
+ this.bindContainerPopup.container.focus = true
923
+ this.bindContainerPopup.container.value = ''
924
+ })
925
+ },
926
+ // 点击播种位位选择绑定容器
927
+ selectSowLocation(index){
928
+ this.bindContainerPopup.container.value = ''
929
+ this.bindContainerPopup.container.focus = true
930
+ this.bindContainerPopup.index = index
931
+ },
932
+ // 重新绑定
933
+ repeatBind(){
934
+ this.$dialog.confirm({
935
+ title: this.$lwLanguage.get('','警告'),
936
+ message: this.$lwLanguage.get('','当前播种位绑定的容器将会被全部清空')
937
+ }).then(()=>{
938
+ projectWmsSowRebindContainer({
939
+ sowWallId: this.sowData.sowWallId,
940
+ sowWallCode: this.sowData.sowWallCode,
941
+ sowLot: this.sowData.sowLot,
942
+ }).then(()=>{
943
+ this.$lwToast.success(
944
+ this.$lwLanguage.get('','操作成功')
945
+ )
946
+ this.getData().then(()=>this.selectFistSowBind(true))
947
+ })
948
+ }).catch(()=>{})
949
+ },
950
+ // 绑定周转箱弹出框关闭
951
+ bindContainerPopupOff(){
952
+ this.bindContainerPopup.container.value=''
953
+ this.getData()
954
+ },
955
+
956
+
957
+ // 缺货完成按钮点击
958
+ littleClick(){
959
+ projectWmsSowQueryStockoutData({
960
+ sowWallId: this.sowData.sowWallId,
961
+ sowLot: this.sowData.sowLot,
962
+ }).then(res=>{
963
+ this.littlePopup.data = res
964
+ this.littlePopup.show = true
965
+ })
966
+ },
967
+ // 确认缺货完成
968
+ littleConfirm(){
969
+ projectWmsSowStockoutFinish({
970
+ sowWallId: this.sowData.sowWallId,
971
+ sowLot: this.sowData.sowLot
972
+ }).then(()=>{
973
+ this.$lwToast.success(
974
+ this.$lwLanguage.get('','缺货完成')
975
+ )
976
+ history.go(-1)
977
+ })
978
+ },
979
+
980
+ // 拣选容器号确认
981
+ pickConfirm(){
982
+ if (!this.startSow.pickContainer.value){
983
+ this.startSow.pickContainer.focus = true
984
+ this.$lwShowErrorMsg(
985
+ this.$lwLanguage.get('','拣选容器号不能为空')
986
+ )
987
+ return
988
+ }
989
+
990
+ const list = this.sowData.containerList.filter(item=>{
991
+ return item.pickContainer === this.startSow.pickContainer.value
992
+ })
993
+
994
+ if(!list.length){
995
+ this.startSow.pickContainer.focus = true
996
+ this.$lwShowErrorMsg(
997
+ this.$lwLanguage.get('','扫描容器号不在当前播种批次内')
998
+ )
999
+ this.startSow.pickContainer.value = ''
1000
+ return
1001
+ }
1002
+
1003
+ projectWmsSowContainerData({
1004
+ sowWallId: this.sowData.sowWallId,
1005
+ sowWallCode: this.sowData.sowWallCode,
1006
+ sowLot: this.sowData.sowLot,
1007
+ pickContainer: this.startSow.pickContainer.value
1008
+ }).then(res=>{
1009
+
1010
+ // 判断是否是批量播种
1011
+ if (res.sowMethod === 'BATCH') {
1012
+ this.sowMethod = {
1013
+ method: this.$lwLanguage.get('', '批量播种'),
1014
+ inputTitle: this.$lwLanguage.get('', '商品条码'),
1015
+ sku: true
1016
+ }
1017
+ this.skuSow.sku.focus = true
1018
+ } else {
1019
+ this.sowMethod = {
1020
+ method: this.$lwLanguage.get('', '逐件扫描播种'),
1021
+ inputTitle: this.$lwLanguage.get('', '商品序列号'),
1022
+ sku: false
1023
+ }
1024
+ this.snSow.focus = true
1025
+ }
1026
+
1027
+ this.startSow.data = res
1028
+ this.startSow.start = true
1029
+ })
1030
+ },
1031
+ // 切换拣选容器号
1032
+ cutPickContainer(){
1033
+ this.startSow.pickContainer.value = ''
1034
+ this.startSow.pickContainer.focus = true
1035
+ this.startSow.start = false
1036
+ this.startSow.data = {}
1037
+ this.clearSkuSowData()
1038
+ },
1039
+
1040
+ // 商品合法性校验
1041
+ skuCodeCheck(skuCode){
1042
+
1043
+ if (!skuCode){
1044
+ this.skuSow.sku.focus = true
1045
+ this.$lwShowErrorMsg(
1046
+ this.$lwLanguage.get('','商品号不能为空')
1047
+ )
1048
+ return {
1049
+ success: false
1050
+ }
1051
+ }
1052
+
1053
+ const skuList = this.startSow.data.skuList.filter(item=>{
1054
+ return item.skuCode === skuCode
1055
+ })
1056
+
1057
+ if(!skuList.length){
1058
+ this.skuSow.sku.focus = true
1059
+ this.$lwShowErrorMsg(
1060
+ this.$lwLanguage.get('','当前商品不在拣选容器内')
1061
+ )
1062
+ return {
1063
+ success: false
1064
+ }
1065
+ }
1066
+
1067
+ return {
1068
+ success: true,
1069
+ skuList
1070
+ }
1071
+ },
1072
+
1073
+ // 设置当前播种的商品数据
1074
+ setNowSowSkuInfo(res){
1075
+ this.nowSowSkuInfo.data = res
1076
+ this.nowSowSkuInfo.animation = true
1077
+ this.$lwAppPower.speak(this.nowSowSkuInfo.data.sowWallLineCode)
1078
+ },
1079
+
1080
+ // 清除当前播种数据
1081
+ clearSkuSowData(){
1082
+ this.nowSowSkuInfo.data = {}
1083
+ this.snSow.value = ''
1084
+ this.skuSow.qty.value = ''
1085
+ this.nowSowSkuInfo.data = {}
1086
+ this.nowSowSkuInfo.animation = false
1087
+ },
1088
+
1089
+ // 批量播种商品扫描完成
1090
+ skuSowConfirm(val, data){
1091
+ const {skuCode, qty} = data.data
1092
+
1093
+ this.nowSowSkuInfo.animation = false
1094
+
1095
+ const {success, skuList} = this.skuCodeCheck(skuCode)
1096
+ if(!success) return
1097
+
1098
+ const oldSkuCode = this.nowSowSkuInfo.data.skuCode
1099
+ if (oldSkuCode && oldSkuCode !== skuCode){
1100
+ this.skuSow.sku.focus = true
1101
+ this.$lwShowErrorMsg(
1102
+ this.$lwLanguage.get('','当前商品与正在播种商品不一致')
1103
+ )
1104
+ return
1105
+ }
1106
+
1107
+ projectWmsSowComputeSkuSowPosition({
1108
+ sowWallId: this.sowData.sowWallId,
1109
+ sowWallCode: this.sowData.sowWallCode,
1110
+ sowLot: this.sowData.sowLot,
1111
+ pickContainer: this.startSow.pickContainer.value,
1112
+ ownerId: skuList[0].ownerId,
1113
+ skuId: skuList[0].skuId,
1114
+ skuCode: skuList[0].skuCode,
1115
+ }).then(res=>{
1116
+
1117
+ const oldSowWall = this.nowSowSkuInfo.data.sowWallLineCode
1118
+ if (oldSowWall && oldSowWall !== res.sowWallLineCode){
1119
+ this.skuSow.sku.focus = true
1120
+ this.$lwShowErrorMsg(
1121
+ this.$lwLanguage.get('','当前商品与正在播种商品不在同一播种位,不能播种!')
1122
+ )
1123
+ return
1124
+ }
1125
+
1126
+ this.setNowSowSkuInfo(res)
1127
+
1128
+ const total = Number(this.skuSow.qty.value || 0) + Number(qty || 0)
1129
+ this.skuSow.qty.value = total
1130
+
1131
+ // 如果播种量等于待播种量就自动提交
1132
+ if (total === Number(res.waitSowQty || 0)){
1133
+ this.skuSowQtyConfirm()
1134
+ return
1135
+ }
1136
+
1137
+ this.skuSow.sku.focus = true
1138
+ })
1139
+ },
1140
+ // 扫描数量确定
1141
+ skuSowQtyConfirm(){
1142
+
1143
+ const qty = Number(this.skuSow.qty.value || 0)
1144
+ if (!qty){
1145
+ this.skuSow.qty.focus = true
1146
+ this.$lwShowErrorMsg(
1147
+ this.$lwLanguage.get('','播种量不能为空,且应当是大于0的整数')
1148
+ )
1149
+ return
1150
+ }
1151
+ if (qty > Number(this.nowSowSkuInfo.data.waitSowQty ||0)){
1152
+ this.skuSow.qty.focus = true
1153
+ this.$lwShowErrorMsg(
1154
+ this.$lwLanguage.get('','播种量不能大于待播种量')
1155
+ )
1156
+ this.skuSow.qty.value = ''
1157
+ return
1158
+ }
1159
+
1160
+ projectWmsSowBatchSubmit({
1161
+ sowWallId: this.sowData.sowWallId,
1162
+ sowWallCode: this.sowData.sowWallCode,
1163
+ sowLot: this.sowData.sowLot,
1164
+ sowWallLineId: this.nowSowSkuInfo.data.sowWallLineId,
1165
+ sowWallLineCode: this.nowSowSkuInfo.data.sowWallLineCode,
1166
+ sowPositionContainer: this.nowSowSkuInfo.data.sowPositionContainer,
1167
+ ownerId: this.nowSowSkuInfo.data.ownerId,
1168
+ skuId: this.nowSowSkuInfo.data.skuId,
1169
+ pickContainer: this.startSow.pickContainer.value,
1170
+ currentSowQty: qty
1171
+ }).then(res=>{
1172
+
1173
+ this.sowOver(res)
1174
+ })
1175
+ },
1176
+ // 批量扫描 - 重新扫描
1177
+ skuSowRepeatScan(){
1178
+ this.clearSkuSowData()
1179
+ this.skuSow.sku.focus = true
1180
+ },
1181
+
1182
+ // 逐件扫描序列号确认
1183
+ snSowConfirm(val,data){
1184
+ const {skuCode, sn, qty} = data.data
1185
+ this.nowSowSkuInfo.animation = false
1186
+
1187
+ const {success, skuList} = this.skuCodeCheck(skuCode)
1188
+ if(!success) return
1189
+
1190
+ if (!sn){
1191
+ this.skuSow.sku.focus = true
1192
+ this.$lwShowErrorMsg(
1193
+ this.$lwLanguage.get('','序列号不能为空')
1194
+ )
1195
+ return
1196
+ }
1197
+
1198
+ const scanData = {
1199
+ sn,
1200
+ qty: qty || skuList[0].minSellQty,
1201
+ ownerId: skuList[0].ownerId,
1202
+ skuId: skuList[0].skuId,
1203
+ skuCode: skuList[0].skuCode,
1204
+ sowWallId: this.sowData.sowWallId,
1205
+ sowLot: this.sowData.sowLot,
1206
+ pickContainer: this.startSow.pickContainer.value,
1207
+ sowWallCode: this.sowData.sowWallCode,
1208
+ }
1209
+
1210
+ projectWmsSowSingleSubmit({
1211
+ ...scanData,
1212
+ currentSowQty: scanData.qty
1213
+ }).then(res=>{
1214
+
1215
+ this.setNowSowSkuInfo(res)
1216
+
1217
+ this.snSow.scanData = {
1218
+ ...scanData,
1219
+ sowWallLineId: res.sowWallLineId,
1220
+ sowWallLineCode: res.sowWallLineCode,
1221
+ sowPositionContainer: res.sowPositionContainer,
1222
+ }
1223
+
1224
+ this.sowOver(res, true)
1225
+ })
1226
+ },
1227
+ // 逐件扫描 - 取消本次扫描
1228
+ snSowClearNow(){
1229
+ projectWmsSowSingleCancel({
1230
+ ...this.snSow.scanData,
1231
+ cancelQty: this.snSow.scanData.qty
1232
+ }).then(()=>{
1233
+ this.$lwToast.success(
1234
+ this.$lwLanguage.get('','已取消')
1235
+ )
1236
+
1237
+ this.clearSkuSowData()
1238
+ this.getData(false, true)
1239
+ this.snSow.focus = true
1240
+
1241
+ })
1242
+ },
1243
+
1244
+ // 校验当前播种是否完成
1245
+ checkSowOver(res){
1246
+ // 当前批次是否完成
1247
+ if (res.sowLotFinish){
1248
+ this.sowLotOverPopup.data = res
1249
+ this.sowLotOverPopup.show = true
1250
+ return true
1251
+ }
1252
+
1253
+ // 当前播种位是否完成
1254
+ if (res.sowWallLineFinish){
1255
+ this.sowLocationOverPopup.data = res
1256
+ this.sowLocationOverPopup.show = true
1257
+ return true
1258
+ }
1259
+
1260
+ return false
1261
+ },
1262
+ // 播种完成
1263
+ sowOver(res, isSn=false){
1264
+
1265
+ !isSn && this.clearSkuSowData()
1266
+
1267
+ !isSn && this.cutPickContainer()
1268
+
1269
+ if(this.checkSowOver(res)) return
1270
+
1271
+ this.getData(true, isSn)
1272
+ this.startSow.pickContainer.focus = true
1273
+ },
1274
+
1275
+ // 返回上一页
1276
+ goBack(){
1277
+ history.go(-1)
1278
+ },
1279
+
1280
+ // 播满换箱弹框 - 打开弹框
1281
+ openSowFullPopup(){
1282
+ this.sowFullPopup.show = true
1283
+ this.sowFullPopup.fullContainer.focus = true
1284
+ },
1285
+ // 播满换箱弹框 - 已满容器确认
1286
+ sowFullContainerConfirm(){
1287
+
1288
+ if(!this.sowFullPopup.fullContainer.value){
1289
+ this.sowFullPopup.fullContainer.focus = true
1290
+ this.$lwShowErrorMsg(
1291
+ this.$lwLanguage.get('','已满容器不能为空')
1292
+ )
1293
+ return
1294
+ }
1295
+
1296
+ const list = this.sowData.sowWallLineList.filter(item=>{
1297
+ return item.sowPositionContainer === this.sowFullPopup.fullContainer.value
1298
+ })
1299
+
1300
+ if(!list.length){
1301
+ this.sowFullPopup.fullContainer.focus = true
1302
+ this.$lwShowErrorMsg(
1303
+ this.$lwLanguage.get('','没有找到已满的容器号')
1304
+ )
1305
+ this.sowFullPopup.fullContainer.value = ''
1306
+ return
1307
+ }
1308
+
1309
+ this.sowFullPopup.sowLocationInfo = list[0]
1310
+ this.sowFullPopup.newContainer.focus = true
1311
+
1312
+ },
1313
+ // 播满换箱弹框 - 新容器确定
1314
+ sowFullNewContainerConfirm(){
1315
+
1316
+ if (!this.sowFullPopup.sowLocationInfo.sowWallLineCode){
1317
+ this.sowFullPopup.fullContainer.focus = true
1318
+ this.$lwShowErrorMsg(
1319
+ this.$lwLanguage.get('','请输入已满容器,并获取容器对应的播种位信息')
1320
+ )
1321
+ return
1322
+ }
1323
+
1324
+ if (!this.sowFullPopup.newContainer.value){
1325
+ this.sowFullPopup.newContainer.focus = true
1326
+ this.$lwShowErrorMsg(
1327
+ this.$lwLanguage.get('','新容器不能为空')
1328
+ )
1329
+ return
1330
+ }
1331
+
1332
+ projectWmsSowChangePositionContainer({
1333
+ sowWallId: this.sowData.sowWallId,
1334
+ sowLot: this.sowData.sowLot,
1335
+ sowWallLineId: this.sowFullPopup.sowLocationInfo.sowWallLineId,
1336
+ sowWallLineCode: this.sowFullPopup.sowLocationInfo.sowWallLineCode,
1337
+ sowPositionContainer: this.sowFullPopup.fullContainer.value,
1338
+ bindContainer: this.sowFullPopup.newContainer.value,
1339
+ }).then(()=>{
1340
+ this.$lwToast.success(
1341
+ this.$lwLanguage.get('','已更换')
1342
+ )
1343
+ this.getData()
1344
+ this.sowFullPopup.show = false
1345
+ })
1346
+ },
1347
+ // 播满换箱弹框 - 关闭
1348
+ sowFullOff(){
1349
+ this.sowFullPopup.fullContainer.value = ''
1350
+ this.sowFullPopup.newContainer.value = ''
1351
+ this.sowFullPopup.sowLocationInfo = {}
1352
+ },
1353
+
1354
+ // 查看未播种商品弹框
1355
+ openWaitSowPopup(){
1356
+ projectWmsSowLotQueryUnfinishContainer({
1357
+ sowWallId: this.sowData.sowWallId,
1358
+ sowWallCode: this.sowData.sowWallCode,
1359
+ sowLot: this.sowData.sowLot,
1360
+ }).then(res=>{
1361
+ this.waitSowSkuPopup.data = res
1362
+ this.waitSowSkuPopup.showCom = true
1363
+ this.waitSowSkuPopup.show = true
1364
+ })
1365
+ },
1366
+
1367
+ // 异常弹框打开
1368
+ abnClick(data){
1369
+ this.abnPopup.data = data
1370
+ this.abnPopup.showCom = true
1371
+ this.abnPopup.show = true
1372
+ this.waitSowSkuPopup.show = false
1373
+ },
1374
+ // 确认异常上报
1375
+ abnConfirm(){
1376
+ const {success, data} = this.$refs.abnormal.getAbnormalData()
1377
+
1378
+ if (!success) return
1379
+
1380
+ projectWmsSowSubmitAbnormal({
1381
+ ...data,
1382
+ ...this.abnPopup.data,
1383
+ sowLot: this.sowData.sowLot,
1384
+ sowWallId: this.sowData.sowWallId,
1385
+ sowWallCode: this.sowData.sowWallCode,
1386
+ }).then(res=>{
1387
+ this.$lwToast.success(
1388
+ this.$lwLanguage.get('','异常上报成功')
1389
+ )
1390
+ this.abnPopup.show = false
1391
+
1392
+ if (this.checkSowOver(res)) return
1393
+
1394
+ this.getData()
1395
+ })
1396
+ }
1397
+ }
1398
+ }
1399
+ </script>
1400
+
1401
+ <style scoped lang="less">
1402
+ @import "./../../../../../assets/css/var.less";
1403
+
1404
+ .border-2{
1405
+ border: solid 2px @baseColor;
1406
+ }
1407
+
1408
+ .lw-outbound-sow-code{
1409
+ flex-shrink: 0;
1410
+ padding: 5px;
1411
+ width: 50px;
1412
+ height: 50px;
1413
+ background: #ccc;
1414
+ color: @baseColor;
1415
+ font-size: 24px;
1416
+ font-weight: bold;
1417
+ border-radius: 8px;
1418
+ }
1419
+
1420
+ </style>