singleOutShelf.js 12 KB

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