outBoxed.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456
  1. $(function(){
  2. var focusId;
  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. if (event.keyCode != "13") {return false;}
  40. $("#outOrderNo").val(trimStr($("#outOrderNo").val()));
  41. //播放扫描声音
  42. playSound('../raw/scan.wav');
  43. submitOutOrderNo();
  44. });
  45. //提交箱号
  46. $('#boxNo').keyup(function (event) {
  47. if (event.keyCode != "13") {return false;}
  48. $("#boxNo").val(trimStr($("#boxNo").val()));
  49. //播放扫描声音
  50. playSound('../raw/scan.wav');
  51. submitBoxNo();
  52. });
  53. //条码回车
  54. $('#barcode').keyup(function (event) {
  55. if (event.keyCode != "13") {return false;}
  56. $("#barcode").val(trimStr($("#barcode").val()));
  57. //播放扫描声音
  58. playSound('../raw/scan.wav');
  59. submitBarcode();
  60. });
  61. //提交
  62. $('#productQty').keyup(function (event) {
  63. if (event.keyCode != "13") {return false;}
  64. $("#productQty").val(trimStr($("#productQty").val()));
  65. submitOutBox();
  66. });
  67. });
  68. //提交出库单号
  69. function submitOutOrderNo(){
  70. var outOrderNo = $('#outOrderNo').val();
  71. if(outOrderNo == ''){return;}
  72. var appRequest = $appRequest;//复制请求封装对象
  73. appRequest.opType = OP_TYPE_MENU.OUT_BOXED_1;
  74. appRequest.msg = outOrderNo;//msg是消息内容主体
  75. $.ajax({
  76. type: 'POST',
  77. url: $appRequestUrl,
  78. contentType: "application/json; charset=utf-8",
  79. data: JSON.stringify(appRequest),
  80. success: function (appResponse) {
  81. if(!appResponse.success){
  82. playSound('../raw/error.wav');
  83. mui.alert(appResponse.msg, '警告', function() { setFocus('orderNo'); });
  84. return;
  85. }
  86. mui.toast(appResponse.msg);
  87. var outOrder = appResponse.extend;
  88. $("#outOrderId").val(outOrder.id);
  89. $("#customerCode").val(outOrder.customerCode);
  90. $("#warehouseCode").val(outOrder.warehouseCode);
  91. $("#statusName").text(outOrder.statusName);
  92. $("#shipwayName").text(outOrder.shipwayName);
  93. //刷新显示待装箱明细
  94. refreshItems();
  95. //进入箱子操作
  96. nextBox();//自动生成箱号
  97. //自动提交箱号
  98. if($("#isAutoCreateBox").val() == 'true'){submitBoxNo();}
  99. },
  100. error: function () {
  101. playSound('../raw/error.wav');
  102. mui.toast('网络断开或服务器发生异常');
  103. }
  104. });
  105. }
  106. var isShowDetails = false;
  107. function showDetails(){
  108. if(!isShowDetails){
  109. $("#showDetails").show();
  110. isShowDetails = true;
  111. $("#showIco").attr("class", "fa fa-angle-double-up");
  112. //刷新明细
  113. refreshItems();
  114. }else{
  115. $("#showDetails").hide();
  116. isShowDetails = false;
  117. $("#showIco").attr("class", "fa fa-angle-double-down");
  118. }
  119. //回到上次焦点地方
  120. if(focusId!=null && focusId != ''){
  121. $("#"+focusId).focus();
  122. }
  123. }
  124. //刷新显示待装箱明细
  125. function refreshItems(){
  126. var outOrderNo = $('#outOrderNo').val();
  127. var outOrderId = $('#outOrderId').val();
  128. if(outOrderId == ''){return;}
  129. var appRequest = $appRequest;//复制请求封装对象
  130. appRequest.opType = OP_TYPE_MENU.OUT_BOXED_2;
  131. appRequest.msg = outOrderId;//msg是消息内容主体
  132. $("#itemList").empty();
  133. $.ajax({
  134. type: 'POST',
  135. url: $appRequestUrl,
  136. contentType: "application/json; charset=utf-8",
  137. data: JSON.stringify(appRequest),
  138. success: function (appResponse) {
  139. if(!appResponse.success){
  140. playSound('../raw/error.wav');
  141. mui.alert(appResponse.msg, '警告', function() { setFocus('orderNo'); });
  142. return;
  143. }
  144. //mui.toast(appResponse.msg);
  145. var waitQtyTotal = 0;
  146. var itemList = appResponse.extend;
  147. for(var index = 0; index < itemList.length; index ++){
  148. var item = itemList[index];
  149. handleNullFiled(item);
  150. item.boxedQty = item.boxedQty != null ? item.boxedQty:0;
  151. var waitBoxQty = item.totalQty - item.boxedQty;//未装数量
  152. waitQtyTotal += waitBoxQty;
  153. if(waitBoxQty > 0){
  154. waitBoxQty = "<span style='color:red;'><b>"+waitBoxQty+"</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.totalQty+"</div></th>";
  159. tr += "<th><div style='width:100%overflow: hidden;font-size: 9pt;text-align: left;'>"+waitBoxQty+"</div></th>";
  160. tr += "</tr>";
  161. $("#itemList").append(tr);
  162. }
  163. $("#waitQtyTotal").text(waitQtyTotal);
  164. },
  165. error: function () {
  166. mui.toast('网络断开或服务器发生异常');
  167. }
  168. });
  169. }
  170. //提交箱号
  171. //提交装箱
  172. var isSubmintBoxNoIng = false;//是否正在提交
  173. function submitBoxNo(){
  174. if(isSubmintBoxNoIng){return;}
  175. isSubmintBoxNoIng = true;
  176. var boxNo = $('#boxNo').val();
  177. var outOrderNo = $('#outOrderNo').val();
  178. var outOrderId = $('#outOrderId').val();
  179. if(boxNo=='' || boxNo==null){
  180. mui.toast('箱号不能为空');
  181. return
  182. }
  183. if(outOrderNo=='' || outOrderNo==null){
  184. mui.toast('订单号不能为空');
  185. return
  186. }
  187. var formData = {outOrderId:outOrderId,outOrderNo:outOrderNo,boxNo:boxNo};
  188. var appRequest = $appRequest;//复制请求封装对象
  189. appRequest.opType = OP_TYPE_MENU.OUT_BOXED_3;
  190. appRequest.msg = JSON.stringify(formData);//msg是消息内容主体
  191. $.ajax({
  192. type: 'POST',
  193. url: $appRequestUrl,
  194. contentType: "application/json; charset=utf-8",
  195. data: JSON.stringify(appRequest),
  196. success: function (appResponse) {
  197. isSubmintBoxNoIng = false;
  198. if(!appResponse.success){
  199. playSound('../raw/error.wav');
  200. mui.alert(appResponse.msg, '警告', function() { setFocus('orderNo'); });
  201. return;
  202. }
  203. var box = appResponse.extend;
  204. $("#boxId").val(box.id);
  205. nextBarcode();
  206. },
  207. error: function () {
  208. isSubmintBoxNoIng = false;
  209. mui.toast('网络断开或服务器发生异常');
  210. }
  211. });
  212. }
  213. //提交条码
  214. function submitBarcode(){
  215. var outOrderNo = $('#outOrderNo').val();
  216. var outOrderId=$("#outOrderId").val();
  217. var boxNo=$('#boxNo').val();
  218. var barcode= $('#barcode').val();
  219. if(outOrderId == ''){
  220. mui.toast('请先提交出库单号');
  221. return;
  222. }
  223. if(boxNo == ''){
  224. mui.toast('箱子号码不能为空');
  225. return;
  226. }
  227. if(barcode == ''){
  228. mui.toast('商品条码不能为空');
  229. return;
  230. }
  231. //显示商品条码
  232. $("#barcodeShow").val(barcode);
  233. //判断是否扫描条码增加数量
  234. if($('#autoSubmit').val() == 'true') {
  235. //扫描加1
  236. var oralQty = $("#productQty").val();
  237. if(oralQty == null || oralQty == ''){oralQty = 0;}
  238. $("#productQty").val((parseInt(oralQty)+1));
  239. //回到条码输入框,用户应当继续扫描条码
  240. //每扫一条就自动提交,因为商品摆放是杂乱的.不能要求每次拿相同的商品扫
  241. submitOutBox(); //-- 每扫描一次,提交,并判断完成整单还是整个条码
  242. //刷新明细,交互次数太多... --待改善
  243. } else {
  244. //非自动提交.. 需手工输入装箱数量
  245. $("#productQty").val("");//装箱数量
  246. setFocus('productQty');
  247. }
  248. }
  249. //提交装箱
  250. var isSubmintIng = false;//是否正在提交
  251. function submitOutBox(){
  252. if(isSubmintIng){return;}
  253. isSubmintIng = true;
  254. var outOrderNo = $('#outOrderNo').val();
  255. var outOrderId = $('#outOrderId').val();
  256. var boxNo = $('#boxNo').val();
  257. var boxId = $('#boxId').val();
  258. var barcode = $("#barcode").val();
  259. //如果是扫描增加数量,条码输入框是空的,从展示条码取
  260. var barcode= $('#barcode').val();
  261. if(barcode == null || barcode == ''){
  262. barcode = $("#barcodeShow").val();
  263. $('#barcode').val(barcode);
  264. }
  265. var productQty = $("#productQty").val();
  266. if(boxNo==''){
  267. isSubmintIng = false;
  268. mui.alert('箱号不能为空', '警告', function() { setFocus('boxNo'); });
  269. return;
  270. }
  271. if(boxId==''){
  272. isSubmintIng = false;
  273. mui.alert('请先提交箱号,在箱号输入框按回车', '警告', function() { setFocus('boxNo'); });
  274. return;
  275. }
  276. if(productQty==''){
  277. isSubmintIng = false;
  278. mui.alert('商品数量不能为空', '警告', function() { setFocus('productQty'); });
  279. return;
  280. }
  281. if(barcode==''){
  282. isSubmintIng = false;
  283. mui.alert('条码不能为空', '警告', function() { setFocus('barcode'); });
  284. return
  285. }
  286. if(outOrderNo==''){
  287. isSubmintIng = false;
  288. mui.alert('订单号不能为空', '警告', function() { setFocus('outOrderNo'); });
  289. return;
  290. }
  291. var formData = {outOrderId:outOrderId,outOrderNo:outOrderNo,boxNo:boxNo,boxId:boxId,barcode:barcode,productQty:productQty};
  292. var appRequest = $appRequest;//复制请求封装对象
  293. appRequest.opType = OP_TYPE_MENU.OUT_BOXED_4;
  294. appRequest.msg = JSON.stringify(formData);//msg是消息内容主体
  295. var nwaiting = plus.nativeUI.showWaiting('正在提交中...');
  296. $.ajax({
  297. type: 'POST',
  298. url: $appRequestUrl,
  299. contentType: "application/json; charset=utf-8",
  300. data: JSON.stringify(appRequest),
  301. success: function (appResponse) {
  302. isSubmintIng = false;
  303. nwaiting.close();
  304. if(!appResponse.success){
  305. playSound('../raw/error.wav');
  306. mui.alert(appResponse.msg, '警告', function() { setFocus('locationCode'); });
  307. return;
  308. }
  309. mui.toast(appResponse.msg);
  310. //播放成功声音
  311. playSound('../raw/ok.wav');
  312. //整单完成. 下一个出库单
  313. if(appResponse.extend){
  314. cleanAll();
  315. return;
  316. }
  317. //刷新显示待装箱明细
  318. refreshItems();
  319. //下一个条码
  320. nextBarcode();
  321. },
  322. error: function () {
  323. isSubmintIng = false;
  324. nwaiting.close();
  325. playSound('../raw/error.wav');
  326. mui.toast('网络断开或服务器发生异常');
  327. }
  328. });
  329. }
  330. function cleanAll(){
  331. isSubmintBoxNoIng = false;
  332. isSubmintIng = false;
  333. $("#outOrderId").val("");
  334. $("#outOrderNo").val("");
  335. $("#statusName").text("");
  336. $("#shipwayName").text("");
  337. $("#waitQtyTotal").text("");
  338. $("#itemList").empty();
  339. $("#warehouseCode").val("");
  340. $("#customerCode").val("");
  341. $("#boxNo").val("");
  342. $("#boxId").val("");
  343. $("#barcode").val("");
  344. $("#allocationId").val("");
  345. $("#barcodeShow").val("");
  346. $("#productQty").val("");
  347. $("#_quantity").val("0");
  348. $('#outOrderNo').focus();
  349. }
  350. //下一个箱子
  351. function nextBox(){
  352. $("#boxId").val('');
  353. $("#boxNo").val('');
  354. //自动生成箱号
  355. if($("#isAutoCreateBox").val() == 'true'){genBoxNo();}
  356. $("#boxNo").focus();
  357. }
  358. //下一个条码
  359. function nextBarcode(){
  360. $("#barcode").val("");
  361. $("#barcodeShow").val("");
  362. $("#productQty").val("");
  363. $("#barcode").focus();
  364. }
  365. //生成箱子号码
  366. function genBoxNo(){
  367. //获取完整的日期
  368. var date=new Date;
  369. var year=date.getFullYear();
  370. var month=date.getMonth()+1;
  371. month =(month<10 ? "0"+month:month);
  372. var day=date.getDate();
  373. day =(day<10 ? "0"+day:day);
  374. var hours = date.getHours();
  375. hours =(hours<10 ? "0"+hours:hours);
  376. var minutes = date.getMinutes();
  377. minutes =(minutes<10 ? "0"+minutes:minutes);
  378. var seconds = date.getSeconds();
  379. seconds =(seconds<10 ? "0"+seconds:seconds);
  380. var currentDate = (year.toString() + month.toString() + day.toString() + hours.toString() + minutes.toString() + seconds.toString());
  381. //2019-05-11决定简化箱号,使用数字1,2,3..方便直观看到订单有几个箱子,方便输入
  382. $("#boxNo").val("1");
  383. //$("#boxNo").val(currentDate);
  384. }