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