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.

279 lines
10 KiB

3 days ago
  1. <#import "../master.ftl" as master>
  2. <@master.layout>
  3. <div class="page-header" style="margin-top: 70px; ">
  4. <h3>Defective/QC</h3>
  5. </div>
  6. <div class="row" id="f1">
  7. <div class="col-md-5">
  8. <input id="inptOrder" type="text" class="form-control" placeholder="SO No" />
  9. <p>
  10. <table id="tblOrderInfo" class="table">
  11. </table>
  12. </p>
  13. </div>
  14. <div class="col-md-3" id="btns" style="display: none;">
  15. <p>
  16. <button class="btn btn-default" id="createRoll1" onclick="createNgModal()" >Create defective roll</button>
  17. </p>
  18. <p>
  19. <button class="btn btn-default" id="createRoll2" onclick="createQcModal()" >Create QC roll</button>
  20. </p>
  21. </div>
  22. <!-- 扫描序列号modal -->
  23. <div id="bad_roll_dlg" class="easyui-dialog" style="width: 320px; display: none;" closed="true"
  24. data-options="modal:true" buttons='#tb_bad_roll'>
  25. <div style="margin-left: 10px; margin-top: 10px; margin-bottom: 10px;">
  26. <label>Roll No:</label>
  27. <input id="bad_roll_no" name="rollNo" style="margin-left: 20px; width: 180px;">
  28. </div>
  29. </div>
  30. <div id="tb_bad_roll" style="display: none; text-align: center;">
  31. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="saveBadRoll()" style="width:90px">Save</a>
  32. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#bad_roll_dlg').dialog('close')" style="width:90px">Cancel</a>
  33. </div>
  34. <!-- 扫描序列号modal -->
  35. <div id="qc_roll_dlg" class="easyui-dialog" style="width: 320px; display: none;" closed="true"
  36. data-options="modal:true" buttons='#tb_qc_roll'>
  37. <div style="margin-left: 10px; margin-top: 10px; margin-bottom: 10px;">
  38. <label>Roll No:</label>
  39. <input id="qc_roll_no" name="rollNo" style="margin-left: 20px; width: 180px;">
  40. </div>
  41. </div>
  42. <div id="tb_qc_roll" style="display: none; text-align: center;">
  43. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="saveQcRoll()" style="width:90px">Save</a>
  44. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#qc_roll_dlg').dialog('close')" style="width:90px">Cancel</a>
  45. </div>
  46. <script>
  47. let orderNo;
  48. var ORDER_NO;
  49. function scanOrderNo(){
  50. var inptValue = $("#inptOrder").val();
  51. var $tblOrderInfo = $("#tblOrderInfo");
  52. $tblOrderInfo.html("");
  53. $("#btns").hide();
  54. if (inptValue.length == 0){
  55. return false;
  56. }
  57. $.post("/rollop/${func}/getQcCount", {orderNo: inptValue}, function(data){
  58. if (data.success && data.order){
  59. ORDER_NO = data.order.orderNo;
  60. orderNo = data.order.orderNo;
  61. DATA = data;
  62. $tblOrderInfo.append("<tr><td>SO No:</td><td>"+data.order.orderNo+"</td></tr>");
  63. $tblOrderInfo.append("<tr><td>Part No:</td><td>"+data.order.partNo+"</td></tr>");
  64. $tblOrderInfo.append("<tr><td>Part Description:</td><td>"+data.order.partDesc+"</td></tr>");
  65. $tblOrderInfo.append("<tr><td>Status:</td><td>"+data.order.status+"</td></tr>");
  66. $tblOrderInfo.append("<tr><td>Setup & NG:</td><td>"+data.setupAndNc+"</td></tr>");
  67. $tblOrderInfo.append("<tr><td>First off & Last Off:</td><td>"+data.faiAndEai+"</td></tr>");
  68. if (data.goodCount && data.goodCount >= 0) {
  69. $tblOrderInfo.append("<tr><td>Defect Product Qty:</td><td>"+data.goodCount+"</td></tr>");
  70. }
  71. if (data.sRolls){
  72. $tblOrderInfo.append("<tr><td>Defective roll:</td><td>"+showBadRolls(data.sRolls)+"</td></tr>");
  73. }
  74. if (data.qRolls){
  75. $tblOrderInfo.append("<tr><td>QC roll:</td><td>"+showRolls(data.qRolls)+"</td></tr>");
  76. }
  77. $("#btns").show();
  78. checkWithWorkingOrder(ORDER_NO);
  79. }
  80. });
  81. }
  82. //展示不良卷的方法
  83. function showBadRolls(rolls){
  84. var list = rolls || [];
  85. var ret = [];
  86. for(var i=0;i<list.length;i++){
  87. ret.push("<a target='forprint' href='/print/finalroll/"+list[i].finalRollNo+"/'>Roll No: "+list[i].finalRollNo+
  88. " Defective quantity: "+(list[i].qty - list[i].tuningQty)+" Setup quantity:"+list[i].tuningQty+"</a>");
  89. }
  90. return ret.join("<br />");
  91. }
  92. function showRolls(rolls){
  93. var list = rolls || [];
  94. var ret = [];
  95. for(var i=0;i<list.length;i++){
  96. ret.push("<a target='forprint' href='/print/finalroll/"+list[i].finalRollNo+"/'>Roll No: "+list[i].finalRollNo+
  97. " Quantity: "+list[i].qty+"</a>");
  98. }
  99. return ret.join("<br />");
  100. }
  101. $("#inptOrder").on("keydown", function(){
  102. if(event.keyCode==13) {
  103. scanOrderNo();
  104. return false;
  105. }
  106. return true;
  107. });
  108. function createNg() {
  109. $.messager.confirm("Confirm","Create defective roll?", function(cr){
  110. if (cr){
  111. $.post("/rollop/${func}/createQcRoll/do", {"orderNo": ORDER_NO, "type": "S"}, function(ret){
  112. console.log(ret);
  113. if (ret.success) {
  114. $.messager.alert("info", "Success,the Qty is:"+ret.count, "info");
  115. $("#ifmforprint").attr('src', "/print/finalroll/" + ret.finalRoll.finalRollNo + "/");
  116. scanOrderNo();
  117. } else {
  118. $.messager.alert("Error", ret.errorMsg, "error");
  119. }
  120. }).fail(function(data) {
  121. $.messager.alert("Error", "Fail to create roll:"+JSON.stringify(data), "error");
  122. });
  123. }
  124. });
  125. }
  126. function createQc() {
  127. $.messager.confirm("Confirm","Create QC roll?", function(cr){
  128. if (cr){
  129. $.post("/rollop/${func}/createQcRoll/do", {"orderNo": ORDER_NO, "type": "Q"}, function(ret){
  130. console.log(ret);
  131. if (ret.success) {
  132. $.messager.alert("info", "Create QC roll successfully", "info");
  133. $("#ifmforprint").attr('src', "/print/finalroll/" + ret.finalRoll.finalRollNo + "/");
  134. scanOrderNo();
  135. } else {
  136. $.messager.alert("Error", ret.errorMsg, "error");
  137. }
  138. }).fail(function(data) {
  139. $.messager.alert("Error", "Fail to create roll:"+JSON.stringify(data), "error");
  140. });
  141. }
  142. });
  143. }
  144. function checkWithWorkingOrder(orderNo) {
  145. var workingOrder = $("#hdnWorkingOrder").val();
  146. if (workingOrder != orderNo){
  147. var msg = '';
  148. if (workingOrder != "") {
  149. msg = 'The order of this roll does not match with the current order '+workingOrder+'.';
  150. }
  151. $("#tblOrderInfo").html("");
  152. $("#btns").hide();
  153. $.messager.alert("Error", msg, "error", function(){
  154. $("#inptOrder").val("").focus();
  155. });
  156. // alert(msg);
  157. // window.location.href=window.location.href.replace(/\?.*$/,"");
  158. }
  159. }
  160. $(function () {
  161. $("#inptOrder").focus();
  162. })
  163. //打开不良卷录入的modal
  164. function createNgModal(){
  165. //刷新箱号的页面数据
  166. $('#bad_roll_dlg').dialog('open').dialog('center').dialog('setTitle', 'Create defective roll!');
  167. }
  168. //打开Qc的modal
  169. function createQcModal(){
  170. //刷新箱号的页面数据
  171. $('#qc_roll_dlg').dialog('open').dialog('center').dialog('setTitle', 'Create QC roll!');
  172. }
  173. //页面打开 获取焦点
  174. $("#bad_roll_dlg").dialog({
  175. onClose: function () {
  176. //刷新箱的数据
  177. },
  178. onOpen: function(){
  179. //清空数据获取焦点
  180. $('#bad_roll_no').val('');
  181. $('#bad_roll_no').focus();
  182. }
  183. });
  184. //页面打开 获取焦点
  185. $("#qc_roll_dlg").dialog({
  186. onClose: function () {
  187. //刷新箱的数据
  188. },
  189. onOpen: function(){
  190. //清空数据获取焦点
  191. $('#qc_roll_no').val('');
  192. $('#qc_roll_no').focus();
  193. }
  194. });
  195. //创建不良品卷
  196. function saveBadRoll(){
  197. let rollNo = $.trim($('#bad_roll_no').val());
  198. let func = '${func}';
  199. //判断是否存在
  200. if(null == rollNo || '' == rollNo){
  201. $.messager.alert("Error", 'Please type roll number first!', "error");
  202. return false;
  203. }
  204. //创建卷
  205. let badRoll = {'orderNo': orderNo, 'rollNo': rollNo, 'username': username, 'func': func};
  206. $.post("/rollop/createBadRoll", badRoll, function(ret){
  207. if (ret.success) {
  208. $.messager.alert("info", "Create defective roll successfully!", "info");
  209. $("#ifmforprint").attr('src', "/print/finalroll/" + ret.finalRoll.finalRollNo + "/");
  210. scanOrderNo();
  211. $('#bad_roll_dlg').dialog('close');
  212. } else {
  213. $.messager.alert("Error", ret.errorMsg, "error");
  214. }
  215. }).fail(function(data) {
  216. $.messager.alert("Error", "Fail to create roll:"+data.errorMsg, "error");
  217. });
  218. }
  219. //创建QC品卷
  220. function saveQcRoll(){
  221. let rollNo = $.trim($('#qc_roll_no').val());
  222. let func = '${func}';
  223. //判断是否存在
  224. if(null == rollNo || '' == rollNo){
  225. $.messager.alert("Error", 'Please type roll number first!', "error");
  226. return false;
  227. }
  228. //创建卷
  229. let qcRoll = {'orderNo': orderNo, 'rollNo': rollNo, 'username': username, 'func': func};
  230. $.post("/rollop/createQcRoll", qcRoll, function(ret){
  231. if (ret.success) {
  232. $.messager.alert("info", "Create QC roll successfully", "info");
  233. $("#ifmforprint").attr('src', "/print/finalroll/" + ret.finalRoll.finalRollNo + "/");
  234. scanOrderNo();
  235. $('#qc_roll_dlg').dialog('close');
  236. } else {
  237. $.messager.alert("Error", ret.errorMsg, "error");
  238. }
  239. }).fail(function(data) {
  240. $.messager.alert("Error", "Fail to create roll:"+data.errorMsg, "error");
  241. });
  242. }
  243. </script>
  244. <style>
  245. button {min-width: 100px;}
  246. </style>
  247. </@master.layout>