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

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/dist/logwire-wms-pda-ui.js +7 -0
  3. package/package.json +69 -69
  4. package/src/api/common/Device.js +43 -43
  5. package/src/api/common/Dict.js +19 -19
  6. package/src/api/common/GetImgSrc.js +20 -20
  7. package/src/api/common/Language.js +31 -31
  8. package/src/api/common/Lot.js +20 -20
  9. package/src/api/common/Msg.js +26 -26
  10. package/src/api/common/Permissions.js +22 -22
  11. package/src/api/common/Print.js +65 -65
  12. package/src/api/common/Task.js +61 -61
  13. package/src/api/common/UUID.js +28 -28
  14. package/src/api/common/User.js +53 -53
  15. package/src/api/common/Waerhouse.js +28 -28
  16. package/src/api/common/barcode.js +165 -165
  17. package/src/api/common/common.js +33 -33
  18. package/src/api/common/index.js +37 -37
  19. package/src/api/inbound/index.js +6 -6
  20. package/src/api/inbound/quality.js +99 -99
  21. package/src/api/inbound/receive.js +119 -119
  22. package/src/api/inner/count/index.js +97 -97
  23. package/src/api/inner/disposeAbnormal/action.js +69 -69
  24. package/src/api/inner/disposeAbnormal/index.js +33 -33
  25. package/src/api/inner/materialApply/index.js +51 -51
  26. package/src/api/inner/move/abnormalMove.js +25 -25
  27. package/src/api/inner/move/lpnMove.js +25 -25
  28. package/src/api/inner/move/taskMove.js +57 -57
  29. package/src/api/inner/newProject/action.js +88 -88
  30. package/src/api/inner/newProject/index.js +17 -17
  31. package/src/api/inner/reportAbnormal/index.js +34 -34
  32. package/src/api/outbound/bale/checkBale/action.js +123 -123
  33. package/src/api/outbound/bale/checkBale/allCheck.js +25 -25
  34. package/src/api/outbound/bale/checkBale/index.js +52 -52
  35. package/src/api/outbound/delivery/action.js +148 -148
  36. package/src/api/outbound/delivery/addOrder.js +32 -32
  37. package/src/api/outbound/delivery/index.js +25 -25
  38. package/src/api/outbound/pick/alone.js +60 -60
  39. package/src/api/outbound/pick/box.js +42 -42
  40. package/src/api/outbound/pick/index.js +60 -60
  41. package/src/api/outbound/pick/lpn.js +42 -42
  42. package/src/api/outbound/pick/notAlone.js +33 -33
  43. package/src/api/outbound/pickMerge/index.js +69 -69
  44. package/src/api/outbound/sow/action.js +123 -123
  45. package/src/api/outbound/sow/index.js +24 -24
  46. package/src/api/outbound/summary/box.js +33 -33
  47. package/src/api/outbound/summary/lpn.js +23 -23
  48. package/src/api/receive/abnormal.js +34 -34
  49. package/src/api/receive/putaway.js +82 -82
  50. package/src/api/receive/randomMove.js +43 -43
  51. package/src/api/receive/receipt.js +25 -25
  52. package/src/assets/css/changeVant.less +22 -22
  53. package/src/assets/css/global.less +411 -411
  54. package/src/assets/css/index.less +4 -4
  55. package/src/assets/css/var.less +117 -117
  56. package/src/assets/css//345/205/250/345/261/200/346/240/267/345/274/217.md +31 -31
  57. package/src/components/module/InnerAbnormal/index.js +11 -11
  58. package/src/components/module/InnerAbnormal/index.vue +367 -367
  59. package/src/components/module/Login/index.js +11 -11
  60. package/src/components/module/Login/index.vue +324 -328
  61. package/src/components/module/Login//347/231/273/345/275/225/346/250/241/345/235/227.md +1 -1
  62. package/src/components/module/Lot/index.js +11 -11
  63. package/src/components/module/Lot/index.vue +181 -181
  64. package/src/components/module/Lot//346/211/271/346/254/241/345/261/236/346/200/247.md +2 -2
  65. package/src/components/module/LotLook/index.js +11 -11
  66. package/src/components/module/LotLook/index.vue +80 -80
  67. package/src/components/module/Menu/index.js +12 -12
  68. package/src/components/module/Menu/index.vue +118 -118
  69. package/src/components/module/Menu//350/217/234/345/215/225/346/240/217.md +1 -1
  70. package/src/components/module/MsgItem/index.js +11 -11
  71. package/src/components/module/MsgItem/index.vue +109 -109
  72. 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
  73. package/src/components/module/OnLine/index.js +11 -11
  74. package/src/components/module/OnLine/index.vue +195 -195
  75. 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
  76. package/src/components/module/ReceiveAbnormal/index.js +11 -11
  77. package/src/components/module/ReceiveAbnormal/index.vue +865 -865
  78. package/src/components/module/ScanDataList/index.js +11 -11
  79. package/src/components/module/ScanDataList/index.vue +326 -326
  80. package/src/components/module/SkuInfo/index.js +11 -11
  81. package/src/components/module/SkuInfo/index.vue +65 -65
  82. package/src/components/module/SystemInfo/index.js +11 -11
  83. package/src/components/module/SystemInfo/index.vue +217 -217
  84. 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
  85. package/src/components/module/index.js +42 -42
  86. package/src/components/page/common/Device/index.js +11 -11
  87. package/src/components/page/common/Device/index.vue +186 -186
  88. package/src/components/page/common/Device//350/256/276/345/244/207/347/256/241/347/220/206/351/241/265.md +1 -1
  89. package/src/components/page/common/Home/index.js +11 -11
  90. package/src/components/page/common/Home/index.vue +113 -113
  91. package/src/components/page/common/Home//344/270/273/351/241/265.md +1 -1
  92. package/src/components/page/common/Language/index.js +11 -11
  93. package/src/components/page/common/Language/index.vue +142 -142
  94. package/src/components/page/common/Language//350/257/255/350/250/200.md +1 -1
  95. package/src/components/page/common/Login/index.js +11 -11
  96. package/src/components/page/common/Login/index.vue +157 -157
  97. package/src/components/page/common/Login//347/231/273/345/275/225/351/241/265.md +1 -1
  98. package/src/components/page/common/Menu/index.js +11 -11
  99. package/src/components/page/common/Menu/index.vue +71 -71
  100. package/src/components/page/common/Menu//350/217/234/345/215/225/351/241/265.md +1 -1
  101. package/src/components/page/common/Msg/index.js +11 -11
  102. package/src/components/page/common/Msg/index.vue +152 -152
  103. package/src/components/page/common/Msg//346/266/210/346/201/257/351/241/265.md +1 -1
  104. package/src/components/page/common/My/index.js +11 -11
  105. package/src/components/page/common/My/index.vue +477 -477
  106. package/src/components/page/common/My//346/210/221/347/232/204/347/256/241/347/220/206/351/241/265.md +1 -1
  107. package/src/components/page/common/Print/index.js +11 -11
  108. package/src/components/page/common/Print/index.vue +314 -314
  109. 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
  110. package/src/components/page/common/Task/index.js +11 -11
  111. package/src/components/page/common/Task/index.vue +699 -699
  112. package/src/components/page/common/Task//344/273/273/345/212/241/351/241/265.md +1 -1
  113. package/src/components/page/common/Warehouse/index.js +11 -11
  114. package/src/components/page/common/Warehouse/index.vue +216 -213
  115. package/src/components/page/common/Warehouse//344/273/223/345/272/223/351/200/211/346/213/251/351/241/265.md +1 -1
  116. package/src/components/page/common/index.js +39 -39
  117. package/src/components/page/count/components/CountBoard.vue +115 -115
  118. package/src/components/page/count/components/RandomCount.vue +153 -153
  119. package/src/components/page/count/index.js +21 -21
  120. package/src/components/page/count/inv/action/index.js +5 -5
  121. package/src/components/page/count/inv/action/index.vue +271 -271
  122. package/src/components/page/count/inv/index/index.js +5 -5
  123. package/src/components/page/count/inv/index/index.vue +189 -189
  124. package/src/components/page/count/loc/action/index.js +5 -5
  125. package/src/components/page/count/loc/action/index.vue +545 -545
  126. package/src/components/page/count/loc/index/index.js +5 -5
  127. package/src/components/page/count/loc/index/index.vue +184 -184
  128. package/src/components/page/inbound/components/AsnInfo.vue +180 -180
  129. package/src/components/page/inbound/components/AsnSkuInfo.vue +45 -45
  130. package/src/components/page/inbound/components/QualityCard.vue +230 -230
  131. package/src/components/page/inbound/components/QualityTaskInfo.vue +88 -88
  132. package/src/components/page/inbound/components/SnsList.vue +98 -98
  133. package/src/components/page/inbound/index.js +16 -16
  134. package/src/components/page/inbound/newProject/action/index.js +13 -13
  135. package/src/components/page/inbound/newProject/action/index.vue +1468 -1468
  136. package/src/components/page/inbound/newProject/index/index.js +13 -13
  137. package/src/components/page/inbound/newProject/index/index.vue +121 -121
  138. package/src/components/page/inbound/receive/home/index.js +5 -5
  139. package/src/components/page/inbound/receive/home/index.vue +73 -73
  140. package/src/components/page/inbound/receive/index/index.js +5 -5
  141. package/src/components/page/inbound/receive/index/index.vue +89 -89
  142. package/src/components/page/inbound/receive/quality/LwInboundQualityExecutePage.vue +405 -405
  143. package/src/components/page/inbound/receive/quality/LwInboundQualityTaskListPage.vue +163 -163
  144. package/src/components/page/inbound/receive/quality/index.js +16 -16
  145. package/src/components/page/inbound/receive/receive-sku/LwInboundReceiveSkuAdvancePage.vue +320 -320
  146. package/src/components/page/inbound/receive/receive-sku/LwInboundReceiveSkuDirectPage.vue +407 -407
  147. package/src/components/page/inbound/receive/receive-sku/LwInboundReceiveSkuScanPage.vue +149 -149
  148. package/src/components/page/inbound/receive/receive-sku/index.js +19 -19
  149. package/src/components/page/index.js +33 -33
  150. package/src/components/page/inner/abnormalMove/index/index.js +11 -11
  151. package/src/components/page/inner/abnormalMove/index/index.vue +468 -468
  152. package/src/components/page/inner/disposeAbnormal/action/index.js +11 -11
  153. package/src/components/page/inner/disposeAbnormal/action/index.vue +524 -524
  154. package/src/components/page/inner/disposeAbnormal/components/abnInfo/index.vue +655 -655
  155. package/src/components/page/inner/disposeAbnormal/components/disposePopup/index.vue +229 -229
  156. package/src/components/page/inner/disposeAbnormal/components/listItem/index.vue +213 -213
  157. package/src/components/page/inner/disposeAbnormal/components/searchBar/index.vue +264 -264
  158. package/src/components/page/inner/disposeAbnormal/index/index.js +11 -11
  159. package/src/components/page/inner/disposeAbnormal/index/index.vue +237 -237
  160. package/src/components/page/inner/index.js +62 -62
  161. package/src/components/page/inner/lpnMove/action/index.js +11 -11
  162. package/src/components/page/inner/lpnMove/action/index.vue +222 -222
  163. package/src/components/page/inner/lpnMove/index/index.js +11 -11
  164. package/src/components/page/inner/lpnMove/index/index.vue +155 -155
  165. package/src/components/page/inner/materialApply/action/index.js +10 -10
  166. package/src/components/page/inner/materialApply/action/index.vue +563 -563
  167. package/src/components/page/inner/materialApply/generate/index.js +10 -10
  168. package/src/components/page/inner/materialApply/generate/index.vue +376 -376
  169. package/src/components/page/inner/movePutAway/index/index.js +11 -11
  170. package/src/components/page/inner/movePutAway/index/index.vue +363 -363
  171. package/src/components/page/inner/randomMove/components/Down/index.vue +470 -470
  172. package/src/components/page/inner/randomMove/components/Up/index.vue +523 -523
  173. package/src/components/page/inner/randomMove/index/index.js +11 -11
  174. package/src/components/page/inner/randomMove/index/index.vue +152 -152
  175. package/src/components/page/inner/reportAbnormal/action/index.js +11 -11
  176. package/src/components/page/inner/reportAbnormal/action/index.vue +246 -246
  177. package/src/components/page/inner/reportAbnormal/index/index.js +11 -11
  178. package/src/components/page/inner/reportAbnormal/index/index.vue +251 -243
  179. package/src/components/page/inner/taskMove/index/index.js +11 -11
  180. package/src/components/page/inner/taskMove/index/index.vue +1374 -1374
  181. package/src/components/page/outbound/bale/aloneBale/action/index.js +11 -11
  182. package/src/components/page/outbound/bale/aloneBale/action/index.vue +192 -192
  183. package/src/components/page/outbound/bale/aloneBale/index/index.js +11 -11
  184. package/src/components/page/outbound/bale/aloneBale/index/index.vue +86 -86
  185. package/src/components/page/outbound/bale/aloneBale/newBale/index.js +11 -11
  186. package/src/components/page/outbound/bale/aloneBale/newBale/index.vue +53 -53
  187. package/src/components/page/outbound/bale/checkBale/action/index.js +11 -11
  188. package/src/components/page/outbound/bale/checkBale/action/index.vue +1330 -1330
  189. package/src/components/page/outbound/bale/checkBale/allCheck/index.js +11 -11
  190. package/src/components/page/outbound/bale/checkBale/allCheck/index.vue +119 -119
  191. package/src/components/page/outbound/bale/checkBale/index/index.js +11 -11
  192. package/src/components/page/outbound/bale/checkBale/index/index.vue +259 -259
  193. package/src/components/page/outbound/bale/checkBale/newBale/index.js +11 -11
  194. package/src/components/page/outbound/bale/checkBale/newBale/index.vue +62 -62
  195. package/src/components/page/outbound/bale/components/allBlock/index.vue +97 -97
  196. package/src/components/page/outbound/bale/components/containerInfo/index.vue +237 -237
  197. 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
  198. package/src/components/page/outbound/bale/components/containerSkuQty/index.vue +58 -58
  199. package/src/components/page/outbound/bale/components/mainPage/index.vue +620 -620
  200. package/src/components/page/outbound/bale/components/partBlock/index.vue +197 -197
  201. package/src/components/page/outbound/bale/components/planCollapse/index.vue +396 -396
  202. package/src/components/page/outbound/bale/components/storeInfo/index.vue +135 -135
  203. 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
  204. package/src/components/page/outbound/bale/components/storeInfoSkuList/index.vue +121 -121
  205. package/src/components/page/outbound/delivery/action/index.js +11 -11
  206. package/src/components/page/outbound/delivery/action/index.vue +646 -646
  207. package/src/components/page/outbound/delivery/addOrder/index.js +11 -11
  208. package/src/components/page/outbound/delivery/addOrder/index.vue +281 -281
  209. package/src/components/page/outbound/delivery/components/boxItem/index.vue +118 -118
  210. package/src/components/page/outbound/delivery/components/orderContent/index.vue +143 -143
  211. package/src/components/page/outbound/delivery/components/orderContentTitle/index.vue +239 -239
  212. package/src/components/page/outbound/delivery/components/soAndLpnItem/index.vue +152 -152
  213. package/src/components/page/outbound/delivery/index/index.js +11 -11
  214. package/src/components/page/outbound/delivery/index/index.vue +154 -154
  215. package/src/components/page/outbound/index.js +94 -94
  216. package/src/components/page/outbound/pick/alone/index.js +11 -11
  217. package/src/components/page/outbound/pick/alone/index.vue +497 -497
  218. package/src/components/page/outbound/pick/box/index.js +11 -11
  219. package/src/components/page/outbound/pick/box/index.vue +363 -363
  220. package/src/components/page/outbound/pick/components/dataLookAndChange/index.vue +748 -748
  221. package/src/components/page/outbound/pick/components/skuLocationInfo/index.vue +208 -208
  222. package/src/components/page/outbound/pick/components/splitPutDown/index.vue +208 -208
  223. package/src/components/page/outbound/pick/index/index.js +11 -11
  224. package/src/components/page/outbound/pick/index/index.vue +624 -624
  225. package/src/components/page/outbound/pick/lpn/index.js +11 -11
  226. package/src/components/page/outbound/pick/lpn/index.vue +305 -305
  227. package/src/components/page/outbound/pick/mixin/all.js +100 -100
  228. package/src/components/page/outbound/pick/mixin/aloneAndNotAlone.js +132 -132
  229. package/src/components/page/outbound/pick/notAlone/index.js +11 -11
  230. package/src/components/page/outbound/pick/notAlone/index.vue +524 -524
  231. package/src/components/page/outbound/pickMerge/action/index.js +11 -11
  232. package/src/components/page/outbound/pickMerge/action/index.vue +543 -543
  233. package/src/components/page/outbound/pickMerge/components/containerInfo/index.vue +89 -89
  234. package/src/components/page/outbound/pickMerge/components/finishPopup/index.vue +88 -88
  235. package/src/components/page/outbound/pickMerge/components/skuInfo/index.vue +132 -132
  236. package/src/components/page/outbound/pickMerge/content/index.js +11 -11
  237. package/src/components/page/outbound/pickMerge/content/index.vue +170 -170
  238. package/src/components/page/outbound/pickMerge/index/index.js +11 -11
  239. package/src/components/page/outbound/pickMerge/index/index.vue +77 -77
  240. package/src/components/page/outbound/sow/action/index.js +11 -11
  241. package/src/components/page/outbound/sow/action/index.vue +1420 -1420
  242. package/src/components/page/outbound/sow/components/sowLocationList/index.vue +80 -80
  243. package/src/components/page/outbound/sow/components/waitSowCollapse/index.vue +105 -105
  244. package/src/components/page/outbound/sow/index/index.js +11 -11
  245. package/src/components/page/outbound/sow/index/index.vue +374 -374
  246. package/src/components/page/outbound/summary/box/index/index.js +11 -11
  247. package/src/components/page/outbound/summary/box/index/index.vue +645 -645
  248. package/src/components/page/outbound/summary/lpn/action/index.js +12 -12
  249. package/src/components/page/outbound/summary/lpn/action/index.vue +253 -253
  250. package/src/components/page/outbound/summary/lpn/index/index.js +12 -12
  251. package/src/components/page/outbound/summary/lpn/index/index.vue +70 -70
  252. package/src/components/page/receive/abnormal/action/index.js +11 -11
  253. package/src/components/page/receive/abnormal/action/index.vue +45 -45
  254. package/src/components/page/receive/abnormal/index/index.js +11 -11
  255. package/src/components/page/receive/abnormal/index/index.vue +73 -73
  256. package/src/components/page/receive/index.js +36 -36
  257. package/src/components/page/receive/putaway/components/SkuInfo/index.vue +247 -247
  258. package/src/components/page/receive/putaway/components/SkuPutAwayInfo/index.vue +203 -203
  259. package/src/components/page/receive/putaway/components/TaskInfo/index.vue +216 -216
  260. package/src/components/page/receive/putaway/index/index.js +11 -11
  261. package/src/components/page/receive/putaway/index/index.vue +288 -288
  262. package/src/components/page/receive/putaway/lpnAction/index.js +11 -11
  263. package/src/components/page/receive/putaway/lpnAction/index.vue +332 -332
  264. package/src/components/page/receive/putaway/skuAction/index.js +11 -11
  265. package/src/components/page/receive/putaway/skuAction/index.vue +742 -741
  266. package/src/components/page/receive/receipt/action/index.js +11 -11
  267. package/src/components/page/receive/receipt/action/index.vue +260 -260
  268. package/src/components/page/receive/receipt/index/index.js +11 -11
  269. package/src/components/page/receive/receipt/index/index.vue +124 -124
  270. package/src/components/ui/BottomBar/index.js +5 -5
  271. package/src/components/ui/BottomBar/index.vue +72 -72
  272. package/src/components/ui/BottomBarBtnHidden/index.js +11 -11
  273. package/src/components/ui/BottomBarBtnHidden/index.vue +91 -91
  274. package/src/components/ui/Button/index.js +5 -5
  275. package/src/components/ui/Button/index.vue +183 -183
  276. package/src/components/ui/CarPlate/index.js +11 -11
  277. package/src/components/ui/CarPlate/index.vue +378 -378
  278. package/src/components/ui/CarPlate//350/275/246/347/211/214/345/217/267.md +1 -1
  279. package/src/components/ui/Cell/index.js +5 -5
  280. package/src/components/ui/Cell/index.vue +259 -259
  281. package/src/components/ui/CellPopupDate/index.js +11 -11
  282. package/src/components/ui/CellPopupDate/index.vue +167 -167
  283. 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
  284. package/src/components/ui/CellPopupRadio/index.js +11 -11
  285. package/src/components/ui/CellPopupRadio/index.vue +136 -136
  286. 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
  287. package/src/components/ui/CutCard/index.js +11 -11
  288. package/src/components/ui/CutCard/index.vue +132 -132
  289. 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
  290. package/src/components/ui/DataLookBg/index.js +11 -11
  291. package/src/components/ui/DataLookBg/index.vue +104 -104
  292. 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
  293. package/src/components/ui/ErrorMsg/index.js +59 -59
  294. package/src/components/ui/ErrorMsg/index.vue +141 -141
  295. package/src/components/ui/Form/index.js +5 -5
  296. package/src/components/ui/Form/index.vue +36 -36
  297. package/src/components/ui/ImgLook/index.js +5 -5
  298. package/src/components/ui/ImgLook/index.vue +96 -96
  299. package/src/components/ui/ImgUpload/index.js +12 -12
  300. package/src/components/ui/ImgUpload/index.vue +120 -120
  301. package/src/components/ui/Input/index.js +5 -5
  302. package/src/components/ui/Input/index.vue +554 -546
  303. package/src/components/ui/Input//350/276/223/345/205/245/346/241/206.md +1 -1
  304. package/src/components/ui/Loading/index.js +49 -49
  305. package/src/components/ui/Loading/index.vue +61 -61
  306. package/src/components/ui/MenuItem/index.js +5 -5
  307. package/src/components/ui/MenuItem/index.vue +170 -170
  308. package/src/components/ui/NavBar/index.js +5 -5
  309. package/src/components/ui/NavBar/index.vue +143 -143
  310. package/src/components/ui/NavBar//351/241/266/351/203/250/345/257/274/350/210/252/346/240/217.md +1 -1
  311. package/src/components/ui/NotData/index.js +5 -5
  312. package/src/components/ui/NotData/index.vue +75 -75
  313. package/src/components/ui/Pages/index.js +5 -5
  314. package/src/components/ui/Pages/index.vue +186 -186
  315. package/src/components/ui/Popup/index.js +5 -5
  316. package/src/components/ui/Popup/index.vue +245 -245
  317. package/src/components/ui/PopupCheckbox/index.js +5 -5
  318. package/src/components/ui/PopupCheckbox/index.vue +207 -207
  319. package/src/components/ui/PopupRadio/index.js +5 -5
  320. package/src/components/ui/PopupRadio/index.vue +124 -124
  321. package/src/components/ui/TabBar/index.js +11 -11
  322. package/src/components/ui/TabBar/index.vue +132 -132
  323. package/src/components/ui/TabBar//345/272/225/351/203/250/345/257/274/350/210/252/346/240/217.md +1 -1
  324. package/src/components/ui/Table/index.js +5 -5
  325. package/src/components/ui/Table/index.vue +213 -213
  326. package/src/components/ui/Tag/index.js +5 -5
  327. package/src/components/ui/Tag/index.vue +142 -142
  328. package/src/components/ui/TitleValueCell/index.js +11 -11
  329. package/src/components/ui/TitleValueCell/index.vue +61 -61
  330. package/src/components/ui/index.js +84 -84
  331. package/src/directive/Permissions.js +35 -35
  332. package/src/directive/index.js +12 -12
  333. package/src/index.js +67 -67
  334. package/src/mixins/loginAndInit/index.js +27 -0
  335. package/src/mixins/loginAndInit//346/234/211token/346/227/266/345/200/231/345/222/214/346/234/211/344/273/223/345/272/223id/346/227/266/351/234/200/350/246/201/345/210/235/345/247/213/345/214/226/347/232/204/346/225/260/346/215/256.md +0 -0
  336. package/src/mixins//346/267/267/345/205/245.md +0 -0
  337. package/src/router/index.js +405 -405
  338. package/src/router/menu.js +367 -367
  339. package/src/test/file/index.js +11 -11
  340. package/src/test/file/index.vue +25 -25
  341. package/src/utils/ApiUtils.js +48 -48
  342. package/src/utils/AppBack.js +44 -44
  343. package/src/utils/Axios.js +160 -160
  344. package/src/utils/BarcodeResolve.js +281 -281
  345. package/src/utils/DateTime.js +219 -219
  346. package/src/utils/DeepCopy.js +61 -61
  347. package/src/utils/Dict.js +73 -73
  348. package/src/utils/GetImgSrc.js +53 -53
  349. package/src/utils/Init.js +12 -12
  350. package/src/utils/Language.js +59 -59
  351. package/src/utils/LocalStorage.js +30 -30
  352. package/src/utils/Permissions.js +51 -51
  353. package/src/utils/Print.js +179 -179
  354. package/src/utils/README.md +2 -2
  355. package/src/utils/RouteInit.js +14 -14
  356. package/src/utils/ScanRule.js +150 -150
  357. package/src/utils/SetColor.js +22 -22
  358. package/src/utils/TabBar.js +30 -30
  359. package/src/utils/Tip.js +26 -26
  360. package/src/utils/Toast.js +41 -41
  361. package/src/utils/UUID.js +33 -33
  362. package/src/utils/Warehouse.js +26 -26
  363. package/src/utils/index.js +63 -63
  364. package/src/utils/windowGlobalData.js +88 -88
  365. package/src/views/common/home/index.vue +67 -67
  366. package/src/views/common/init/index.vue +128 -124
  367. package/src/views/common/login/index.vue +23 -23
  368. package/src/views/common/menu/menuOne.vue +36 -36
  369. package/src/views/common/menu/menuTwo.vue +33 -33
  370. package/src/views/common/my/device.vue +23 -23
  371. package/src/views/common/my/index.vue +23 -23
  372. package/src/views/common/my/language.vue +23 -23
  373. package/src/views/common/my/msg.vue +23 -23
  374. package/src/views/common/my/print.vue +23 -23
  375. package/src/views/common/my/warehouse.vue +25 -25
  376. package/src/views/common/task/index.vue +23 -23
  377. package/src/views/count/index.vue +87 -87
  378. package/src/views/count/inv/action.vue +12 -12
  379. package/src/views/count/inv/index.vue +12 -12
  380. package/src/views/count/loc/action.vue +12 -12
  381. package/src/views/count/loc/index.vue +12 -12
  382. package/src/views/inbound/newProject/action.vue +23 -23
  383. package/src/views/inbound/newProject/index.vue +23 -23
  384. package/src/views/inbound/quality/InboundQualityExecuteView.vue +11 -11
  385. package/src/views/inbound/quality/InboundQualityTaskListView.vue +11 -11
  386. package/src/views/inbound/receive/home.vue +14 -14
  387. package/src/views/inbound/receive/index.vue +13 -13
  388. package/src/views/inbound/receive/sku/InboundReceiveSkuAdvanceView.vue +13 -13
  389. package/src/views/inbound/receive/sku/InboundReceiveSkuDirectView.vue +13 -13
  390. package/src/views/inbound/receive/sku/InboundReceiveSkuScanView.vue +13 -13
  391. package/src/views/inner/abnormalMove/index.vue +23 -23
  392. package/src/views/inner/disposeAbnormal/action.vue +23 -23
  393. package/src/views/inner/disposeAbnormal/index.vue +23 -23
  394. package/src/views/inner/lpnMove/action.vue +23 -23
  395. package/src/views/inner/lpnMove/index.vue +23 -23
  396. package/src/views/inner/materialApply/action.vue +22 -22
  397. package/src/views/inner/materialApply/generate.vue +22 -22
  398. package/src/views/inner/movePutAway/index.vue +22 -22
  399. package/src/views/inner/randomMove/index.vue +23 -23
  400. package/src/views/inner/reportAbnormal/action.vue +23 -23
  401. package/src/views/inner/reportAbnormal/index.vue +23 -23
  402. package/src/views/inner/taskMove/index.vue +23 -23
  403. package/src/views/outbound/aloneBale/action.vue +23 -23
  404. package/src/views/outbound/aloneBale/index.vue +23 -23
  405. package/src/views/outbound/aloneBale/newBale.vue +23 -23
  406. package/src/views/outbound/bale/action.vue +23 -23
  407. package/src/views/outbound/bale/allCheck.vue +23 -23
  408. package/src/views/outbound/bale/index.vue +23 -23
  409. package/src/views/outbound/bale/newBale.vue +23 -23
  410. package/src/views/outbound/delivery/action.vue +23 -23
  411. package/src/views/outbound/delivery/addOrder.vue +23 -23
  412. package/src/views/outbound/delivery/index.vue +23 -23
  413. package/src/views/outbound/pick/aloneAction.vue +23 -23
  414. package/src/views/outbound/pick/boxAction.vue +23 -23
  415. package/src/views/outbound/pick/index.vue +23 -23
  416. package/src/views/outbound/pick/lpnAction.vue +23 -23
  417. package/src/views/outbound/pick/notAloneAction.vue +23 -23
  418. package/src/views/outbound/pickMerge/action.vue +23 -23
  419. package/src/views/outbound/pickMerge/content.vue +23 -23
  420. package/src/views/outbound/pickMerge/index.vue +23 -23
  421. package/src/views/outbound/sow/action.vue +23 -23
  422. package/src/views/outbound/sow/index.vue +23 -23
  423. package/src/views/outbound/summary/box/index.vue +23 -23
  424. package/src/views/outbound/summary/lpn/action.vue +23 -23
  425. package/src/views/outbound/summary/lpn/index.vue +23 -23
  426. package/src/views/receive/abnormal/action.vue +23 -23
  427. package/src/views/receive/abnormal/index.vue +24 -24
  428. package/src/views/receive/putaway/index.vue +23 -23
  429. package/src/views/receive/putaway/lpnAction.vue +23 -23
  430. package/src/views/receive/putaway/skuAction.vue +23 -23
  431. package/src/views/receive/receipt/action.vue +25 -25
  432. package/src/views/receive/receipt/index.vue +25 -25
@@ -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>