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.

855 lines
36 KiB

3 days ago
  1. <#import "../master.ftl" as master>
  2. <@master.layout>
  3. <div class="page-header">
  4. <h3>${title}</h3>
  5. </div>
  6. <div class="row" id="app">
  7. <div class="col-md-4">
  8. <p><input id="rollNo" name="rollNo" type="text" class="form-control" placeholder="Roll No" /></p>
  9. <table id="tblInfo" class="table">
  10. </table>
  11. </div>
  12. <input type="hidden" id="processNumber" value="">
  13. <input type="hidden" id="orderNo" value="">
  14. <p><button id="btnStatus" onclick="updateStatus()" class="btn btn-default" style="margin-left: 15px;">Refresh Status</button></p>
  15. <div class="col-md-1" id="actions" style="display: none">
  16. <#if currentUser.isAdmin || currentUser.authorities?contains("refreshRollStatus")>
  17. <p><button id="refreshRollStatus" onclick="refreshRollStatus()" class="btn btn-default">Reverse All Scanning Data</button></p>
  18. </#if>
  19. <#-- <#if func?is_string && func != "indigo">-->
  20. <p><button id="btnConfirm" onclick="doConfirm()" class="btn btn-default">Confirm quantity</button></p>
  21. <#-- </#if>-->
  22. <p><button id="btnStart" onclick="doStart()" class="btn btn-default">Scan</button></p>
  23. <p><button id="btnSetup" onclick="doSetup()" class="btn btn-default">Scan/setup</button></p>
  24. <p><button id="btnFai" onclick="doFai()" class="btn btn-default">Scan/first off</button></p>
  25. <#-- <p><button id="btnEai" onclick="doEai()" class="btn btn-default">Scan/last off</button></p>-->
  26. <#if func?is_string && func != "indigo">
  27. <p><button id="btnBad" onclick="doBadModal()" class="btn btn-default">Type defective serial number</button></p>
  28. <p><button id="btnBadRange" onclick="doBadRangeModal()" class="btn btn-default">Batch defective serial number</button></p>
  29. </#if>
  30. <#-- <#if func?is_string && func == "aoi">-->
  31. <p><button id="btnSlitting" onclick="showSlittingRolls()" class="btn btn-default">Slit roll</button></p>
  32. <#--<p><button id="btnSlittingConfirm" onclick="showSlittingConfirm()" class="btn btn-default">卷确认</button></p>-->
  33. <#-- </#if>-->
  34. </div>
  35. </div>
  36. <div class="row" >
  37. <div class="col-md-12" id="tblRollOpInfo">
  38. </div>
  39. </div>
  40. <div id="dlg" class="easyui-dialog for-scan" style="width:500px;display: none;"
  41. closed="true" buttons="#dlg-buttons">
  42. <form id="fm" method="post" novalidate style="margin:0;padding:20px 20px">
  43. <div style="margin-bottom:10px">
  44. <label id="rollNo_display" class="easyui-textbox" data-options="labelWidth:100,disabled:true" required="true" label="Roll No:" style="width:100%"></label>
  45. </div>
  46. <div id="serial_input_1st" style="margin-bottom:10px">
  47. <input id="firstSerialNo" name="firstSerialNo" class="easyui-textbox" required="true" data-options="labelWidth:100" label="The first serial number:" style="width:100%">
  48. </div>
  49. <div id="serial_input_2nd" style="margin-bottom:10px">
  50. <input id="endSerialNo" name="endSerialNo" class="easyui-textbox" required="true" data-options="labelWidth:100" label="The second serial number:" style="width:100%">
  51. </div>
  52. </form>
  53. </div>
  54. <!-- 结束报工页面 -->
  55. <div class="modal fade" id="report_modal" tabindex="-1" role="dialog"
  56. aria-labelledby="myModalLabel" aria-hidden="true" style="font-size:10px;">
  57. <div class="modal-dialog" style="width:430px;height:300px;">
  58. <div class="modal-content" >
  59. <div class="modal-body">
  60. <form id="report_form" class="form-horizontal" action="" method="post">
  61. <fieldset>
  62. <div id="legend" class="">
  63. <input type="hidden" value="0" name="currentScheduleId" id="current_schedule_id">
  64. <legend class="">报告产量</legend>
  65. </div>
  66. <div class="form-group">
  67. <label class="col-sm-2 control-label" style = "width: 20%;">机台</label>
  68. <div class="col-sm-4" style = "width: 30%;">
  69. <select id="report_resource_id" class="form-control" name="resourceId" style="width:100px;font-size:12px;">
  70. </select>
  71. </div>
  72. <label class="col-sm-2 control-label" style = "width: 20%;">人员</label>
  73. <div class="col-sm-4" style = "width: 20%;">
  74. <input id="report_person" type="text" class="form-control" name="person" readonly style="width:100px;font-size:12px;">
  75. </div>
  76. </div>
  77. <div class="form-group">
  78. <label class="col-sm-2 control-label" style = "width: 20%;"><span>Production Date</span></label>
  79. <div class="col-sm-4" style = "width: 30%;">
  80. <input id="produce_date" type="text" class="form-control Selection_time" name="produceDate" style="width:100px;font-size:12px;">
  81. </div>
  82. <label class="col-sm-2 control-label" style = "width: 20%;">班次</label>
  83. <div class="col-sm-4" style = "width: 20%;">
  84. <select id="report_shift_no" class="form-control" name="shiftNo" style="width:100px;font-size:12px;">
  85. </select>
  86. </div>
  87. </div>
  88. <div class="form-group">
  89. <label class="col-sm-2 control-label" style = "width: 20%;">派工数量</label>
  90. <div class="col-sm-4" style = "width: 30%;">
  91. <input id="qty_required" class="form-control" name="qtyRequired" readonly style="width:100px;font-size:12px;">
  92. </div>
  93. <label class="col-sm-2 control-label" style = "width: 20%;">已报告数量</label>
  94. <div class="col-sm-4" style = "width: 20%;">
  95. <input id="qty_reported" type="number" class="form-control" name="qtyReported" readonly style="width:100px;font-size:12px;">
  96. </div>
  97. </div>
  98. <div class="form-group">
  99. <label class="col-sm-2 control-label" style = "width: 20%;">良品数量</label>
  100. <div class="col-sm-4" style = "width: 30%;">
  101. <input id="qty_approved" type="number" class="form-control count_nums" name="qtyApproved" readonly style="width:100px;font-size:12px;">
  102. </div>
  103. <label class="col-sm-2 control-label" style = "width: 20%;">不良品数量</label>
  104. <div class="col-sm-4" style = "width: 20%;">
  105. <input id="qty_scrapped" type="number" class="form-control count_nums" name="qtyScrapped" readonly style="width:100px;font-size:12px;">
  106. </div>
  107. </div>
  108. <div class="form-group">
  109. <label class="col-sm-2 control-label" style = "width: 20%;">报告总数量</label>
  110. <div class="col-sm-4" style = "width: 30%;">
  111. <input id="current_report_qty" type="number" class="form-control" name="currentReportTotalQty" readonly style="width:100px;font-size:12px;">
  112. </div>
  113. <label class="col-sm-2 control-label" style = "width: 20%;">生产时间</label>
  114. <div class="col-sm-4" style = "width: 20%;">
  115. <input id="produce_time" type="number" class="form-control count_nums" name="produceTime" style="width:100px;font-size:12px;">
  116. </div>
  117. </div>
  118. <div class="form-group">
  119. <label class="col-sm-3 control-label">关闭派工单</label>
  120. <div class="col-sm-9" id="close_schedule_flag">
  121. <div class="checkbox checkbox-info checkbox-circle" style="margin-left: 20px;">
  122. <input name="closed" value="0" type="checkbox" checked="" style="margin-top: -0.5px;">
  123. <label for="checkbox1">是</label>
  124. </div>
  125. <div class="checkbox checkbox-info checkbox-circle" style="margin-top: -27px; margin-left: 100px;">
  126. <input name="closed" value="1" type="checkbox" style="margin-top: -0.5px;">
  127. <label for="checkbox2">否</label>
  128. </div>
  129. </div>
  130. </div>
  131. </fieldset>
  132. </form>
  133. </div>
  134. <div class="modal-footer" style="TEXT-ALIGN: center;margin-top:-20px;">
  135. <div class="control-group">
  136. <!-- Button -->
  137. <div class="controls">
  138. <button onclick="reportSchedule()" class="btn btn-success" style="font-size:12px;">Confirm</button>
  139. <button id="report_cancel" data-dismiss="modal" class="btn btn-success" style="font-size:12px;">取消</button>
  140. </div>
  141. </div>
  142. </div>
  143. </div>
  144. </div>
  145. </div>
  146. <div id="endWork-buttons" style="display: none;">
  147. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="doOK()" style="width:90px">OK</a>
  148. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#endWork').dialog('close')" style="width:90px">Cancel</a>
  149. </div>
  150. <div id="dlg-buttons" style="display: none;">
  151. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" id="badOK" onclick="doOK()" style="width:90px">OK</a>
  152. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg').dialog('close')" style="width:90px">Cancel</a>
  153. </div>
  154. <!-- 单个不良 -->
  155. <div id="dlg-bad" class="easyui-dialog for-scan" style="width:500px;display: none;" closed="true" buttons="#dlg-bad-buttons">
  156. <form id="fm-bad" method="post" novalidate style="margin:0;padding:20px 20px">
  157. <div style="margin-bottom:10px">
  158. <input id="bad_serialNo" name="serialNo" class="easyui-textbox" required="true" data-options="labelWidth:100" label="Defective serial number:" style="width:100%">
  159. </div>
  160. </form>
  161. </div>
  162. <div id="dlg-bad-buttons" style="display: none;">
  163. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" id="badOK" onclick="doSingleBad()" style="width:90px">OK</a>
  164. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg-bad').dialog('close')" style="width:90px">Cancel</a>
  165. </div>
  166. <!-- 批量不良 -->
  167. <div id="dlg-batch-bad" class="easyui-dialog for-scan" style="width:500px;display: none;" closed="true" buttons="#dlg-batch-bad-buttons">
  168. <form id="fm-batch-bad" method="post" novalidate style="margin:0; padding: 20px 20px;">
  169. <div style="margin-bottom:10px">
  170. <input id="start_bad_serial" name="firstSerialNo" class="easyui-textbox" required="true" data-options="labelWidth:100" label="开始序列号:" style="width:100%">
  171. </div>
  172. <div style="margin-bottom:10px">
  173. <input id="end_bad_serial" name="endSerialNo" class="easyui-textbox" required="true" data-options="labelWidth:100" label="结束序列号:" style="width:100%">
  174. </div>
  175. </form>
  176. </div>
  177. <div id="dlg-batch-bad-buttons" style="display: none;">
  178. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" id="badOK" onclick="countBadRange()" style="width:90px">OK</a>
  179. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg-batch-bad').dialog('close')" style="width:90px">Cancel</a>
  180. </div>
  181. <div id="dlgConfirm" class="easyui-dialog for-scan" style="width:500px;display: none;"
  182. closed="true" buttons="#dlg-buttons-confirm">
  183. <form id="fm" method="post" novalidate style="margin:0;padding:20px 20px">
  184. <div style="margin-bottom:10px">
  185. <input name="workNo" class="easyui-textbox" data-options="labelWidth:100" required="true" label="Emoloyee ID:" style="width:100%">
  186. </div>
  187. </form>
  188. </div>
  189. <div id="dlg-buttons-confirm" style="display: none;">
  190. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="doConfirmOK()" style="width:90px">OK</a>
  191. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlgConfirm').dialog('close')" style="width:90px">Cancel</a>
  192. </div>
  193. <div id="dlgSlitting" class="easyui-dialog for-scan" style="width:500px;display: none;"
  194. closed="true" buttons="#dlg-buttons-slitting" data-options="modal:true">
  195. <form method="post" novalidate style="margin:0;padding:20px 20px">
  196. <div style="margin-bottom:10px">
  197. <input id="noOfCross" class="easyui-textbox" data-options="labelWidth:100,disabled:true" required="true" label="Roll Qty:" style="width:100%">
  198. </div>
  199. <div style="margin-bottom:10px">
  200. <input name="endSerialNo" class="easyui-textbox" data-options="labelWidth:100" required="true" label="结束序列号:" style="width:100%">
  201. </div>
  202. </form>
  203. </div>
  204. <div id="dlg-buttons-slitting" style="display: none;">
  205. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="doSlittingOK()" style="width:90px">OK</a>
  206. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlgSlitting').dialog('close')" style="width:90px">Cancel</a>
  207. </div>
  208. <!-- 卷分切-->
  209. <div id="dlgSlittingRolls" class="easyui-dialog" style="width:800px;display: none;"
  210. closed="true" data-options="modal:true" >
  211. <table id="dgSlittingRolls" class="easyui-datagrid" style="width:100%;height:300px;display: none;"
  212. data-options="pagination: false, showFooter: true, singleSelect:true, fitColumns:true , method:'get', pageSize:500,toolbar:'#tbSlittingRolls'">
  213. <thead>
  214. <tr>
  215. <th data-options="field:'slittingNo',width:120,formatter:formatLodopPrint('slittingNo')">Slitting Roll No</th>
  216. <th data-options="field:'serialScope',width:260">序列号范围</th>
  217. <th data-options="field:'status',width:60">Status</th>
  218. <th data-options="field:'col',width:30">No. of Cross</th>
  219. <th data-options="field:'rewindFlag',width:50">需要倒卷</th>
  220. <th data-options="field:'combineFlag',width:50">倒卷完成</th>
  221. </tr>
  222. </thead>
  223. </table>
  224. </div>
  225. <div id="tbSlittingRolls" style="padding:10px 5px;display: none;">
  226. <div>
  227. <a href="javascript:void(0)" id="tbAdd" class="easyui-linkbutton" iconCls="icon-add" onclick="doSlitting()">新增卷</a>
  228. <a href="javascript:void(0)" id="tbAdd" class="easyui-linkbutton" iconCls="icon-add" onclick="doSlittingTure()">Correct Data</a>
  229. </div>
  230. </div>
  231. <style>
  232. table.roll-op-serials {
  233. border: 1px solid gray;
  234. }
  235. table.roll-op-serials td{
  236. border: 1px dotted gray;
  237. padding: 3px;
  238. text-align: center;
  239. text-align: center;
  240. font-family: Arial,monospace;
  241. font-size: 11px;
  242. background-color: aliceblue;
  243. }
  244. table.roll-op-serials td .serial-no{
  245. font-size: 11px;
  246. }
  247. </style>
  248. <script src="/laydate/laydate.js"></script>
  249. <script type="text/javascript" src="/js/layer/layer.js"></script>
  250. <script>
  251. var formPostUrl="";
  252. var currentRoll="";
  253. var currentRollOp = {};
  254. var currentOrder={};
  255. var urlPath="/rollop/${func}";
  256. var work_center_data;
  257. var temp_row;
  258. var doUrl = "";
  259. var flag = "N";
  260. var workingOrder;
  261. let currentItemNo = 30;
  262. function show2ndBox(b){
  263. showEl("#dlg #serial_input_1st", true);
  264. showEl("#dlg #serial_input_2nd", true);
  265. showEl("#dlg #serial_input_2nd", b);
  266. $('#dlg #endSerialNo').textbox({disabled:!b});
  267. }
  268. function showDialog(title, serialNum, postUrl){
  269. show2ndBox(serialNum > 1);
  270. $('#dlg').dialog('open').dialog('center').dialog('setTitle',title);
  271. $('#dlg form').form('clear');
  272. $('#dlg #rollNo_display').textbox({"value": currentRoll});
  273. formPostUrl = urlPath + postUrl + "?rollNo="+currentRoll;
  274. doUrl = urlPath + "/badRange/do?rollNo="+currentRoll;
  275. }
  276. function doConfirm(){
  277. $('#dlgConfirm').dialog('open').dialog('center').dialog('setTitle',"Confirm quantity");
  278. $('#dlgConfirm form').form('clear');
  279. }
  280. function doConfirmOK(){
  281. console.log(urlPath + "/confirm/do?rollNo=" + currentRoll)
  282. $('#dlgConfirm form').form('submit',{
  283. url: urlPath + "/confirm/do?rollNo=" + currentRoll,
  284. onSubmit: function(){
  285. return $(this).form('validate');
  286. },
  287. success: function(result){
  288. var result = $.parseJSON(result);
  289. if (result.success){
  290. refreshRollInfo(currentRoll);
  291. $('#dlgConfirm').dialog('close'); // close the dialog
  292. } else {
  293. $.messager.alert('error',result.errorMsg, 'error');
  294. }
  295. }
  296. });
  297. }
  298. //修正so_roll状态
  299. function updateStatus(){
  300. let func = '${func}';
  301. $.ajax({
  302. url: "/aoi/slitting/updateStatus",
  303. type:"POST",
  304. data:{
  305. 'rollNo':currentRoll,
  306. 'func': func,
  307. },
  308. dataType:"JSON",
  309. success: function (ret) {
  310. console.log(ret);
  311. if(ret.success == false){
  312. $.messager.alert('error',ret.errorMsg, 'error');
  313. }else if(ret.success==true){
  314. refreshRollInfo(currentRoll)
  315. $.messager.alert('info',"Successfully",'info');
  316. }
  317. }
  318. })
  319. }
  320. function doSlitting(){
  321. $('#dlgSlitting').dialog('open').dialog('center').dialog('setTitle',"Slit roll");
  322. $('#dlgSlitting form').form('clear');
  323. $('#dlgSlitting #noOfCross').textbox({"value": 1});
  324. }
  325. function showSlittingRolls(){
  326. $('#dlgSlittingRolls').dialog('open').dialog('center').dialog('setTitle',"Slit roll");
  327. $("#dgSlittingRolls").datagrid({url: "/aoi/slittingrolls/"+currentRoll});
  328. }
  329. function doSlittingOK(){
  330. $('#dlgSlitting form').form('submit',{
  331. url: "/aoi/slitting/do?rollNo=" + currentRoll,
  332. onSubmit: function(){
  333. return $(this).form('validate');
  334. },
  335. success: function(result){
  336. console.log(result);
  337. var result = $.parseJSON(result);
  338. if (result.success){
  339. refreshRollInfo(currentRoll);
  340. $('#dgSlittingRolls').datagrid('reload');
  341. $('#dlgSlitting').dialog('close'); // close the dialog
  342. } else {
  343. $.messager.alert('error',result.errorMsg, 'error');
  344. }
  345. }
  346. });
  347. }
  348. function doSlittingTure(){
  349. // $('#dlgSlitting form').form('submit',{
  350. // url: "/aoi/slitting/doTure?rollNo=" + currentRoll,
  351. // onSubmit: function(){
  352. // return $(this).form('validate');
  353. // },
  354. // success: function(result){
  355. // var result = $.parseJSON(result);
  356. // if (result.success){
  357. // $.messager.alert('info',"Successfully",'info');
  358. // } else {
  359. // $.messager.alert('error',result.errorMsg, 'error');
  360. // }
  361. // }
  362. // });
  363. $.ajax({
  364. url: "/aoi/slitting/doTure",
  365. type:"POST",
  366. data:{
  367. 'rollNo':currentRoll,
  368. },
  369. dataType:"JSON",
  370. success: function (ret) {
  371. console.log(ret);
  372. if(ret.success==false){
  373. $.messager.alert('error',ret.data, 'error');
  374. }else if(ret.success==true){
  375. $.messager.alert('info',"Successfully",'info');
  376. }
  377. }
  378. })
  379. }
  380. function doStart(){
  381. $("#dlg #firstSerialNo").textbox({disabled:false});
  382. flag = "N";
  383. showDialog("Scan", 1, "/start/do");
  384. }
  385. function doSetup(){
  386. flag = "N";
  387. $("#dlg #firstSerialNo").textbox({disabled:true});
  388. showDialog("Scan/setup", 2, "/setup/do");
  389. $("#dlg #firstSerialNo").textbox({value: currentRollOp.toSetupSerialNo || ""});
  390. }
  391. function doFai(){
  392. flag = "N";
  393. $("#dlg #firstSerialNo").textbox({disabled:false});
  394. showDialog("Scan/first off", 2, "/fai/do");
  395. }
  396. function doEai(){
  397. flag = "N";
  398. $("#dlg #firstSerialNo").textbox({disabled:false});
  399. showDialog("Scan/last off", 2, "/eai/do");
  400. }
  401. function doBad(){
  402. flag = "N";
  403. showDialog("Type defective serial number", 1, "/bad/do");
  404. }
  405. // function doIpqc(){
  406. // flag = "N";
  407. // showDialog("IPQC抽样", 1, "/ipqc/do");
  408. // }
  409. function doBadRange(){
  410. $("#badOK").linkbutton({"disabled": false});
  411. flag = "Y";
  412. //showDialog("Batch defective serial number", 2, "/badRange/do");
  413. showDialog("Batch defective serial number", 2, "/badRange/count");
  414. }
  415. <#if func == "aoi">
  416. function doEai(){
  417. showEl("#dlg #serial_input_1st", false);
  418. showEl("#dlg #serial_input_2nd", false);
  419. $('#dlg').dialog('open').dialog('center').dialog('setTitle',"Scan/last off");
  420. $('#dlg form').form('clear');
  421. $('#dlg #rollNo_display').textbox({"value": currentRoll});
  422. $('#dlg #firstSerialNo').textbox({"value": "-"});
  423. $('#dlg #endSerialNo').textbox({"value": "-"});
  424. formPostUrl = urlPath + "/eai/do" + "?rollNo="+currentRoll;
  425. }
  426. </#if>
  427. function doOK(){
  428. var badFirstSN = $("#firstSerialNo").val();
  429. var badEndSN = $("#endSerialNo").val();
  430. $("#badOK").linkbutton({"disabled": true});
  431. $('#dlg form').form('submit',{
  432. url: formPostUrl,
  433. onSubmit: function(){
  434. return $(this).form('validate');
  435. },
  436. success: function(result){
  437. if(flag=="Y"){
  438. var result = $.parseJSON(result);
  439. if (result.errorMsg){
  440. $("#badOK").linkbutton({"disabled": false});
  441. $('#dlg').dialog('close');
  442. $.messager.alert('Error',result.errorMsg, 'error');
  443. } else {
  444. if(result.count>1000){
  445. $.messager.confirm('Confirm','Defective quantity greater than 1000, continue??',function(r) {
  446. if (r){
  447. console.log("首个序列号:"+badFirstSN);
  448. console.log("最后一个序列号:"+badEndSN);
  449. console.log("请求地址:"+doUrl);
  450. $.post(doUrl, {firstSerialNo:badFirstSN,endSerialNo:badEndSN}, function(data){
  451. $("#badOK").linkbutton({"disabled": false});
  452. console.log(data);
  453. refreshRollInfo(currentRoll);
  454. if (data.success){
  455. $('#dlg form').form('clear');
  456. $('#dlg #rollNo_display').textbox({"value": currentRoll});
  457. //2020-09-16 添加不良录入成功提示
  458. $.messager.alert('Success','The defect has been reported successfully, the total qty is '+result.count, 'info');
  459. }else{
  460. $('#dlg').dialog('close'); // close the dialog
  461. }
  462. });
  463. }else{
  464. $("#badOK").linkbutton({"disabled": false});
  465. $('#dlg').dialog('close');
  466. }
  467. });
  468. }else{
  469. $.post(doUrl, {firstSerialNo:badFirstSN,endSerialNo:badEndSN}, function(data){
  470. $("#badOK").linkbutton({"disabled": false});
  471. refreshRollInfo(currentRoll);
  472. if (data.success){
  473. $('#dlg form').form('clear');
  474. $('#dlg #rollNo_display').textbox({"value": currentRoll});
  475. //2020-09-16 添加不良录入成功提示
  476. $.messager.alert('Success','The defect has been reported successfully, the total qty is '+result.count, 'info');
  477. }else{
  478. $('#dlg').dialog('close'); // close the dialog
  479. }
  480. });
  481. }
  482. }
  483. }else{
  484. var result = $.parseJSON(result);
  485. $("#badOK").linkbutton({"disabled": false});
  486. if (result.errorMsg){
  487. $.messager.alert('Error',result.errorMsg, 'error');
  488. } else {
  489. refreshRollInfo(currentRoll);
  490. if (formPostUrl.indexOf("/bad/") >= 0 || formPostUrl.indexOf("/ipqc/") >= 0){
  491. $('#dlg form').form('clear');
  492. $('#dlg #rollNo_display').textbox({"value": currentRoll});
  493. }else{
  494. $('#dlg').dialog('close'); // close the dialog
  495. }
  496. }
  497. }
  498. }
  499. });
  500. }
  501. $("#rollNo").on("keydown", function(){
  502. if(event.keyCode == 13){
  503. refreshRollInfo($.trim($(this).val()));
  504. }
  505. });
  506. <#if RequestParameters.rollNo ??>
  507. $(function(){
  508. $("#rollNo").val("${RequestParameters.rollNo}");
  509. refreshRollInfo("${RequestParameters.rollNo}");
  510. });
  511. </#if>
  512. function doCreateRoll(){
  513. if (currentOrder){
  514. $.messager.confirm('Confirm','Are you sure to create new roll for the shop order <b>'+currentOrder.orderNo+'</b>? ',function(r) {
  515. if (r){
  516. $.post("/indigo/create_roll/do", {orderNo: currentOrder.orderNo}, function(data){
  517. if (data.success && data.newRollNo){
  518. $("#rollNo").val(data.newRollNo);
  519. refreshRollInfo(data.newRollNo);
  520. }
  521. });
  522. }
  523. });
  524. }
  525. }
  526. function slittingPrint() {
  527. $.messager.confirm('Confirm','Is Printed ?',function(r){
  528. if (r){
  529. $("#ifmforprint").attr('src', "/print/rollnoSlitting/" + currentRollOp.operationNo + "/" + currentRoll + "/");
  530. console.log("/print/rollnoSlitting/" + currentRollOp.operationNo + "/" + currentRoll + "/")
  531. }
  532. });
  533. }
  534. function refreshRollStatus(){
  535. $.messager.confirm('Confirm','Are you sure to reverse all scanning data ?',function(r){
  536. if (r){
  537. $.post(urlPath+"/refreshRollStatus", {rollNo: currentRoll}, function(data){
  538. if (data.success ){
  539. refreshRollInfo($("#rollNo").val());
  540. $.messager.alert('info',"Successfully",'info');
  541. }else{
  542. $.messager.alert('error',data.errorMsg,'error');
  543. }
  544. })
  545. }
  546. });
  547. }
  548. //回车触发事件
  549. function refreshRollInfo(rollNo){
  550. <#if func == "aoi">
  551. $("#processNumber").val("30");
  552. </#if>
  553. var $tblInfo = $("#tblInfo");
  554. var $tblRollOpInfo = $("#tblRollOpInfo");
  555. $tblInfo.html("");
  556. $tblRollOpInfo.html("");
  557. let requestParam = {'orderNo': workingOrder, 'rollNo': rollNo, 'func': 'aoi'};
  558. $.post("/rollop/newGetRoll", requestParam, function(data){
  559. if (data.success && data.roll){
  560. showEl("#actions", data.showAction);
  561. enableEl("#btnConfirm", data.enableConfirm);
  562. enableEl("#btnStatus", data.enableStatus);
  563. enableEl("#btnStart", data.enableStart);
  564. enableEl("#btnSetup", data.enableSetup);
  565. enableEl("#btnFai", data.enableFai);
  566. enableEl("#btnEai", data.enableEai);
  567. enableEl("#btnBad", data.enableBad);
  568. <#if func == "scanning">
  569. showEl("#btnStart");
  570. showEl("#btnSetup");
  571. showEl("#btnFai");
  572. showEl("#btnEai");
  573. showEl("#btnBad");
  574. </#if>
  575. <#if currentUser.isAdmin || currentUser.authorities?contains("refreshRollStatus")>
  576. enableEl("#refreshRollStatus", true);
  577. </#if>
  578. <#if func != "indigo">
  579. enableEl("#btnBad",!data.scanStatus);
  580. enableEl("#btnBadRange", !data.scanStatus);
  581. enableEl("#printSlitting", data.rollOp && data.rollOp.remainSnCount);
  582. </#if>
  583. currentRoll = data.roll.rollNo;
  584. currentRollOp = data.rollOp;
  585. currentOrder=data.roll.order;
  586. var rollNoDisplay = data.roll.rollNo;
  587. if (data.rollOp && data.rollOp.remainSnCount){
  588. rollNoDisplay = "<a target='forprint' href='/print/rollno/"+data.rollOp.operationNo+"/"+rollNoDisplay+"/'>"+rollNoDisplay+"</a>";
  589. }
  590. $tblInfo.append("<tr><td>SO No:</td><td>"+data.roll.orderNo+"</td></tr>");
  591. $tblInfo.append("<tr><td>Roll No:</td><td>"+rollNoDisplay+"</td></tr>");
  592. $tblInfo.append("<tr><td>Status</td><td>"+(data.roll.status || "-")+"</td></tr>");
  593. $("#orderNo").val(data.roll.orderNo);
  594. if (data.rollOpHtml){
  595. $tblRollOpInfo.append(data.rollOpHtml);
  596. }
  597. if (data.prevCount){
  598. $tblInfo.append("<tr><td>Serials Qty:</td><td>"+(data.prevCount)+"</td></tr>");
  599. }
  600. $tblInfo.append("<tr><td>Good Products Qty:</td><td>"+(data.qtyBad)+"</td></tr>");
  601. $tblInfo.append("<tr><td>Defect Product Qty:</td><td>"+(data.qtyApprove)+"</td></tr>");
  602. $tblInfo.append("<tr><td>Total Qty:</td><td>"+(data.qtyAll)+"</td></tr>");
  603. if (data.prevCount){
  604. $tblInfo.append("<tr><td>Different Qty:</td><td>"+(data.prevDifferent)+"</td></tr>");
  605. }
  606. if (data.badSns){
  607. $tblInfo.append("<tr><td>Defective serial number:</td><td>"+(data.badSns.split(",").join("<br />") || "-")+"</td></tr>");
  608. }
  609. if (data.slittingRolls){
  610. $tblInfo.append("<tr><td>Slitting Roll No:</td><td>"+(data.slittingRolls.split(",").join("<br />") || "-")+"</td></tr>");
  611. }
  612. checkWithWorkingOrder(data.roll.order.orderNo);
  613. }else{
  614. $tblInfo.append("<tr><td>"+data.errorMsg+"</td></tr>");
  615. }
  616. })
  617. }
  618. function checkWithWorkingOrder(orderNo) {
  619. workingOrder = $("#hdnWorkingOrder").val();
  620. if (workingOrder != orderNo){
  621. var msg = 'Are you sure to swith to the order <b>'+orderNo+'</b>?';
  622. if (workingOrder != "") {
  623. msg = 'The order of this roll does not match with the current order '+workingOrder+'.';
  624. }
  625. $("#tblInfo").html("");
  626. $("#tblRollOpInfo").html("");
  627. $("#actions").hide();
  628. $.messager.alert("Error", msg, "error", function(){
  629. $("#rollNo").val("").focus();
  630. });
  631. }
  632. }
  633. function getday(){
  634. lay('.Selection_time').each(function(){
  635. laydate.render({
  636. elem: this
  637. });
  638. });
  639. $('.Selection_time').val(getToday());
  640. }
  641. //获取当天日期
  642. function getToday(){
  643. var date = new Date();
  644. var seperator1 = "-";
  645. var year = date.getFullYear();
  646. var month = date.getMonth() + 1;
  647. var strDate = date.getDate();
  648. if (month >= 1 && month <= 9) {
  649. month = "0" + month;
  650. }
  651. if (strDate >= 0 && strDate <= 9) {
  652. strDate = "0" + strDate;
  653. }
  654. var currentdate = year + seperator1 + month + seperator1 + strDate;
  655. return currentdate;
  656. }
  657. $(function () {
  658. $("#rollNo").focus();
  659. })
  660. //首件扫号的modal
  661. function doBadModal(){
  662. $('#dlg-bad').dialog('open').dialog('center').dialog('setTitle', 'Type defective serial number');
  663. $('#dlg-bad form').form('clear');
  664. }
  665. //modal打开关闭选中的箱
  666. $("#dlg-bad").dialog({
  667. onOpen: function(){
  668. //获取焦点
  669. //showEl("#dlg #input_roll", true);
  670. $('#bad_serialNo').textbox('textbox').focus();
  671. }
  672. });
  673. /* 新增不良批量 2024-06-25 LR */
  674. function doBadRangeModal(){
  675. $('#dlg-batch-bad').dialog('open').dialog('center').dialog('setTitle', 'Batch defective serial number');
  676. $('#dlg-batch-bad form').form('clear');
  677. }
  678. //modal打开关闭选中的箱
  679. $("#dlg-batch-bad").dialog({
  680. onOpen: function(){
  681. //获取焦点
  682. $('#start_bad_serial').textbox('textbox').focus();
  683. }
  684. });
  685. //单个不良方法
  686. function doSingleBad(){
  687. //各种参数
  688. let rollNo = $("#rollNo").val();
  689. let serialNo = $('#bad_serialNo').textbox('getValue');
  690. //组装参数
  691. let badParam = {'orderNo': workingOrder, 'itemNo': currentItemNo, 'rollNo': rollNo, 'username': username, 'serialNo': serialNo};
  692. //请求参数
  693. $.ajax({
  694. url: "/abg/doSingleBad",
  695. type:"POST",
  696. data: badParam,
  697. dataType:"JSON",
  698. success: function (data) {
  699. if(data.success){
  700. //刷新当前的页面
  701. refreshRollInfo(rollNo);
  702. //关闭弹窗
  703. //$('#dlg-bad').dialog('close');
  704. //清空历史数据
  705. $('#dlg-bad form').form('clear');
  706. // $.messager.alert("info",data.msg,"info",);
  707. }else{
  708. $.messager.alert("Error",data.msg,"Error",);
  709. }
  710. }
  711. })
  712. }
  713. //2024-06-25 LR 后续增加的代码
  714. function countBadRange(){
  715. //各种参数
  716. let rollNo = $("#rollNo").val();
  717. let firstSerialNo = $("#start_bad_serial").textbox('getValue').trim();
  718. let endSerialNo = $("#end_bad_serial").textbox('getValue').trim();
  719. //组装参数
  720. let countParam = {'orderNo': workingOrder, 'itemNo': currentItemNo, 'rollNo': rollNo, 'firstSerialNo': firstSerialNo, 'endSerialNo': endSerialNo, 'username': username};
  721. //请求参数
  722. $.ajax({
  723. url: "/abg/countBadRange",
  724. //contentType: 'application/json',
  725. type:"POST",
  726. //data:JSON.stringify(inData),
  727. data: countParam,
  728. dataType:"JSON",
  729. success: function (data) {
  730. if(data.success){
  731. //判断数量的限制
  732. if(data.count > 0){
  733. $.messager.confirm('Confirm', 'Defect Qty:'+data.count+',If continue?', function(r) {
  734. if (r){
  735. //调用提交方法
  736. createBadRange();
  737. }
  738. });
  739. }else{
  740. //调用提交方法
  741. createBadRange();
  742. }
  743. }else{
  744. $.messager.alert("Error",data.msg,"Error",);
  745. }
  746. }
  747. })
  748. }
  749. //批量创建不良
  750. function createBadRange(){
  751. //各种参数
  752. let rollNo = $("#rollNo").val();
  753. let firstSerialNo = $("#start_bad_serial").textbox('getValue').trim();
  754. let endSerialNo = $("#end_bad_serial").textbox('getValue').trim();
  755. //组装参数
  756. let badParam = {'orderNo': workingOrder, 'itemNo': currentItemNo, 'rollNo': rollNo, 'firstSerialNo': firstSerialNo, 'endSerialNo': endSerialNo, 'username': username};
  757. //请求参数
  758. $.ajax({
  759. url: "/abg/createBadRange",
  760. type:"POST",
  761. data: badParam,
  762. dataType:"JSON",
  763. success: function (data) {
  764. if(data.success){
  765. //$('#dlg-batch-bad').dialog('close');
  766. //清空页面的数据
  767. $('#dlg-batch-bad form').form('clear');
  768. //刷新当前的页面
  769. refreshRollInfo(rollNo);
  770. }else{
  771. $.messager.alert("Error",data.msg,"Error",);
  772. }
  773. }
  774. })
  775. }
  776. </script>
  777. </@master.layout>