You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1145 lines
46 KiB

3 days ago
  1. <#import "../master.ftl" as master>
  2. <@master.layout>
  3. <style>
  4. #fm label {
  5. width: 150px;
  6. }
  7. </style>
  8. <#if errorMsg??>
  9. <div class="page-header">
  10. <h3>${errorMsg} </h3>
  11. </div>
  12. <#else>
  13. <div class="page-header">
  14. <h3>Job [${jobId!}]</h3>
  15. 通道一 <input type="radio" name="pass" value="1" onclick="showData();" style="vertical-align:middle; margin-top:0px; margin-bottom:1px; margin-right: 1%">
  16. 通道二 <input type="radio" name="pass" value="2" onclick="showData();" style="vertical-align:middle; margin-top:0px; margin-bottom:1px; margin-right: 1%">
  17. 通道三 <input type="radio" name="pass" value="3" onclick="showData();" style="vertical-align:middle; margin-top:0px; margin-bottom:1px; margin-right: 1%">
  18. </div>
  19. <p>
  20. 卷: [${slittingRollNo!}]
  21. </p>
  22. <p>
  23. The first serial number: <span id = "firstSn">[<span id="snSpan">${firstSn!}</span>]</span>
  24. </p>
  25. <table id="dg" class="easyui-datagrid" style="width:100%;height:460px;display: none;"
  26. data-options="pagination: false, showFooter: true, singleSelect:true, fitColumns:true , url:'/hsScan/scanpool/${jobId}/${passNo}/all',method:'get',pageSize:20,toolbar:'#tb'">
  27. <thead>
  28. <tr>
  29. <th data-options="field:'serialNo',width:100">Serials Number</th>
  30. </tr>
  31. </thead>
  32. </table>
  33. <input type="hidden" id="orderNo" value="">
  34. <div id="tb" style="padding:10px 5px;display: none;">
  35. <div>
  36. <a href="javascript:void(0)" id="tbScanRoll" class="easyui-linkbutton" iconCls="icon-add" onclick="scanRoll()">Scan roll number</a>
  37. <a href="javascript:void(0)" id="tbScanFirstSn" class="easyui-linkbutton" iconCls="icon-add" onclick="scanFirstSn()">Scan the first serial number</a>
  38. &nbsp;&nbsp;&nbsp;
  39. <a href="javascript:void(0)" id="tbAdd" class="easyui-linkbutton" iconCls="icon-add" onclick="badInput()">Type defective serial number</a>
  40. <a href="javascript:void(0)" id="tbAdd" class="easyui-linkbutton" iconCls="icon-add" onclick="createFinalRoll()">Create FG roll</a>
  41. <#if currentUser.isAdmin>
  42. <a href="javascript:void(0)" id="tbClear" class="easyui-linkbutton" iconCls="icon-remove" onclick="delPoll()">Clear scanning list</a>
  43. </#if>
  44. <a href="javascript:void(0)" id="tbAdd" class="easyui-linkbutton" iconCls="icon-sum" onclick="openBoxPackModal()">扫卷装箱</a>
  45. </div>
  46. </div>
  47. <div id="dlg" class="easyui-dialog for-scan" style="width:500px;display: none;"
  48. closed="true" buttons="#dlg-buttons">
  49. <form id="fm" method="post" novalidate style="margin:0;padding:20px 20px">
  50. <div style="margin-bottom:10px">
  51. <label id="orderNo_display" class="easyui-textbox" data-options="labelWidth:100,disabled:true" required="true" label="工单号:" style="width:100%"></label>
  52. </div>
  53. <div id="serial_input_1st" style="margin-bottom:10px">
  54. <input id="badFirstSN" name="firstSerialNo" class="easyui-textbox" required="true" data-options="labelWidth:100" label="The first serial number:" style="width:100%">
  55. </div>
  56. <div id="serial_input_2nd" style="margin-bottom:10px">
  57. <input id="badEndSN" name="endSerialNo" class="easyui-textbox"
  58. data-options="labelWidth:100" label="The second serial number:" style="width:100%">
  59. </div>
  60. </form>
  61. </div>
  62. <div id="dlg-buttons" style="display: none;">
  63. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" id="doOK" onclick="doOK()" style="width:90px">OK</a>
  64. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg').dialog('close')" style="width:90px">Cancel</a>
  65. </div>
  66. <div id="dlgRoll" class="easyui-dialog for-scan" style="width:550px;display: none;"
  67. closed="true" buttons="#dlg-buttons-roll">
  68. <div style="margin-top: 15px;margin-left: 20px;">
  69. 通道一 <input type="radio" name="RollNoPass" value="1" onclick="getRollData();" style="vertical-align:middle; width: 20px;height: 20px; margin-top:0px; margin-bottom:1px; margin-right: 8%">
  70. 通道二 <input type="radio" name="RollNoPass" value="2" onclick="getRollData();" style="vertical-align:middle; width: 20px;height: 20px; margin-top:0px; margin-bottom:1px; margin-right: 8%">
  71. 通道三 <input type="radio" name="RollNoPass" value="3" onclick="getRollData();" style="vertical-align:middle; width: 20px;height: 20px; margin-top:0px; margin-bottom:1px; margin-right: 8%">
  72. </div>
  73. <form id="fmRoll" method="post" novalidate style="margin:0;padding:20px 20px">
  74. <div style="margin-bottom:10px">
  75. <label name="slittingRollNo" id="slittingRollNo" class="easyui-textbox" data-options="labelWidth:100" required="true" label="Roll No:" style="width:100%"></label>
  76. </div>
  77. </form>
  78. </div>
  79. <div id="dlg-buttons-roll" style="display: none;">
  80. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="doScanRollOK()" style="width:90px">OK</a>
  81. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="closeScanRoll()" style="width:90px">Cancel</a>
  82. </div>
  83. <div id="dlgFirstSn" class="easyui-dialog for-scan" style="width:550px;display: none;"
  84. closed="true" buttons="#dlg-buttons-firstsn">
  85. <div style="margin-bottom: 10px;margin:0;padding:13px 20px ">
  86. <input id="firstSerialNo" name="firstSn" class="easyui-textbox"
  87. required="true" data-options="labelWidth:100" label="The first serial number:"
  88. style="width: 100%">
  89. </div>
  90. <div style="margin-bottom: 10px;margin:0;padding:0px 20px ">
  91. <input id="pass1" class="easyui-textbox"
  92. required="true" data-options="labelWidth:100" label="通道一:"
  93. style="width: 100%" readonly>
  94. </div>
  95. <div style="margin-bottom: 10px;margin:0;padding:13px 20px">
  96. <input id="pass2" class="easyui-textbox"
  97. required="true" data-options="labelWidth:100" label="通道二:"
  98. style="width: 100%" readonly>
  99. </div>
  100. <div style="margin-bottom: 10px;margin:0;padding:13px 20px;padding-top: 0px;">
  101. <input id="pass3" class="easyui-textbox"
  102. required="true" data-options="labelWidth:100" label="通道三:"
  103. style="width: 100%" readonly>
  104. </div>
  105. </div>
  106. <div id="dlg-buttons-firstsn" style="display: none;">
  107. <!--<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="doFirstSnOK()" style="width:90px">OK</a>-->
  108. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="closeFirstSn()" style="width:90px">Close</a>
  109. </div>
  110. <div id="dlgFinalRoll" class="easyui-dialog for-scan" style="width:550px;display: none;"
  111. closed="true" buttons="#dlg-buttons-finalroll">
  112. <form id="fm" method="post" novalidate style="margin:0;padding:20px 20px">
  113. <div style="margin-bottom:10px">
  114. <input id="endSerialNo" name="endSerialNo" class="easyui-textbox" required="true" data-options="labelWidth:100" label="本卷结束序列号:" style="width:100%">
  115. </div>
  116. <div style="margin-bottom:10px">
  117. <input id="nextSerialNo" name="nextSerialNo" class="easyui-textbox" data-options="labelWidth:100" label="The end serial number of current roll" style="width:100%">
  118. </div>
  119. </form>
  120. </div>
  121. <div id="dlg-buttons-finalroll" style="display: none;">
  122. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" id="doFinalRoll" onclick="doFinalRollOK()" style="width:90px">OK</a>
  123. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="closeFinalRoll()" style="width:90px">Cancel</a>
  124. </div>
  125. <div id="dlgBadSnDtls" class="easyui-dialog" style="width:600px;display: none;"
  126. closed="true" data-options="modal:true" >
  127. <div style="margin-bottom: 5px;margin-left: 7px;margin-top: 5px;">
  128. 通道一 <input type="radio" name="badpass" value="1" style="vertical-align:middle; margin-top:0px; margin-bottom:1px; margin-right: 9%">
  129. 通道二 <input type="radio" name="badpass" value="2" style="vertical-align:middle; margin-top:0px; margin-bottom:1px; margin-right: 9%">
  130. 通道三 <input type="radio" name="badpass" value="3" style="vertical-align:middle; margin-top:0px; margin-bottom:1px; margin-right: 9%">
  131. </div>
  132. <table id="dgBadSnDtls" class="easyui-datagrid" style="width:100%;height:300px;display: none;"
  133. data-options="pagination: false, showFooter: true, singleSelect:true, fitColumns:true , method:'get', pageSize:20,toolbar:'#tbBadSnDtls'">
  134. <thead>
  135. <tr>
  136. <th data-options="field:'serialNo',width:100">Defective serial number</th>
  137. </tr>
  138. </thead>
  139. </table>
  140. <div id="tbBadSnDtls" style="padding:10px 5px;display: none;">
  141. <div>
  142. 录入不良序列号: <input class="easyui-textbox" id="inptBadSn" style="width:250px">
  143. <a href="#nowhere" id="lnkOK" class="easyui-linkbutton" iconCls="icon-add" onclick="addNewBadSn()">Ok</a>
  144. <a id="btnBadRange" onclick="doBadRange()" class="easyui-linkbutton" iconCls="icon-add">Batch defective serial number</a>
  145. </div>
  146. </div>
  147. </div>
  148. <div id="dlgDelpoll" class="easyui-dialog for-scan" style="width:500px;display: none;height: 110px;"
  149. closed="true" buttons="#dlg-buttons-delpoll">
  150. <div style="margin-bottom: -10px;margin-top: 10px;margin-left: 20px;">
  151. 通道一 <input type="radio" name="delpass" value="1" style="vertical-align:middle; margin-top:0px; margin-bottom:1px; margin-right: 9%">
  152. 通道二 <input type="radio" name="delpass" value="2" style="vertical-align:middle; margin-top:0px; margin-bottom:1px; margin-right: 9%">
  153. 通道三 <input type="radio" name="delpass" value="3" style="vertical-align:middle; margin-top:0px; margin-bottom:1px; margin-right: 9%">
  154. </div>
  155. </div>
  156. <div id="dlg-buttons-delpoll" style="display: none;">
  157. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="clearPool()" style="width:90px">OK</a>
  158. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlgDelpoll').dialog('close')" style="width:90px">Cancel</a>
  159. </div>
  160. <!-- 箱的列表 -->
  161. <div id="box_pack_dlg" class="easyui-dialog" style="width: 900px; top: -80px; display: none;" closed="true" data-options="modal:true" >
  162. <table id="box_pack_dlg_table" class="easyui-datagrid" style="width:100%;height:450px;display: none;"
  163. data-options="pagination: false, showFooter: true, singleSelect:true, fitColumns:true ,
  164. method:'POST', pageSize:50, onSelect:onBoxPackTableRowSelect,
  165. toolbar:'#tBoxPack'">
  166. <thead>
  167. <tr>
  168. <th data-options="field:'boxNo',width:120">Box No</th>
  169. <th data-options="field:'rollQty',width:80, editor:'textbox'">Roll Qty</th>
  170. <th data-options="field:'status',width:80">Status</th>
  171. <th data-options="field:'id',width:200, formatter:formatBoxPackFunction">Actions</th>
  172. </tr>
  173. </thead>
  174. </table>
  175. </div>
  176. <div id="tBoxPack" style="padding:10px 5px;display: none;">
  177. <div id="btn_box_excel">
  178. <a href="javascript:void(0)" id="scan_roll_pack" data-options="disabled:false" class="easyui-linkbutton" onclick="scanRollNoModal('scanRollPack')" style="height:44px;">
  179. <span class="glyphicon glyphicon-camera"></span>扫描卷
  180. </a>
  181. </div>
  182. </div>
  183. <!-- 扫描内包号modal -->
  184. <div id="scan_roll_dlg" class="easyui-dialog" style="width: 600px; display: none;" closed="true" data-options="modal: true, toolbar:'#tb_roll'">
  185. <form id="scan_roll_fm" method="post" novalidate style="margin:0; padding: 20px 20px">
  186. <div style="margin-bottom:15px">
  187. <label id="current_box_no" style="font-size: 14px;">箱号:</label>
  188. </div>
  189. <div style="margin-top: 5px; margin-bottom: 10px">
  190. <label style="width: 15%; display: inline-block; font-size: 14px;">Roll No:</label>
  191. <input id="scan_roll_no" name="rollNo" inputmode="none" style="width: 80%; height: 32px; font-size: 14px;">
  192. </div>
  193. </form>
  194. <table id="scan_rolls_table" class="easyui-datagrid" style="width:100%;height: 450px;" data-options="modal: true, ">
  195. <thead>
  196. <tr>
  197. <th data-options="field:'sortNo',width:80, formatter:formatRollSort">序号</th>
  198. <th data-options="field:'finalRollNo',width:240,editor:'textbox'">Roll No</th>
  199. <th data-options="field:'id',width:120, formatter:formatScanRollFunction">Actions</th>
  200. </tr>
  201. </thead>
  202. </table>
  203. </div>
  204. <div id="tb_roll" style="padding:10px 5px;display: none;">
  205. <div id="btn_sn">
  206. <a href="javascript:void(0)" id="sealing_box" data-options="disabled:true" class="easyui-linkbutton" onclick="sealingBox()" style="height:44px;">
  207. <span class="glyphicon glyphicon-folder-close" ></span>
  208. Pack</a>
  209. </div>
  210. </div>
  211. <script src="/laydate/laydate.js"></script>
  212. <script type="text/javascript" src="/js/layer/layer.js"></script>
  213. <script>
  214. var slittingRollNo = "${slittingRollNo!}";
  215. var slittingRollNo1 = "${slittingRollNo1!}";
  216. var slittingRollNo2 = "${slittingRollNo2!}";
  217. var slittingRollNo3 = "${slittingRollNo3!}";
  218. var firstSn = "${firstSn!}";
  219. var firstSn1 = "${firstSn1!}";
  220. var firstSn2 = "${firstSn2!}";
  221. var firstSn3 = "${firstSn3!}";
  222. var passNo = "${passNo!}";
  223. var temp_row;
  224. var currentRoll = "";
  225. var currentBox = "";
  226. var currentReceive;
  227. var currentReceiveNo = "";
  228. var currentBoxNo = "";
  229. var currentOrderNo = '${currentUser.workingOrder}';
  230. var currentReceiveNo = '*';
  231. var currentBadSnArray = [];
  232. //查询订单
  233. function findOrder(){
  234. $.post("/rollop/findOrder", {slittingRollNo: slittingRollNo}, function (ret) {
  235. $("#orderNo").val(ret);
  236. })
  237. }
  238. function badInput(){
  239. if (slittingRollNo == ""){
  240. $.messager.alert("Error", "请先扫描卷号", "error");
  241. return;
  242. }
  243. //$("#dgBadSnDtls").datagrid({url: "/scanning/badsn/${slittingRollNo!}/"});
  244. //加载缓存中的不良码包数据
  245. reloadTableBadSns();
  246. $('#dlgBadSnDtls').dialog('open').dialog('center').dialog('setTitle','Defective serial number');
  247. }
  248. //加载缓存中不良数据列表 2026-06-24 LR 不良码包显示优化 只显示当前操作的数据
  249. function reloadTableBadSns(){
  250. var opts = $('#dgBadSnDtls').datagrid('options');
  251. $('#dgBadSnDtls').datagrid('loadData', currentBadSnArray);
  252. }
  253. //单个不良自动点击确认2020-09-29 sunny要求加入
  254. $("#inptBadSn").textbox({
  255. inputEvents: $.extend({}, $.fn.textbox.defaults.inputEvents,{
  256. keyup:function(event){
  257. if(event.keyCode == 13){
  258. addNewBadSn();
  259. }
  260. }
  261. })
  262. })
  263. function addNewBadSn(){
  264. var pass = $(':radio[name="badpass"]:checked').val();
  265. if(pass==null||pass==""){
  266. $.messager.alert('Error','请选择通道!', 'error');
  267. return false;
  268. }
  269. $.post("/hsScan/${jobId}/badsn/add", {pass: pass, serialNo: $("#inptBadSn").val(), orderNo: workingOrder}, function (ret) {
  270. if (ret.success){
  271. //$("#dgBadSnDtls").datagrid("reload");
  272. //2026-06-24 LR 不查询只显示缓存中的不良数据
  273. let currentSerial = {'serialNo': $("#inptBadSn").val()};
  274. $("#inptBadSn").textbox("clear");
  275. $("#_easyui_textbox_input4").focus();
  276. //添加缓存的数据
  277. currentBadSnArray.unshift(currentSerial);
  278. //加载缓存的数据
  279. reloadTableBadSns();
  280. }else{
  281. $.messager.alert("Error", ret.errorMsg, "error");
  282. }
  283. })
  284. }
  285. function formatEnd(value, row){
  286. if (value) {
  287. return value;
  288. } else {
  289. return "<a class='easyui-linkbutton' href='javascript:scanEndSerial(\""+row.id+"\")'>Please scan the end serial number</a>"+"&nbsp;|&nbsp;<a class='easyui-linkbutton' href='javascript:createFinalRoll(\""+row.id+"\")'>Scanning&FG Rolls</a>";
  290. }
  291. }
  292. function createFinalRoll(){
  293. $("#doFinalRoll").linkbutton({"disabled": false});
  294. $('#dlgFinalRoll').dialog('open').dialog('center').dialog('setTitle', "Create FG roll");
  295. $('#dlgFinalRoll form').form('clear');
  296. }
  297. //选择通道清空扫描池
  298. function delPoll(){
  299. $('#dlgDelpoll').dialog('open').dialog('center').dialog('setTitle', "选择通道清空扫描池");
  300. $('#dlgDelpoll form').form('clear');
  301. }
  302. function scanRoll(){
  303. $('#dg').datagrid('reload');
  304. $('#dlgRoll').dialog('open').dialog('center').dialog('setTitle', "Scan roll number");
  305. $('#dlgRoll form').form('clear');
  306. if(passNo=="1"){
  307. $('#slittingRollNo').textbox('setValue',slittingRollNo1);
  308. }else if(passNo=="2"){
  309. $('#slittingRollNo').textbox('setValue',slittingRollNo2);
  310. }else if(passNo=="3"){
  311. $('#slittingRollNo').textbox('setValue',slittingRollNo3);
  312. }
  313. }
  314. function scanFirstSn(){
  315. $('#dlgFirstSn').dialog('open').dialog('center').dialog('setTitle', "扫描第一个序列号");
  316. $('#dlgFirstSn form').form('clear');
  317. $('#pass1').textbox('setValue',firstSn1);
  318. $('#pass2').textbox('setValue',firstSn2);
  319. $('#pass3').textbox('setValue',firstSn3);
  320. //获取焦点
  321. //$('#_easyui_textbox_input6').focus();
  322. $("#firstSerialNo").textbox('textbox').focus();
  323. }
  324. $(window).resize(function () {
  325. $("#dg").datagrid({"height": $(window).height() - $(".datagrid").offset().top - 20});
  326. });
  327. $(function () {
  328. $("input:radio[name=pass][value="+passNo+"]").attr("checked",true);
  329. $("input:radio[name=RollNoPass][value="+passNo+"]").attr("checked",true);
  330. $("input:radio[name=firstpass][value="+passNo+"]").attr("checked",true);
  331. $("input:radio[name=endpass][value="+passNo+"]").attr("checked",true);
  332. $("input:radio[name=badpass][value="+passNo+"]").attr("checked",true);
  333. $("input:radio[name=delpass][value="+passNo+"]").attr("checked",true);
  334. $(window).resize();
  335. findOrder();
  336. });
  337. //选择通道
  338. function showData(){
  339. var pass = $(':radio[name="pass"]:checked').val();
  340. console.log(pass);
  341. var url = "/hsScan/jobdtlByUser?passNo="+pass;
  342. window.location.href = url;
  343. $(window).resize();
  344. findOrder();
  345. }
  346. //切换卷
  347. function getRollData(){
  348. var pass = $(':radio[name="RollNoPass"]:checked').val();
  349. if(pass=="1"){
  350. $('#slittingRollNo').textbox('setValue',slittingRollNo1);
  351. }else if(pass=="2"){
  352. $('#slittingRollNo').textbox('setValue',slittingRollNo2);
  353. }else if(pass=="3"){
  354. $('#slittingRollNo').textbox('setValue',slittingRollNo3);
  355. }
  356. }
  357. //首个序列号
  358. function getFirstSnData(){
  359. var pass = $(':radio[name="firstpass"]:checked').val();
  360. if(pass=="1"){
  361. $('#firstSerialNo').textbox('setValue',firstSn1);
  362. }else if(pass=="2"){
  363. $('#firstSerialNo').textbox('setValue',firstSn2);
  364. }else if(pass=="3"){
  365. $('#firstSerialNo').textbox('setValue',firstSn3);
  366. }
  367. }
  368. //创建最终卷
  369. function doFinalRollOK(){
  370. $("#doFinalRoll").linkbutton({"disabled": true});
  371. $('#dlgFinalRoll form').form('submit',{
  372. url: "/hsScan/scanpool/${jobId}/${passNo}/createFinalRollNew",
  373. onSubmit: function(){
  374. return $(this).form('validate');
  375. },
  376. success: function(result){
  377. $("#doFinalRoll").linkbutton({"disabled": false});
  378. console.log(result);
  379. try{
  380. var result = JSON.parse(result);
  381. if (result.errorMsg){
  382. if(result.falseFlag==1){
  383. $.messager.confirm('Confirm','The roll qty is '+result.nowQty+',are you sure to create the new roll?',function(r) {
  384. if (r){
  385. doFinalRollOKReally();
  386. }else {
  387. }
  388. });
  389. }else {
  390. $.messager.alert('Error',result.errorMsg, 'error');
  391. }
  392. } else {
  393. $('#snSpan').html('<b>'+$("#nextSerialNo").val()+'</b>');
  394. $.ajaxSettings.async = false;
  395. if($("#nextSerialNo").val()!=''&&$("#nextSerialNo").val()!=null){
  396. $.post("/hsScan/scanpool/${jobId}/firstSn", {firstSn: $("#nextSerialNo").val()}, function(result){
  397. try{
  398. if (result.errorMsg){
  399. $.messager.alert('Error',result.errorMsg, 'error');
  400. } else {
  401. if(result.pass=="1"){
  402. $('#pass1').textbox('setValue',$("#nextSerialNo").val());
  403. }else if(result.pass=="2"){
  404. $('#pass2').textbox('setValue',$("#nextSerialNo").val());
  405. }else if(result.pass=="3"){
  406. $('#pass3').textbox('setValue',$("#nextSerialNo").val());
  407. }
  408. $('#nextSerialNo').textbox('setValue',"");
  409. }
  410. }catch(e){
  411. }
  412. })
  413. }
  414. $.ajaxSettings.async = true;
  415. console.log("ceshi");
  416. $('#firstSn').hide();
  417. $('#dg').datagrid('reload');
  418. $('#dlgFinalRoll form').form('clear');
  419. if (result.finalRoll){
  420. //调用方法 执行缓存打印的信息 然后调用js打印数据
  421. getQcPrintCacheData(result.finalRoll.finalRollNo, result.pass);
  422. //$("#ifmforprint").attr('src', "/print/newlabel/" + result.finalRoll.finalRollNo + "/"+result.pass+"/");
  423. }
  424. // $.messager.alert('Success','请稍等刷新界面', 'info');
  425. // setTimeout(function(){
  426. // window.location.reload()
  427. // },2000);
  428. }
  429. }catch(e){
  430. $.messager.alert('Error','序列号重复!', 'error');
  431. }
  432. }
  433. });
  434. }
  435. function doFinalRollOKReally(){
  436. $("#doFinalRoll").linkbutton({"disabled": true});
  437. $('#dlgFinalRoll form').form('submit',{
  438. url: "/hsScan/scanpool/${jobId}/${passNo}/createFinalRoll",
  439. onSubmit: function(){
  440. return $(this).form('validate');
  441. },
  442. success: function(result){
  443. $("#doFinalRoll").linkbutton({"disabled": false});
  444. console.log(result);
  445. try{
  446. var result = JSON.parse(result);
  447. if (result.errorMsg){
  448. $.messager.alert('Error',result.errorMsg, 'error');
  449. } else {
  450. $('#snSpan').html('<b>'+$("#nextSerialNo").val()+'</b>');
  451. $.ajaxSettings.async = false;
  452. if($("#nextSerialNo").val()!=''&&$("#nextSerialNo").val()!=null){
  453. $.post("/hsScan/scanpool/${jobId}/firstSn", {firstSn: $("#nextSerialNo").val()}, function(result){
  454. try{
  455. if (result.errorMsg){
  456. $.messager.alert('Error',result.errorMsg, 'error');
  457. } else {
  458. if(result.pass=="1"){
  459. $('#pass1').textbox('setValue',$("#nextSerialNo").val());
  460. }else if(result.pass=="2"){
  461. $('#pass2').textbox('setValue',$("#nextSerialNo").val());
  462. }else if(result.pass=="3"){
  463. $('#pass3').textbox('setValue',$("#nextSerialNo").val());
  464. }
  465. $('#nextSerialNo').textbox('setValue',"");
  466. }
  467. }catch(e){
  468. }
  469. })
  470. }
  471. $.ajaxSettings.async = true;
  472. console.log("ceshi");
  473. $('#firstSn').hide();
  474. $('#dg').datagrid('reload');
  475. $('#dlgFinalRoll form').form('clear');
  476. if (result.finalRoll){
  477. //调用方法 执行缓存打印的信息 然后调用js打印数据
  478. getQcPrintCacheData(result.finalRoll.finalRollNo, result.pass);
  479. //$("#ifmforprint").attr('src', "/print/newlabel/" + result.finalRoll.finalRollNo + "/"+result.pass+"/");
  480. }
  481. // $.messager.alert('Success','请稍等刷新界面', 'info');
  482. // setTimeout(function(){
  483. // window.location.reload()
  484. // },2000);
  485. }
  486. }catch(e){
  487. $.messager.alert('Error','序列号重复!', 'error');
  488. }
  489. }
  490. });
  491. }
  492. //关闭创建最终卷页面
  493. function closeFinalRoll(){
  494. $('#dlgFinalRoll').dialog('close');
  495. window.location.reload();
  496. }
  497. //扫描卷号
  498. function doScanRollOK(){
  499. var pass = $(':radio[name="RollNoPass"]:checked').val();
  500. if(pass==null||pass==""){
  501. $.messager.alert('Error','请选择通道!', 'error');
  502. return false;
  503. }
  504. function doScallRollSubmit(){
  505. $('#dlgRoll form').form('submit',{
  506. url: "/hsScan/scanpool/${jobId}/"+pass+"/scanRoll",
  507. onSubmit: function(){
  508. return $(this).form('validate');
  509. },
  510. success: function(result){
  511. console.log(result);
  512. $.messager.alert('Success','扫描成功', 'info');
  513. try{
  514. var result = JSON.parse(result);
  515. if (result.errorMsg){
  516. $.messager.alert('Error',result.errorMsg, 'error');
  517. } else {
  518. if(pass=="1"){
  519. slittingRollNo1 = $('#slittingRollNo').val();
  520. }else if(pass=="2"){
  521. slittingRollNo2 = $('#slittingRollNo').val();
  522. }else if(pass=="3"){
  523. slittingRollNo3 = $('#slittingRollNo').val();
  524. }
  525. window.location.reload();
  526. }
  527. }catch(e){
  528. }
  529. }
  530. });
  531. }
  532. if(!$('#dg').datagrid('getRows')){
  533. $.messager.alert("Error", "扫描机数据库连接失败", "error");
  534. return false;
  535. }
  536. if ($('#dg').datagrid('getRows')&& $('#dg').datagrid('getRows').length > 0) {
  537. $.messager.confirm('Confirm', 'Still have serial numbers in scanning list, continue?', function (r) {
  538. if (r) {
  539. doScallRollSubmit();
  540. }else{
  541. $("#dlgRoll").dialog('close');
  542. }
  543. });
  544. }else{
  545. doScallRollSubmit();
  546. }
  547. }
  548. //关闭扫描卷号模态框
  549. function closeScanRoll(){
  550. $('#dlgRoll').dialog('close');
  551. window.location.reload();
  552. }
  553. //扫描首个序列号回车事件
  554. $("#firstSerialNo").textbox({
  555. inputEvents: $.extend({}, $.fn.textbox.defaults.inputEvents,{
  556. keyup:function(event){
  557. if(event.keyCode == 13){
  558. doFirstSnOK();
  559. }
  560. }
  561. })
  562. });
  563. //扫描首个序列号
  564. function doFirstSnOK(){
  565. $.post("/hsScan/scanpool/${jobId}/firstSn", {firstSn: $("#firstSerialNo").val()}, function(result){
  566. try{
  567. if (result.errorMsg){
  568. $.messager.alert('Error',result.errorMsg, 'error');
  569. } else {
  570. if(result.pass=="1"){
  571. $('#pass1').textbox('setValue',$("#firstSerialNo").val());
  572. }else if(result.pass=="2"){
  573. $('#pass2').textbox('setValue',$("#firstSerialNo").val());
  574. }else if(result.pass=="3"){
  575. $('#pass3').textbox('setValue',$("#firstSerialNo").val());
  576. }
  577. $('#firstSerialNo').textbox('setValue',"");
  578. }
  579. }catch(e){
  580. }
  581. })
  582. }
  583. //关闭扫描首个序列号页面
  584. function closeFirstSn(){
  585. $('#dlgFirstSn').dialog('close');
  586. window.location.reload();
  587. }
  588. //清空扫描池
  589. function clearPool(){
  590. var pass = $(':radio[name="delpass"]:checked').val();
  591. if(pass==null||pass==""){
  592. $.messager.alert('Error','请选择通道!', 'error');
  593. return false;
  594. }
  595. $.messager.confirm('Confirm','Are you sure to clear current scanning list?',function(r){
  596. if (r){
  597. $.post('/hsScan/scanpool/${jobId}/'+pass+'/clear',{},function(result){
  598. if (result.success){
  599. $('#dg').datagrid('reload');
  600. $.messager.alert('Success','清空成功', 'info');
  601. } else {
  602. $.messager.alert('Error',result.errorMsg, 'error');
  603. }
  604. },'json');
  605. }
  606. });
  607. }
  608. function getday(){
  609. lay('.Selection_time').each(function(){
  610. laydate.render({
  611. elem: this
  612. });
  613. });
  614. $('.Selection_time').val(getToday());
  615. }
  616. //获取当天日期
  617. function getToday(){
  618. var date = new Date();
  619. var seperator1 = "-";
  620. var year = date.getFullYear();
  621. var month = date.getMonth() + 1;
  622. var strDate = date.getDate();
  623. if (month >= 1 && month <= 9) {
  624. month = "0" + month;
  625. }
  626. if (strDate >= 0 && strDate <= 9) {
  627. strDate = "0" + strDate;
  628. }
  629. var currentdate = year + seperator1 + month + seperator1 + strDate;
  630. return currentdate;
  631. }
  632. //批量录入不良品-------------------------------------------------------------------------------------
  633. function doBadRange(){
  634. $("#doOK").linkbutton({"disabled": false});
  635. showDialog("Batch defective serial number", 2, "/badBatch/count");
  636. }
  637. var formPostUrl;
  638. var doUrl;
  639. function showDialog(title, serialNum, postUrl){
  640. var pass = $(':radio[name="badpass"]:checked').val();
  641. //var currentRoll = "";
  642. if(pass=="1"){
  643. currentRoll = slittingRollNo1;
  644. }else if(pass=="2"){
  645. currentRoll = slittingRollNo2;
  646. }else if(pass=="3"){
  647. currentRoll = slittingRollNo3;
  648. }
  649. show2ndBox(serialNum > 1);
  650. $('#dlg').dialog('open').dialog('center').dialog('setTitle',title);
  651. //获取焦点
  652. $("#badFirstSN").textbox('textbox').focus();
  653. $('#dlg form').form('clear');
  654. $('#dlg #orderNo_display').textbox({"value": workingOrder});
  655. formPostUrl = "/hsScan/scanning/${jobId}" + postUrl + "?orderNo="+workingOrder;
  656. //2020-09-08 LR 原低俗通道改为高速通道 Start
  657. //doUrl = "/rollop/scanning/${jobId}/badBatch/do?rollNo="+currentRoll;
  658. //2020-09-08 LR 原低俗通道改为高速通道 End
  659. doUrl = "/hsScan/scanning/${jobId}/badBatch/do?orderNo="+workingOrder;
  660. }
  661. function show2ndBox(b){
  662. showEl("#dlg #serial_input_1st", true);
  663. showEl("#dlg #serial_input_2nd", true);
  664. showEl("#dlg #serial_input_2nd", b);
  665. $('#dlg #endSerialNo').textbox({disabled:!b});
  666. }
  667. function doOK(){
  668. //var doUrl = "/rollop/scanning/badBatch/do?rollNo="+currentRoll;
  669. var badFirstSN = $("#badFirstSN").val();
  670. var badEndSN = $("#badEndSN").val();
  671. console.log(badFirstSN);
  672. console.log(badEndSN);
  673. $("#doOK").linkbutton({"disabled": true});
  674. $('#dlg form').form('submit',{
  675. url: formPostUrl,
  676. onSubmit: function(){
  677. return $(this).form('validate');
  678. },
  679. success: function(result){
  680. var result = $.parseJSON(result);
  681. if (result.errorMsg){
  682. $("#doOK").linkbutton({"disabled": false});
  683. //$('#dlg').dialog('close');
  684. $.messager.alert('Error',result.errorMsg, 'error');
  685. } else {
  686. if(result.count>1000){
  687. $.messager.confirm('Confirm','Defective quantity greater than 1000, continue??',function(r) {
  688. if (r){
  689. $.post(doUrl, {firstSerialNo:badFirstSN,endSerialNo:badEndSN}, function(data){
  690. $("#doOK").linkbutton({"disabled": false});
  691. // refreshRollInfo(currentRoll);
  692. if (data.success){
  693. $('#dlg form').form('clear');
  694. $('#dlg #orderNo_display').textbox({"value": workingOrder});
  695. //2026-06-24 LR 显示缓存中的数据
  696. let badSerials = data.badSerials;
  697. for(let i = 0; i < badSerials.length; i++){
  698. currentBadSnArray.unshift({'serialNo': badSerials[i].serialNo});
  699. };
  700. //加载缓存的数据
  701. reloadTableBadSns();
  702. //2020-09-16 添加不良录入成功提示
  703. $.messager.alert('Success','The defect has been reported successfully, the total qty is '+result.count, 'info');
  704. }else{
  705. $.messager.alert('Error',data.errorMsg, 'error');
  706. //$('#dlg').dialog('close'); // close the dialog
  707. }
  708. });
  709. }else{
  710. $("#doOK").linkbutton({"disabled": false});
  711. $('#dlg').dialog('close');
  712. }
  713. });
  714. }else{
  715. $.post(doUrl, {firstSerialNo:badFirstSN,endSerialNo:badEndSN}, function(data){
  716. $("#doOK").linkbutton({"disabled": false});
  717. // refreshRollInfo(currentRoll);
  718. if (data.success){
  719. $('#dlg form').form('clear');
  720. $('#dlg #orderNo_display').textbox({"value": workingOrder});
  721. //2026-06-24 LR 显示缓存中的数据
  722. let badSerials = data.badSerials;
  723. for(let i = 0; i < badSerials.length; i++){
  724. currentBadSnArray.unshift({'serialNo': badSerials[i].serialNo});
  725. };
  726. //加载缓存的数据
  727. reloadTableBadSns();
  728. //2020-09-16 添加不良录入成功提示
  729. $.messager.alert('Success','The defect has been reported successfully, the total qty is '+result.count, 'info');
  730. }else{
  731. $.messager.alert('Error', data.errorMsg, 'error');
  732. //$('#dlg').dialog('close'); // close the dialog
  733. }
  734. });
  735. }
  736. }
  737. }
  738. });
  739. }
  740. //2026-06-25 新开发的功能 LR
  741. //入库箱管理的modal
  742. function openBoxPackModal(){
  743. //设置中包的参数
  744. $('#box_pack_dlg').dialog('open').dialog('center').dialog('setTitle', '入库箱列表');
  745. //获取最新的接收单信息
  746. getLastedActiveReceive();
  747. }
  748. //包装任务单自动选择
  749. function onBoxPackTableRowSelect(index, row){
  750. currentBox = row;
  751. currentReceiveNo = row.receiveNo;
  752. currentBoxNo = currentBox.boxNo;
  753. }
  754. //外包的功能菜单
  755. function formatBoxPackFunction(value, row){
  756. let status = row.status;
  757. let tags = '';
  758. if('Unpacked' === status){
  759. tags += '<a style="text-decoration:none;" onclick="scanRollNoModal(\'scanBoxRoll\')">扫描卷</a>';
  760. }else {
  761. tags += '<a style="text-decoration:none;" onclick="scanRollNoModal(\'viewRollList\')">卷列表</a>';
  762. }
  763. return tags;
  764. }
  765. //获取最新的可用的内包
  766. function getLastedActiveReceive() {
  767. let requestData = {orderNo: currentOrderNo, 'username': username };
  768. $.ajax({
  769. url: '/scanning/getLastedActiveReceive',
  770. type: 'POST',
  771. async: false,
  772. contentType: 'application/json;charset=UTF-8',
  773. data: JSON.stringify(requestData),
  774. success: function(result){
  775. if(result.success){
  776. //设置参数 计数和内包号
  777. currentReceive = result.row;
  778. currentReceiveNo = currentReceive.receiveNo;
  779. //刷新页面的数据
  780. reloadTableReceiveBoxs(currentReceiveNo);
  781. }else{
  782. currentReceive = {};
  783. currentReceiveNo = '*';
  784. //刷新页面的数据
  785. reloadTableReceiveBoxs(currentReceiveNo);
  786. }
  787. },
  788. error: function(xhr){
  789. $.messager.alert('Error', xhr.responseText || '请求失败', 'error');
  790. }
  791. });
  792. }
  793. //重新加载内包的数据
  794. function reloadTableReceiveBoxs(receiveNo){
  795. var opts = $('#box_pack_dlg_table').datagrid('options');
  796. opts.url = "/scanning/getSoReceiveBoxesByReceiveNo";
  797. $('#box_pack_dlg_table').datagrid('load', {
  798. 'receiveNo': receiveNo
  799. });
  800. }
  801. //sn表格序号
  802. function formatRollSort(value, row, index){
  803. let rows = $("#scan_rolls_table").datagrid("getData").rows;
  804. let total = rows.length;
  805. return total - index;
  806. }
  807. //卷列表的功能
  808. function formatScanRollFunction(value, row){
  809. let status = currentBox.status;
  810. let tags = '';
  811. //没有封包的时候才可以删除
  812. if('Unpacked' == status){
  813. tags += '<a style="text-decoration:none;" onclick="cancelScanRollNo(\''+row.finalRollNo+'\')">Delete</a>';
  814. }
  815. return tags;
  816. }
  817. //扫描卷打开操作
  818. function scanRollNoModal(entryMark){
  819. delay(function(){
  820. if(null == currentBoxNo || '' == currentBoxNo){
  821. currentBoxNo = '*';
  822. }
  823. //如果是直接扫描进来的
  824. if ('scanRollPack' === entryMark){
  825. //打开扫描中包的modal
  826. $('#scan_roll_dlg').dialog('open').dialog('center').dialog('setTitle', '扫卷装箱');
  827. $("#current_box_no").html("箱号: "+currentBoxNo);
  828. //获取最近可用的包
  829. getLastedActiveBox();
  830. $('#scan_roll_no').prop('disabled', false); // 打开输入框
  831. //打开封箱的操作
  832. $("#sealing_box").linkbutton({"disabled": false});
  833. }else if ('scanBoxRoll' === entryMark){
  834. //打开扫描中包的modal
  835. $('#scan_roll_dlg').dialog('open').dialog('center').dialog('setTitle', '扫卷装箱');
  836. $("#current_box_no").html("箱号: "+currentBoxNo);
  837. //获取最近可用的包
  838. $('#scan_roll_no').prop('disabled', false); // 禁用输入框
  839. let packStatus = currentBox.status;
  840. if ("Unpacked"){
  841. $("#sealing_box").linkbutton({"disabled": false});
  842. }else {
  843. $("#sealing_box").linkbutton({"disabled": true});
  844. }
  845. //刷新页面的数据
  846. reloadTableScanRolls(currentReceiveNo, currentBoxNo);
  847. }else if('viewRollList' === entryMark){
  848. $('#scan_roll_dlg').dialog('open').dialog('center').dialog('setTitle', '装箱列表');
  849. $("#current_box_no").html("箱号: "+currentBoxNo);
  850. //禁用输入框
  851. $('#scan_roll_no').prop('disabled', true); // 禁用输入框
  852. $("#sealing_box").linkbutton({"disabled": true});
  853. //刷新页面的数据
  854. reloadTableScanRolls(currentReceiveNo, currentBoxNo);
  855. }else {
  856. $('#scan_roll_dlg').dialog('open').dialog('center').dialog('setTitle', '扫卷装箱');
  857. $("#current_box_no").html("箱号: *");
  858. //禁用输入框
  859. $('#scan_roll_no').prop('disabled', true); // 禁用输入框
  860. $("#sealing_box").linkbutton({"disabled": true});
  861. //刷新页面的数据
  862. reloadTableScanRolls(currentReceiveNo, currentBoxNo);
  863. }
  864. $('#scan_roll_no').val('');
  865. //获取焦点
  866. $('#scan_roll_no').focus();
  867. }, 500);
  868. }
  869. //扫描sn打开事件
  870. $("#scan_roll_dlg").dialog({
  871. onClose: function () {
  872. reloadTableReceiveBoxs(currentReceiveNo);
  873. },
  874. onOpen: function(){
  875. $('#scan_roll_no').val('');
  876. //获取焦点
  877. $('#scan_roll_no').focus();
  878. }
  879. });
  880. //重新加载内包的数据
  881. function reloadTableScanRolls(currentReceiveNo, boxNo){
  882. var opts = $('#scan_rolls_table').datagrid('options');
  883. opts.url = "/scanning/getSoReceiveBoxRollsByBoxNo";
  884. $('#scan_rolls_table').datagrid('load', {
  885. 'receiveNo': currentReceiveNo,
  886. 'boxNo': boxNo
  887. });
  888. }
  889. //获取最新的可用的内包
  890. function getLastedActiveBox() {
  891. let requestData = {orderNo: currentOrderNo, receiveNo: currentReceiveNo, 'username': username };
  892. $.ajax({
  893. url: '/scanning/getOrderLastedActiveBox',
  894. type: 'POST',
  895. async: false,
  896. contentType: 'application/json;charset=UTF-8',
  897. data: JSON.stringify(requestData),
  898. success: function(result){
  899. if(result.success){
  900. //设置参数 计数和内包号
  901. let row = result.row;
  902. currentBox = row;
  903. currentBoxNo = row.boxNo;
  904. //设置中包
  905. $("#current_box_no").html("箱号: "+currentBoxNo);
  906. //看一下状态是否 等待开发
  907. let packStatus = currentBox.status;
  908. if ('Created' === packStatus){
  909. $("#sealing_box").linkbutton({"disabled": false});
  910. }else {
  911. $("#sealing_box").linkbutton({"disabled": true});
  912. }
  913. //刷新页面的数据
  914. reloadTableScanRolls(currentReceiveNo, currentBoxNo);
  915. }else{
  916. currentBox = {};
  917. currentBoxNo = '*';
  918. //设置中包
  919. $("#current_box_no").html("箱号: "+currentBoxNo);
  920. //刷新页面的数据
  921. reloadTableScanRolls(currentReceiveNo, currentBoxNo);
  922. }
  923. },
  924. error: function(xhr){
  925. $.messager.alert('Error', xhr.responseText || '请求失败', 'error');
  926. }
  927. });
  928. }
  929. //绑定的enter事件
  930. $('#scan_roll_no').bind("keydown", function (e) {
  931. if (e.keyCode === 13) {
  932. let rollNo = $.trim($("#scan_roll_no").val());
  933. if(null == rollNo || '' === rollNo){
  934. $.messager.alert('error', '请输入卷号!', 'error', function(){
  935. //自动获取焦点
  936. $('#scan_roll_no').val('');
  937. $("#scan_roll_no").focus();
  938. });
  939. return false;
  940. }else{
  941. //判断长度
  942. scanRollNo(rollNo);
  943. return false;
  944. }
  945. }
  946. });
  947. //开始扫描sn号
  948. function scanRollNo(rollNo){
  949. let postData = {'orderNo': currentOrderNo, 'receiveNo': currentReceiveNo, 'finalRollNo': rollNo, 'boxNo': currentBoxNo, "username": username};
  950. $.ajax({
  951. url: '/scanning/scanReceiveRollNo',
  952. type: 'POST',
  953. contentType: 'application/json;charset=UTF-8',
  954. data: JSON.stringify(postData),
  955. success: function(result){
  956. if(result.success){
  957. currentBox = result.row;
  958. currentBoxNo = currentBox.boxNo;
  959. currentBox.status = 'Unpacked';
  960. //是否封包
  961. if (result.sealFlag == 'Y'){
  962. //自动封包
  963. sealingBox();
  964. }else {
  965. //刷新页面的数据
  966. reloadTableScanRolls(currentReceiveNo, currentBoxNo);
  967. //获取焦点
  968. $('#scan_roll_no').val('');
  969. $("#scan_roll_no").focus();
  970. }
  971. }else{
  972. $.messager.alert('error',result.msg, 'error', function(){
  973. //自动获取焦点
  974. $('#scan_roll_no').val('');
  975. $("#scan_roll_no").focus();
  976. });
  977. }
  978. },
  979. error: function(xhr){
  980. $.messager.alert('Error', xhr.responseText || '请求失败', 'error');
  981. }
  982. });
  983. }
  984. //开始扫描sn号
  985. function cancelScanRollNo(rollNo){
  986. delay(function(){
  987. //获取当前的箱号
  988. if (null == rollNo || '*' === rollNo){
  989. $.messager.alert('error', '请选择一个卷号!', 'error', function(){
  990. //自动获取焦点
  991. $('#scan_roll_no').val('');
  992. $("#scan_roll_no").focus();
  993. });
  994. return false;
  995. }
  996. let postData = {'orderNo': currentOrderNo, 'receiveNo': currentReceiveNo, 'finalRollNo': rollNo, 'boxNo': currentBoxNo, "username": username};
  997. $.ajax({
  998. url: '/scanning/cancelScanReceiveRollNo',
  999. type: 'POST',
  1000. contentType: 'application/json;charset=UTF-8',
  1001. data: JSON.stringify(postData),
  1002. success: function(result){
  1003. if(result.success){
  1004. //刷新页面的数据
  1005. reloadTableScanRolls(currentReceiveNo, currentBoxNo);
  1006. }else{
  1007. $.messager.alert('error',result.msg, 'error', function(){
  1008. //自动获取焦点
  1009. $('#scan_roll_no').val('');
  1010. $("#scan_roll_no").focus();
  1011. });
  1012. }
  1013. },
  1014. error: function(xhr){
  1015. $.messager.alert('Error', xhr.responseText || '请求失败', 'error');
  1016. }
  1017. });
  1018. });
  1019. }
  1020. //自动封包
  1021. function sealingBox(){
  1022. delay(function(){
  1023. //获取当前的箱号
  1024. if (null == currentBoxNo || '*' === currentBoxNo){
  1025. $.messager.alert('error', '请选择一个箱号!', 'error', function(){
  1026. //自动获取焦点
  1027. $('#scan_roll_no').val('');
  1028. $("#scan_roll_no").focus();
  1029. });
  1030. return false;
  1031. }
  1032. let postData = {'receiveNo': currentReceiveNo, 'boxNo': currentBoxNo, "username": username};
  1033. $.ajax({
  1034. url: '/scanning/sealSoReceiveBox',
  1035. type: 'POST',
  1036. contentType: 'application/json;charset=UTF-8',
  1037. data: JSON.stringify(postData),
  1038. success: function(result){
  1039. if(result.success){
  1040. //自动打印标签 封包完成
  1041. getInnerBoxPrintCacheData(postData, function(){
  1042. //关闭modal 然后重新打开
  1043. $('#scan_roll_dlg').dialog('close');
  1044. currentBox = {};
  1045. currentBoxNo = '*';
  1046. //重新打开
  1047. scanRollNoModal('scanRollPack');
  1048. });
  1049. }else{
  1050. $.messager.alert('error',result.msg, 'error', function(){
  1051. //自动获取焦点
  1052. $('#scan_roll_no').val('');
  1053. $("#scan_roll_no").focus();
  1054. });
  1055. }
  1056. },
  1057. error: function(xhr){
  1058. $.messager.alert('Error', xhr.responseText || '请求失败', 'error');
  1059. }
  1060. });
  1061. });
  1062. }
  1063. var delay = (function(){
  1064. var timer = 0;
  1065. return function(callback, ms){
  1066. clearTimeout (timer);
  1067. timer = setTimeout(callback, ms);
  1068. };
  1069. })();
  1070. </script>
  1071. </#if>
  1072. </@master.layout>