singleOutShelf.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434
  1. var focusId;
  2. $(function(){
  3. $("input").focus(function(){
  4. //记住焦点位置
  5. focusId = this.id;
  6. //this.scrollIntoView(true);//回到顶部
  7. //window.setTimeout("myScrollIntoView()",100);
  8. });
  9. setTimeout(function() {
  10. $('#outOrderNo').focus();
  11. }, 1000);
  12. //同步手工改数量
  13. var last_qty = $("#_quantity").val();
  14. function setQuantity(){
  15. var _qty = $("#_quantity").val();
  16. if(_qty < 0){
  17. $("#_quantity").val(0);
  18. return;
  19. }
  20. if(_qty == last_qty){
  21. return;
  22. }
  23. last_qty = _qty;
  24. $("#productQty").val(_qty);
  25. }
  26. window.setInterval(setQuantity,500);
  27. //当失去焦点按回车时,焦点回到之前焦点位置
  28. $(window).keydown(function(event){
  29. if((event.keyCode==13)) {
  30. $(".messager-body").window('close');
  31. if(document.activeElement.id == null || document.activeElement.id ==''){
  32. //回到上次焦点地方
  33. //$("#"+focusId).focus();
  34. }
  35. }
  36. });
  37. //提交出库单号
  38. $('#outOrderNo').keyup(function (event) {
  39. console.log("event.keyCode:"+event.keyCode)
  40. if (event.keyCode != "13") {return false;}
  41. $("#outOrderNo").val(trimStr($("#outOrderNo").val()));
  42. //播放扫描声音
  43. playSound('../raw/scan.wav');
  44. submitOutOrderNo();
  45. });
  46. // //库位号回车
  47. // $('#locationCode').keyup(function (event) {
  48. // if (event.keyCode != "13") {return false;}
  49. // $("#locationCode").val(trimStr($("#locationCode").val()));
  50. // //播放扫描声音
  51. // playSound('../raw/scan.wav');
  52. // $('#barcode').focus();
  53. // });
  54. //条码回车
  55. $('#barcode').keyup(function (event) {
  56. if (event.keyCode != "13") {return false;}
  57. $("#barcode").val(trimStr($("#barcode").val()));
  58. //播放扫描声音
  59. playSound('../raw/scan.wav');
  60. submitBarcode();
  61. });
  62. //提交
  63. $('#productQty').keyup(function (event) {
  64. if (event.keyCode != "13") {return false;}
  65. $("#productQty").val(trimStr($("#productQty").val()));
  66. submitOutShelf();
  67. });
  68. });
  69. //提交出库单号
  70. function submitOutOrderNo(){
  71. var outOrderNo = $('#outOrderNo').val();
  72. if(outOrderNo == ''){return;}
  73. var appRequest = $appRequest;//复制请求封装对象
  74. appRequest.opType = OP_TYPE_MENU.OUT_SHELF_1;
  75. appRequest.msg = outOrderNo;//msg是消息内容主体
  76. console.log("请求后台提交出库单")
  77. console.log($appRequestUrl)
  78. $.ajax({
  79. type: 'POST',
  80. url: $appRequestUrl,
  81. contentType: "application/json; charset=utf-8",
  82. data: JSON.stringify(appRequest),
  83. success: function (appResponse) {
  84. if(!appResponse.success){
  85. playSound('../raw/error.wav');
  86. mui.alert(appResponse.msg, '警告', function() { setFocus('orderNo'); });
  87. return;
  88. }
  89. mui.toast(appResponse.msg);
  90. var outOrder = appResponse.extend;
  91. $("#outOrderId").val(outOrder.id);
  92. $("#customerCode").val(outOrder.customerCode);
  93. $("#warehouseCode").val(outOrder.warehouseCode);
  94. $("#statusName").text(outOrder.statusName);
  95. $("#shipwayName").text(outOrder.shipwayName);
  96. // 清空输入框
  97. nextBarcode();
  98. refreshItems();
  99. //进入下架操作
  100. $("#barcode").focus();
  101. },
  102. error: function () {
  103. playSound('../raw/error.wav');
  104. mui.toast('网络断开或服务器发生异常');
  105. }
  106. });
  107. }
  108. var isShowDetails = false;
  109. function showDetails(){
  110. if(!isShowDetails){
  111. $("#showDetails").show();
  112. isShowDetails = true;
  113. $("#showIco").attr("class", "fa fa-angle-double-up");
  114. //刷新明细
  115. refreshItems();
  116. }else{
  117. $("#showDetails").hide();
  118. isShowDetails = false;
  119. $("#showIco").attr("class", "fa fa-angle-double-down");
  120. }
  121. //回到上次焦点地方
  122. if(focusId!=null && focusId != ''){
  123. $("#"+focusId).focus();
  124. }
  125. }
  126. //显示待下架明细
  127. function refreshItems(){
  128. var outOrderNo = $('#outOrderNo').val();
  129. var outOrderId = $('#outOrderId').val();
  130. if(outOrderId == ''){return;}
  131. var appRequest = $appRequest;//复制请求封装对象
  132. appRequest.opType = OP_TYPE_MENU.OUT_SHELF_2;
  133. appRequest.msg = outOrderId;//msg是消息内容主体
  134. $("#itemList").empty();
  135. $.ajax({
  136. type: 'POST',
  137. url: $appRequestUrl,
  138. contentType: "application/json; charset=utf-8",
  139. data: JSON.stringify(appRequest),
  140. success: function (appResponse) {
  141. if(!appResponse.success){
  142. //playSound('../raw/error.wav');
  143. //mui.alert(appResponse.msg, '警告', function() { setFocus('orderNo'); });
  144. return;
  145. }
  146. var waitQtyTotal = 0;
  147. var itemList = appResponse.extend;
  148. for(var index = 0; index < itemList.length; index ++){
  149. var item = itemList[index];
  150. handleNullFiled(item);
  151. var waitOutQty = item.quantity - item.outQuantity;//未下架数量
  152. waitQtyTotal += waitOutQty;
  153. if(waitOutQty > 0){
  154. waitOutQty = "<span style='color:red;'><b>"+waitOutQty+"</b></span>";
  155. }
  156. var tr = "<tr id='item_"+item.id+"'>";
  157. tr += "<th><div style='width:100%;overflow: hidden;font-size: 9pt;text-align: left;'>"+item.barcode+"</div></th>";
  158. tr += "<th><div style='width:100%;overflow: hidden;font-size: 9pt;text-align: left;'>"+item.locationCode+"</div></th>";
  159. tr += "<th><div style='width:100%;overflow: hidden;font-size: 9pt;text-align: left;'>"+waitOutQty+"</div></th>";
  160. tr += "</tr>";
  161. $("#itemList").append(tr);
  162. }
  163. //总待下架数量
  164. $("#waitQtyTotal").text(waitQtyTotal);
  165. },
  166. error: function () {
  167. playSound('../raw/error.wav');
  168. mui.toast('网络断开或服务器发生异常');
  169. }
  170. });
  171. }
  172. //提交条码
  173. function submitBarcode(){
  174. var outOrderNo = $('#outOrderNo').val();
  175. var outOrderId=$("#outOrderId").val();
  176. var barcode= $('#barcode').val();
  177. // var locationCode=$('#locationCode').val();
  178. var formData={};
  179. formData.outOrderNo=outOrderNo;
  180. formData.outOrderId=outOrderId;
  181. // formData.locationCode=locationCode;
  182. formData.barcode=barcode;
  183. var appRequest = $appRequest;//复制请求封装对象
  184. appRequest.opType = OP_TYPE_MENU.OUT_SHELF_3;
  185. appRequest.msg = JSON.stringify(formData);//msg是消息内容主体
  186. $.ajax({
  187. type: 'POST',
  188. url: $appRequestUrl,
  189. contentType: "application/json; charset=utf-8",
  190. data: JSON.stringify(appRequest),
  191. success: function (appResponse) {
  192. if(!appResponse.success){
  193. playSound('../raw/error.wav');
  194. mui.alert(appResponse.msg, '警告', function() { setFocus('orderNo'); });
  195. return;
  196. }
  197. //mui.toast(appResponse.msg);
  198. //返回待下架记录 可能是多条
  199. var list = appResponse.extend;
  200. if(list.length == 0 ){
  201. playSound('../raw/error.wav');
  202. mui.alert('后台返回list长度为0', '警告', function() { setFocus('barcode'); });
  203. return;
  204. }
  205. //暂先只处理第一条.. 后续可改为界面选择一条
  206. var allocation = list[0];
  207. $("#allocationId").val(allocation.id);//收货记录id
  208. $("#batchNo").val(allocation.batchNo);//批次号码
  209. $("#barcodeShow").val(barcode);//显示商品条码
  210. $("#qualityCode").val(allocation.qualityName);//显示商品品质
  211. //待下架数量
  212. var waitOutQty = allocation.quantity - allocation.outQuantity;
  213. //判断是否扫描条码增加数量
  214. if($("#isAutoCount").val() == 'true'){
  215. //扫描加1
  216. var oralQty = $("#productQty").val();
  217. if(oralQty == null || oralQty == ''){oralQty = 0;}
  218. var nowQty = (parseInt(oralQty)+1);
  219. $("#productQty").val(nowQty);
  220. //回到条码输入框,用户应当继续扫描条码
  221. $("#barcode").val('');//清空条码,用户只需要看展示条码,最后手工点击提交
  222. setFocus('barcode');
  223. //数量满足时自动提交
  224. if(nowQty >= waitOutQty){
  225. submitOutShelf();
  226. }
  227. } else {
  228. $("#productQty").val(waitOutQty);//待下架数量
  229. setFocus('productQty');
  230. }
  231. },
  232. error: function () {
  233. playSound('../raw/error.wav');
  234. mui.toast('网络断开或服务器发生异常');
  235. }
  236. });
  237. }
  238. //提交呢下架
  239. var isSubmintIng = false;//是否正在提交
  240. function submitOutShelf(){
  241. console.log("提交下架:")
  242. if(isSubmintIng){return;}
  243. isSubmintIng = true;
  244. console.log("1")
  245. var outOrderId=$("#outOrderId").val();
  246. var outOrderNo = $('#outOrderNo').val();
  247. var allocationId=$('#allocationId').val();
  248. // var locationCode=$('#locationCode').val();
  249. //如果是扫描增加数量,条码输入框是空的,从展示条码取
  250. var barcode= $('#barcode').val();
  251. if(barcode == null || barcode == ''){
  252. barcode = $("#barcodeShow").val();
  253. $('#barcode').val(barcode);
  254. }
  255. console.log("2")
  256. var productQty=$("#productQty").val();
  257. if(outOrderId == '' || barcode == ''){
  258. mui.alert("商品条码,订单号 为必填项", '警告');
  259. isSubmintIng = false;
  260. return;
  261. }
  262. var formData={};
  263. formData.outOrderId=outOrderId;
  264. formData.outOrderNo=outOrderNo;
  265. formData.quantity=productQty;
  266. formData.allocationId=allocationId;
  267. // formData.locationCode=locationCode;
  268. formData.barcode=barcode;
  269. var appRequest = $appRequest;//复制请求封装对象
  270. appRequest.opType = OP_TYPE_MENU.OUT_SHELF_4;
  271. appRequest.msg = JSON.stringify(formData);//msg是消息内容主体
  272. console.log("提交参数:"+JSON.stringify(appRequest));
  273. var nwaiting = plus.nativeUI.showWaiting('正在提交中...');
  274. $.ajax({
  275. type: 'POST',
  276. url: $appRequestUrl,
  277. contentType: "application/json; charset=utf-8",
  278. data: JSON.stringify(appRequest),
  279. success: function (appResponse) {
  280. console.log(appResponse)
  281. isSubmintIng = false;
  282. nwaiting.close();
  283. if(!appResponse.success){
  284. playSound('../raw/error.wav');
  285. mui.alert(appResponse.msg, '警告', function() { setFocus('barcode'); });
  286. return;
  287. }
  288. mui.toast(appResponse.msg);
  289. //播放成功声音
  290. playSound('../raw/ok.wav');
  291. //智能判断该库位还有没有待下架的其他条码.如果还有,不要清空库位条码
  292. if(appResponse.extend == '1'){//该库位未下架完成
  293. //下一个条码
  294. nextBarcode();
  295. refreshItems();
  296. return;
  297. }
  298. if(appResponse.extend == '2'){//该库位已下架完成
  299. //下一个库位
  300. nextBarcode();
  301. refreshItems();
  302. return;
  303. }
  304. //整单完成. 下一个出库单
  305. if(appResponse.extend == '3'){
  306. cleanAll();
  307. }
  308. },
  309. error: function () {
  310. isSubmintIng = false;
  311. nwaiting.close();
  312. playSound('../raw/error.wav');
  313. mui.toast('网络断开或服务器发生异常');
  314. }
  315. });
  316. }
  317. //下一个订单
  318. function cleanAll(){
  319. isSubmintIng = false;
  320. $("#outOrderId").val("");
  321. $("#outOrderNo").val("");
  322. $("#statusName").text("");
  323. $("#shipwayName").text("");
  324. $("#waitQtyTotal").text("");
  325. $("#itemList").empty();
  326. $("#warehouseCode").val("");
  327. $("#customerCode").val("");
  328. // $("#locationCode").val("");
  329. $("#barcode").val("");
  330. $("#allocationId").val("");
  331. $("#batchNo").val("");
  332. $("#barcodeShow").val("");
  333. $("#qualityCode").val("");
  334. $("#productQty").val("");
  335. $("#_quantity").val("0");
  336. $('#outOrderNo').focus();
  337. }
  338. function nextLocation(){
  339. $("#locationCode").val("");
  340. $("#barcode").val("");
  341. $("#allocationId").val("");
  342. $("#batchNo").val("");
  343. $("#barcodeShow").val("");
  344. $("#qualityCode").val("");
  345. $("#productQty").val("");
  346. $("#_quantity").val("0");
  347. $('#locationCode').focus();
  348. }
  349. function nextBarcode(){
  350. $("#barcode").val("");
  351. $("#allocationId").val("");
  352. $("#batchNo").val("");
  353. $("#barcodeShow").val("");
  354. $("#qualityCode").val("");
  355. $("#productQty").val("");
  356. $("#_quantity").val("0");
  357. $('#barcode').focus();
  358. }