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.

846 lines
41 KiB

3 days ago
  1. <#macro layout>
  2. <!DOCTYPE html>
  3. <html lang="zh-CN">
  4. <head>
  5. <meta charset="utf-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1">
  8. <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
  9. <meta name="description" content="">
  10. <meta name="author" content="">
  11. <link rel="icon" href="/favicon.ico">
  12. <title>${projectTitle!"CCL"}</title>
  13. <!-- Bootstrap core CSS -->
  14. <link href="/bootstrap/3.3.7/bootstrap.min.css" rel="stylesheet">
  15. <link href="/bootstrap/3.3.7/bootstrap-theme.min.css" rel="stylesheet">
  16. <link rel="stylesheet" type="text/css" href="/jeasyui/themes/default/easyui.css">
  17. <link rel="stylesheet" type="text/css" href="/jeasyui/themes/icon.css">
  18. <link rel="stylesheet" type="text/css" href="/js/layer/skin/layer.css">
  19. <!-- <link href="/css/layui/layui.css" rel="stylesheet"> -->
  20. <!-- Custom styles for this template -->
  21. <link href="/css/app.css" rel="stylesheet">
  22. <script type="text/javascript" src="/jeasyui/jquery.min.js"></script>
  23. <script type="text/javascript" src="/jeasyui/jquery.easyui.min.js"></script>
  24. <script type="text/javascript" src="/jeasyui/locale/easyui-lang-zh_CN.js"></script>
  25. <script src="/js/layui/layui.js"></script>
  26. <script>
  27. //格式化字符串时间
  28. function formatStringTime(value, row){
  29. if(null == value || '' == value){
  30. return '';
  31. }
  32. //处理位数不够的问题
  33. if(value.length < 19){
  34. value = value.substring(0, 10);
  35. }else if(value.length >= 19 && value.length < 25){
  36. value = value.substring(0, 19);
  37. }
  38. return value;
  39. }
  40. function formatDateTime(value,row){
  41. if (value && value > 0){
  42. var d = new Date(value);
  43. var MM = d.getMonth() <= 9 ? '0'+(d.getMonth()+1) : d.getMonth() + 1;
  44. var hh = d.getHours() <= 9 ? '0'+d.getHours() : d.getHours();
  45. var mm = d.getMinutes() <= 9 ? '0'+d.getMinutes() : d.getMinutes();
  46. var ss = d.getSeconds() <= 9 ? '0'+d.getSeconds() : d.getSeconds();
  47. var dd = d.getDate() <= 9 ? '0'+d.getDate() : d.getDate();
  48. var datestring = d.getFullYear() + "-" + MM + "-" + dd + " " + hh + ":" + mm + ":" + ss;
  49. return datestring;
  50. }
  51. return "";
  52. }
  53. // 统一的Ajax错误处理
  54. function handleAjaxError(data) {
  55. var responseText = data.responseText;
  56. try {
  57. var json_str = JSON.parse(responseText);
  58. var status = json_str.status;
  59. var message = json_str.message;
  60. // 判断是否是session超时
  61. if(403==status){
  62. layer.alert(message,function(){
  63. window.parent.subCallBackReload();
  64. });
  65. } else {
  66. layer.alert(message || '操作失败:网络错误');
  67. }
  68. } catch(e) {
  69. layer.alert('操作失败:网络错误');
  70. }
  71. }
  72. function formatDate(value,row){
  73. if (value && value > 0){
  74. var d = new Date(value);
  75. var MM = d.getMonth() < 9 ? '0'+(d.getMonth()+1) : d.getMonth() + 1;
  76. var dd = d.getDate() <= 9 ? '0'+d.getDate() : d.getDate();
  77. var datestring = d.getFullYear() + "-" + MM + "-" + dd;
  78. return datestring;
  79. }
  80. return "";
  81. }
  82. function formatQrcode(value,row){
  83. // return "<a target='_blank' href='/qrcode/"+value+"/'>"+value+"</a>";
  84. return "<a target='forprint' href='/print/text/" +value+"/'>"+value+"</a>";
  85. }
  86. function formatLodopPrint(tag){
  87. return function(value, row){
  88. return "<a target='forprint' href='/print/"+tag + "/" +value+"/'>"+value+"</a>";
  89. };
  90. }
  91. </script>
  92. </head>
  93. <body>
  94. <nav class="navbar navbar-default navbar-fixed-top">
  95. <div class="container">
  96. <div class="navbar-header">
  97. <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
  98. <span class="sr-only">Toggle navigation</span>
  99. <span class="icon-bar"></span>
  100. <span class="icon-bar"></span>
  101. <span class="icon-bar"></span>
  102. </button>
  103. <span ><img src="/img/ccl-logo.png" height="30" style="margin-top:10px;margin-right:10px;" /></span>
  104. </div>
  105. <#if currentUser??>
  106. <div style="display: none;">
  107. <input type="hidden" id="current_username" value="${currentUser.username}">
  108. <input type="hidden" id="current_orderNo" value="${currentUser.workingOrder}">
  109. </div>
  110. <div id="navbar" class="collapse navbar-collapse">
  111. <ul class="nav navbar-nav">
  112. <#if currentUser.isAdmin || currentUser.authorities?contains("prepress")>
  113. <li class="dropdown">
  114. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Prepress<span class="caret"></span></a>
  115. <ul class="dropdown-menu">
  116. <li><a href="/prepress/">Prepress</a></li>
  117. <li><a href="/prepress/rework">PrepressRework</a></li>
  118. <li><a href="/mobile/shopOrder/material_natch_error">材料批次异常处理</a></li>
  119. </ul>
  120. </li>
  121. </#if>
  122. <#if currentUser.isAdmin || currentUser.authorities?contains("indigo")>
  123. <li class="dropdown">
  124. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Indigo<span class="caret"></span></a>
  125. <ul class="dropdown-menu">
  126. <li><a href="/indigo/create_roll">Create Roll</a></li>
  127. <li><a href="/indigo/roll_op">Indigo</a></li>
  128. <li><a href="/rollop/indigo/createQcRoll">Defective/QC</a></li>
  129. <li><a href="/scanning/finalrolls/10/">Finished good rolls</a></li>
  130. <li><a href="javascript:void(0)" onclick="printSfOrderModal()">半成品工单打印</a></li>
  131. <li><a href="javascript:void(0)" onclick="changeWorkingOrder('indigo');">切换订单</a></li>
  132. </ul>
  133. </li>
  134. </#if>
  135. <!-- 热覆合 -->
  136. <#if currentUser.isAdmin || currentUser.authorities?contains("thermal")>
  137. <li class="dropdown">
  138. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
  139. aria-expanded="false">热覆合<span class="caret"></span></a>
  140. <ul class="dropdown-menu">
  141. <li><a href="/rollop/thermal/">热覆合</a></li>
  142. <li><a href="/rollop/thermal/createQcRoll">Defective/QC</a></li>
  143. <li><a href="/scanning/finalrolls/15/">Finished good rolls</a></li>
  144. <li><a href="javascript:void(0)" onclick="changeWorkingOrder('thermal');">切换订单</a></li>
  145. </ul>
  146. </li>
  147. </#if>
  148. <!-- 分切 -->
  149. <#if currentUser.isAdmin || currentUser.authorities?contains("cut")>
  150. <li class="dropdown">
  151. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
  152. aria-expanded="false">分切<span class="caret"></span></a>
  153. <ul class="dropdown-menu">
  154. <li><a href="/cut/rollop/">分切</a></li>
  155. <li><a href="/cut/createQcRoll">Defective/QC</a></li>
  156. <li><a href="/scanning/finalrolls/15/">Finished good rolls</a></li>
  157. <li><a href="javascript:void(0)" onclick="changeWorkingOrder('cut');">切换订单</a></li>
  158. </ul>
  159. </li>
  160. </#if>
  161. <#if currentUser.isAdmin || currentUser.authorities?contains("abg")>
  162. <li class="dropdown">
  163. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">ABG<span class="caret"></span></a>
  164. <ul class="dropdown-menu">
  165. <!-- <li><a href="/rollop/abg/">ABG</a></li> -->
  166. <li><a href="/abg/rollop/">ABG</a></li>
  167. <li><a href="/abg/createQcRoll">Defective/QC</a></li>
  168. <li><a href="/scanning/finalrolls/20/">Finished good rolls</a></li>
  169. <li><a href="javascript:void(0)" onclick="changeWorkingOrder('abg');">切换订单</a></li>
  170. </ul>
  171. </li>
  172. </#if>
  173. <#if currentUser.isAdmin || currentUser.authorities?contains("aoi")>
  174. <li class="dropdown">
  175. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">AOI<span class="caret"></span></a>
  176. <ul class="dropdown-menu">
  177. <#-- <li><a href="/rollop/aoi/">AOI</a></li>-->
  178. <li><a href="/aoi/rollop/">AOI</a></li>
  179. <li><a href="/aoi/createQcRoll">Defective/QC</a></li>
  180. <li><a href="/scanning/finalrolls/30/">Finished good rolls</a></li>
  181. <li><a href="javascript:void(0)" onclick="changeWorkingOrder('aoi');">切换订单</a></li>
  182. </ul>
  183. </li>
  184. </#if>
  185. <#if currentUser.isAdmin || currentUser.authorities?contains("rewind")>
  186. <li class="dropdown">
  187. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Rewind<span class="caret"></span></a>
  188. <ul class="dropdown-menu">
  189. <#-- <li><a href="/rewind/rewindWithoutCombine">模式1(不接卷)</a></li>-->
  190. <li><a href="/rewind/rewindWithCombine">倒卷</a></li>
  191. <li><a href="javascript:void(0)" onclick="changeWorkingOrder('rewind');">切换订单</a></li>
  192. </ul>
  193. </li>
  194. </#if>
  195. <#if currentUser.isAdmin || currentUser.authorities?contains("scanning")>
  196. <li class="dropdown">
  197. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Scanning<span class="caret"></span></a>
  198. <ul class="dropdown-menu">
  199. <li><a href="/scanning/confirm">Confirm quantity</a></li>
  200. <li><a href="/scanning/jobdtlByUser">扫描任务</a></li>
  201. <li><a href="/scanning/jobReworkDtls">返工扫描</a></li>
  202. <li><a href="/scanning/rollCheck">Master roll confirm</a></li>
  203. <li><a href="/scanning/slittingCheck">Slitting Roll Comfirm</a></li>
  204. <li><a href="/scanning/reworkRollCheck">返工卷核查</a></li>
  205. <li><a href="/scanning/finalrolls/40/">Finished good rolls</a></li>
  206. <li><a href="/scanning/createQcRoll">不良品处理</a></li>
  207. <li><a href="javascript:void(0)" onclick="changeWorkingOrder('scanning');">切换订单</a></li>
  208. </ul>
  209. </li>
  210. </#if>
  211. <#-- <#if currentUser.isAdmin || currentUser.authorities?contains("cqc")>-->
  212. <#-- <li><a href="/scanning/cqc">CQC</a></li>-->
  213. <#-- </#if>-->
  214. <#if currentUser.isAdmin || currentUser.authorities?contains("receiving")>
  215. <li class="dropdown">
  216. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Receiving<span class="caret"></span></a>
  217. <ul class="dropdown-menu">
  218. <li><a href="/receive">Receiving</a></li>
  219. <li><a href="/return/receive">退货入库</a></li>
  220. <li><a href="/rework/rework_register">返工登记</a></li>
  221. <li><a href="/receiveStock">Receive by Normal Box</a></li>
  222. <#if currentUser.isAdmin || currentUser.authorities?contains("boxManage")>
  223. <li><a href="/boxManage">Box Management</a></li>
  224. </#if>
  225. <li><a href="/inventoryTasks">Counting</a></li>
  226. </ul>
  227. </li>
  228. </#if>
  229. <#if currentUser.isAdmin || currentUser.authorities?contains("dispatch")>
  230. <li class="dropdown">
  231. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dispatch<span class="caret"></span></a>
  232. <ul class="dropdown-menu">
  233. <li><a href="/shipment">Dispatch</a></li>
  234. <li><a href="/discard">Scrap defective/QC</a></li>
  235. </ul>
  236. </li>
  237. </#if>
  238. <#if currentUser.isAdmin || currentUser.authorities?contains("query")>
  239. <li class="dropdown">
  240. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Query<span class="caret"></span></a>
  241. <ul class="dropdown-menu">
  242. <li><a href="/prepress/query">Query SO</a></li>
  243. <li><a href="/prepress/serialInfo">Query serial number</a></li>
  244. <li><a href="/prepress/soOrderInfo">Automatically count by SO quantity</a></li>
  245. <li><a href="/prepress/receiveQty">IFS入库数量核实</a></li>
  246. <#if currentUser.isAdmin>
  247. <li><a href="javascript:void(0)" onclick="missingReport();">缺失报告</a></li>
  248. <li><a href="javascript:void(0)" onclick="complement();">缺失补号</a></li>
  249. <li><a href="javascript:void(0)" onclick="exportSn();">缺失号导出</a></li>
  250. </#if>
  251. <#if currentUser.isAdmin || currentUser.authorities?contains("dispatch")>
  252. <li><a href="javascript:void(0)" onclick="scanBox();">重打入库箱标签</a></li>
  253. <!-- <li><a href="javascript:void(0)" onclick="frozenSn();">冻结卷</a></li> -->
  254. </#if>
  255. <#if currentUser.isAdmin || currentUser.authorities?contains("printer")>
  256. <li><a href="javascript:void(0)" onclick="scanSn();">补打卷标签</a></li>
  257. </#if>
  258. <#if currentUser.isAdmin || currentUser.authorities?contains("printer_roll")>
  259. <li><a href="javascript:void(0)" onclick="scanZeroRoll();">补打零数卷</a></li>
  260. </#if>
  261. <#if currentUser.isAdmin || currentUser.authorities?contains("freezeAndThaw")>
  262. <li><a href="/menu21/freeze_and_thaw">冻结和解冻</a></li>
  263. </#if>
  264. <li><a href="/delivery/order/query">工单出货查询</a></li>
  265. <li><a href="/material/order/batch/query">工单批次查询</a></li>
  266. <li><a href="/query/final_roll/batch">成品卷批次查询</a></li>
  267. </ul>
  268. </li>
  269. </#if>
  270. <#-- <#if currentUser.isAdmin || currentUser.authorities?contains("counting")>-->
  271. <#-- <li><a href="/counting">Counting</a></li>-->
  272. <#-- </#if>-->
  273. <#if currentUser.isAdmin || currentUser.authorities?contains("basic_info")>
  274. <li class="dropdown">
  275. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">基础数据<span class="caret"></span></a>
  276. <ul class="dropdown-menu">
  277. <li><a href="/partManage">物料信息</a></li>
  278. <li><a href="/system/system_info">系统参数</a></li>
  279. </ul>
  280. </li>
  281. </#if>
  282. <!-- <#if currentUser.isAdmin>
  283. <li class="dropdown">
  284. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">测试功能<span class="caret"></span></a>
  285. <ul class="dropdown-menu">
  286. <li><a href="/warehouse/dashboard" target="_blank">仓库可视化大屏</a></li>
  287. </ul>
  288. </li>
  289. </#if> -->
  290. </ul>
  291. <ul class="nav navbar-nav navbar-right" style="margin-right: -40px;">
  292. <#-- <li><a href="javascript:void(0)" id="workingOrder"><#if Session.workingOrder?exists>当前生产订单:${Session.workingOrder!}</#if></a></li>-->
  293. <li><a href="javascript:void(0)">当前生产订单:${currentUser.workingOrder!}</a></li>
  294. <input type="hidden" id="hdnWorkingOrder" value="${currentUser.workingOrder!}" />
  295. <li class="dropdown">
  296. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">${currentUser.display}<span class="caret"></span></a>
  297. <input type = "hidden" id="subscriber" value="${currentUser.display}"/>
  298. <ul class="dropdown-menu">
  299. <li><a href="javascript:void(0);" onclick="showChangePwdDlg()">修改密码</a></li>
  300. <#if currentUser.isAdmin>
  301. <li><a href="/user/">User Management</a></li>
  302. <li><a href="/scanning/jobs">扫描机设置</a></li>
  303. </#if>
  304. <li><a href="/print/setprinter/">打印设置</a></li>
  305. <#if currentUser.isAdmin || currentUser.authorities?contains("emailConfig")>
  306. <li><a href="/base/emailConfig">邮件设置</a></li>
  307. </#if>
  308. <li role="separator" class="divider"></li>
  309. <li><a href="javascript:$('#frmLogout').submit();">退出</a></li>
  310. </ul>
  311. </li>
  312. <li><a href="javascript:void(0);"></a></li>
  313. </ul>
  314. </div><!--/.nav-collapse -->
  315. </div>
  316. </#if>
  317. </nav>
  318. <div class="container role="main">
  319. <#nested>
  320. <div id="changeWOdlg" class="easyui-dialog" style="width:500px;display: none;"
  321. closed="true" buttons="#changeWOdlg-buttons">
  322. <form id="changeWOdlgFm" method="post" novalidate style="margin:0;padding:20px 20px">
  323. <div style="margin-bottom:10px">
  324. <input name="username" class="easyui-textbox" required="true" label="User ID:" style="width:100%">
  325. </div>
  326. <div style="margin-bottom:10px">
  327. <input name="passwd" class="easyui-passwordbox" data-options="lastDelay:50" required="true" label="Password:" style="width:100%">
  328. </div>
  329. <div style="margin-bottom:10px">
  330. <input name="orderNo" class="easyui-textbox" required="true" label="切换到订单:" style="width:100%">
  331. </div>
  332. </form>
  333. </div>
  334. <div id="changeWOdlg-buttons" style="display: none;">
  335. <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="saveWOInfo()" style="width:90px">Save</a>
  336. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#changeWOdlg').dialog('close')" style="width:90px">Cancel</a>
  337. </div>
  338. <!-- 漏扫补号 -->
  339. <div id="complementSnDlg" class="easyui-dialog" style="width:500px;display: none;"
  340. closed="true" buttons="#complementSnDlg-buttons">
  341. <form id="complementSnDlgFm" method="post" novalidate style="margin:0;padding:20px 20px">
  342. <div style="margin-bottom:10px">
  343. <input name="serialNo" class="easyui-textbox" required="true" label="序列号:" style="width:100%">
  344. </div>
  345. <div style="margin-bottom:10px">
  346. <input name="finalRollNo" class="easyui-textbox" required="true" label="Roll No:" style="width:100%">
  347. </div>
  348. <div style="margin-bottom:10px">
  349. <input name="pid" class="easyui-textbox" required="true" label="标识号:" style="width:100%">
  350. </div>
  351. </form>
  352. </div>
  353. <div id="complementSnDlg-buttons" style="display: none;">
  354. <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="saveComplement()" style="width:90px">Save</a>
  355. <!-- <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="exportComplement()" style="width:90px">Export</a> -->
  356. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#complementSnDlg').dialog('close')" style="width:90px">Cancel</a>
  357. </div>
  358. <!-- 缺失号导出 -->
  359. <div id="exportSnDlg" class="easyui-dialog" style="width:500px;display: none;"
  360. closed="true" buttons="#exportSnDlg-buttons">
  361. <form id="exportSnDlgFm" method="post" novalidate style="margin:0;padding:20px 20px">
  362. <div style="margin-bottom:10px">
  363. <input id = "pid" name="pid" class="easyui-textbox" required="true" label="标识号:" style="width:100%">
  364. </div>
  365. </form>
  366. </div>
  367. <div id="exportSnDlg-buttons" style="display: none;">
  368. <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="exportComplement()" style="width:90px">Export</a>
  369. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#exportSnDlg').dialog('close')" style="width:90px">Cancel</a>
  370. </div>
  371. <!-- 扫描箱号 -->
  372. <div id="scanBoxDlg" class="easyui-dialog" style="width:500px;display: none;"
  373. closed="true" buttons="#scanBoxDlg-buttons">
  374. <form id="scanBoxDlgFm" method="post" novalidate style="margin:0;padding:20px 20px">
  375. <div style="margin-bottom:10px">
  376. <input id = "boxNo" name="boxNo" class="easyui-textbox" required="true" label="箱号:" style="width:100%">
  377. </div>
  378. </form>
  379. </div>
  380. <div id="scanBoxDlg-buttons" style="display: none;">
  381. <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="scanBoxComplement()" style="width:90px">Check</a>
  382. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#scanBoxDlg').dialog('close')" style="width:90px">Cancel</a>
  383. </div>
  384. <!-- 扫描序列号 -->
  385. <div id="scanSnDlg" class="easyui-dialog" style="width:500px;display: none;"
  386. closed="true" buttons="#scanSnDlg-buttons">
  387. <form id="scanSnDlgFm" method="post" novalidate style="margin:0;padding:20px 20px">
  388. <div style="margin-bottom:10px">
  389. <input id = "snNo" name="snNo" class="easyui-textbox" required="true" label="序列号:" style="width:100%">
  390. </div>
  391. </form>
  392. </div>
  393. <div id="scanSnDlg-buttons" style="display: none;">
  394. <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="scanSnComplement()" style="width:90px">Check</a>
  395. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#scanSnDlg').dialog('close')" style="width:90px">Cancel</a>
  396. </div>
  397. <!-- 缺失报告 -->
  398. <div id="missingSnDlg" class="easyui-dialog" style="width:500px;display: none;"
  399. closed="true" buttons="#missingSnDlg-buttons">
  400. <form id="missingSnDlgFm" method="post" novalidate style="margin:0;padding:20px 20px">
  401. <div style="margin-bottom:10px">
  402. <input id = "start_qty" name="start_qty" class="easyui-numberbox" required="true" label="前几位数:" style="width:100%">
  403. </div>
  404. <div style="margin-bottom:10px">
  405. <input id = "end_qty" name="end_qty" class="easyui-numberbox" required="true" label="后几位数:" style="width:100%">
  406. </div>
  407. <div style="margin-bottom:10px">
  408. <input id = "order_no" name="order_no" class="easyui-textbox" required="true" label="订单号:" style="width:100%">
  409. </div>
  410. <div style="margin-bottom:10px">
  411. <input id = "serial_no" name="serial_no" class="easyui-textbox" required="true" label="序列号:" style="width:100%">
  412. </div>
  413. </form>
  414. </div>
  415. <div id="missingSnDlg-buttons" style="display: none;">
  416. <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="exportMissSn()" style="width:90px">Export</a>
  417. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#missingSnDlg').dialog('close')" style="width:90px">Cancel</a>
  418. </div>
  419. <div id="changePWDdlg" class="easyui-dialog" style="width:500px;display: none;"
  420. closed="true" buttons="#changePWDdlg-buttons">
  421. <form id="changePWDdlgFm" method="post" novalidate style="margin:0;padding:20px 20px">
  422. <div style="margin-bottom:10px">
  423. <input name="oldPasswd" class="easyui-passwordbox" data-options="lastDelay:50" required="true" label="旧密码:" style="width:100%">
  424. </div>
  425. <div style="margin-bottom:10px">
  426. <input name="newPasswd" class="easyui-passwordbox" data-options="lastDelay:50" required="true" label="新密码:" style="width:100%">
  427. </div>
  428. <div style="margin-bottom:10px">
  429. <input name="newPasswdConfirm" class="easyui-passwordbox" data-options="lastDelay:50" required="true" label="重复新密码:" style="width:100%">
  430. </div>
  431. </form>
  432. </div>
  433. <div id="changePWDdlg-buttons" style="display: none;">
  434. <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="saveNewPwd()" style="width:90px">Save</a>
  435. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#changePWDdlg').dialog('close')" style="width:90px">Cancel</a>
  436. </div>
  437. <!-- 扫描卷号-冻结 -->
  438. <div id="frozenRnDlg" class="easyui-dialog" style="width:500px;display: none;"
  439. closed="true" buttons="#scanSnDlg-buttons">
  440. <form id="frozenRnDlgFm" method="post" novalidate style="margin:0;padding:20px 20px">
  441. <div style="margin-bottom:10px">
  442. <input id = "frozenRn" name="frozenRn" class="easyui-textbox" required="true" label="Roll No:" style="width:100%">
  443. </div>
  444. </form>
  445. </div>
  446. <div id="scanSnDlg-buttons" style="display: none;">
  447. <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="frozenRnComplement()" style="width:90px">Check</a>
  448. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#frozenRnDlg').dialog('close')" style="width:90px">Cancel</a>
  449. </div>
  450. <!-- 打印半成品工单 -->
  451. <div id="print_sf_order" class="easyui-dialog" style="width:500px;display: none;" closed="true" buttons="#printSfOrder-buttons">
  452. <form id="frozenRnDlgFm" method="post" novalidate style="margin:0;padding:20px 20px">
  453. <div style="margin-bottom:10px">
  454. <input id = "sf_order" name="sfOrder" class="easyui-textbox" required="true" label="半成品工单" style="width:100%">
  455. </div>
  456. </form>
  457. </div>
  458. <div id="printSfOrder-buttons" style="display: none;">
  459. <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="printSfOrderLabel()" style="width:90px">Print</a>
  460. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#print_sf_order').dialog('close')" style="width:90px">Cancel</a>
  461. </div>
  462. <!-- 扫描序列号 -->
  463. <div id="scanRollDlg" class="easyui-dialog" style="width:500px;display: none;"
  464. closed="true" buttons="#scanRollDlg-buttons">
  465. <form id="scanRollDlgFm" method="post" novalidate style="margin:0;padding:20px 20px">
  466. <div style="margin-bottom:10px">
  467. <input id = "rollNo" name="rollNo" class="easyui-textbox" required="true" label="Roll No:" style="width:100%">
  468. </div>
  469. </form>
  470. </div>
  471. <div id="scanRollDlg-buttons" style="display: none;">
  472. <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="scanRollComplement()" style="width:90px">Check</a>
  473. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#scanRollDlg').dialog('close')" style="width:90px">Cancel</a>
  474. </div>
  475. <script src='http://127.0.0.1:8000/CLodopfuncs.js'></script>
  476. <script type="text/javascript" src="/js/external/print/print_qc_label.js"></script>
  477. <script type="text/javascript" src="/js/external/print/print_qc_zero_label.js"></script>
  478. <script type="text/javascript" src="/js/external/print/print_box_label.js"></script>
  479. <script>
  480. var workingOrder = '${currentUser.workingOrder}';
  481. var username = '${currentUser.username}';
  482. var clodopLicense = '${clodoplisence}';
  483. var SWITCH_ORDER_SITE = "";
  484. function changeWorkingOrder(site) {
  485. SWITCH_ORDER_SITE = site;
  486. $('#changeWOdlg').dialog('center').dialog('setTitle', '修改操作订单(需有权限人操作)').dialog('open');
  487. $('#changeWOdlgFm').form('clear');
  488. }
  489. function saveWOInfo() {
  490. $('#changeWOdlgFm').form('submit',{
  491. url: "/rollop/"+SWITCH_ORDER_SITE+"/setOrderEnv",
  492. onSubmit: function(){
  493. return $(this).form('validate');
  494. },
  495. success: function(result){
  496. var result = eval("("+result+")");
  497. if (result.errorMsg){
  498. $.messager.alert('error',result.errorMsg, 'error');
  499. } else {
  500. $('#changeWOdlg').dialog('close'); // close the dialog
  501. window.location.reload();
  502. }
  503. }
  504. });
  505. }
  506. function showChangePwdDlg() {
  507. $('#changePWDdlg').dialog('center').dialog('setTitle', '修改密码').dialog('open');
  508. $('#changePWDdlgFm').form('clear');
  509. }
  510. function saveNewPwd() {
  511. $('#changePWDdlgFm').form('submit',{
  512. url: "/user/changePwd",
  513. onSubmit: function(){
  514. return $(this).form('validate');
  515. },
  516. success: function(result){
  517. var result = eval("("+result+")");
  518. if (result.errorMsg){
  519. $.messager.alert('error',result.errorMsg, 'error');
  520. } else {
  521. $('#changePWDdlg').dialog('close'); // close the dialog
  522. }
  523. }
  524. });
  525. }
  526. //漏扫补号页面
  527. function complement() {
  528. $('#complementSnDlg').dialog('center').dialog('setTitle', '缺失补号').dialog('open');
  529. $('#complementSnDlgFm').form('clear');
  530. }
  531. //漏扫补号保存
  532. function saveComplement() {
  533. $('#complementSnDlgFm').form('submit',{
  534. url: "/complement/soFinalRollDtls",
  535. onSubmit: function(){
  536. return $(this).form('validate');
  537. },
  538. success: function(result){
  539. console.log(result);
  540. var result = eval("("+result+")");
  541. if (result.errorMsg){
  542. $.messager.alert('error',result.errorMsg, 'error');
  543. } else {
  544. $('#complementSnDlgFm').form('clear');
  545. }
  546. }
  547. });
  548. }
  549. //导出缺失序列号
  550. function exportSn() {
  551. $('#exportSnDlg').dialog('center').dialog('setTitle', '缺失号导出').dialog('open');
  552. $('#exportSnDlgFm').form('clear');
  553. }
  554. //导出缺失序列号
  555. function exportComplement(){
  556. var pid = $("#pid").val();
  557. $.post("/shipment/exportSn", {pid: pid}, function(ret){
  558. if(ret.success){
  559. window.location.href="/prepress/download/"+ret.fileName;
  560. }else{
  561. $.messager.alert('Error',ret.errorMsg, 'error');
  562. }
  563. });
  564. }
  565. //导出缺失序列号
  566. function missingReport() {
  567. $('#missingSnDlg').dialog('center').dialog('setTitle', '缺失报告').dialog('open');
  568. $('#missingSnDlgFm').form('clear');
  569. $('#start_qty').numberbox('setValue', "10");
  570. $('#end_qty').numberbox('setValue', "10");
  571. }
  572. //导出缺失序列号
  573. function exportMissSn(){
  574. var startQty = $("#start_qty").val();
  575. var endQty = $("#end_qty").val();
  576. var orderNo = $("#order_no").val();
  577. var serialNo = $("#serial_no").val();
  578. $.post("/prepress/exportMissSn", {startQty: startQty,endQty: endQty,orderNo: orderNo,serialNo: serialNo}, function(ret){
  579. if(ret.success){
  580. window.location.href="/prepress/downloadFileZip/"+ret.fileName;
  581. }else{
  582. $.messager.alert('Error',ret.errorMsg, 'error');
  583. }
  584. });
  585. }
  586. //扫描箱号
  587. function scanBox() {
  588. $('#scanBoxDlg').dialog('center').dialog('setTitle', 'Scaning Box No').dialog('open');
  589. $('#scanBoxDlgFm').form('clear');
  590. }
  591. function scanBoxComplement(){
  592. var boxNo = $("#boxNo").val();
  593. $.post("/shipment/scanBoxNo", {boxNo: boxNo}, function(ret){
  594. if(ret.success){
  595. if(ret.flag){
  596. $.messager.confirm('Confirm',' <b>'+boxNo+'</b> There is surplus roll in this box, are you sure to print ?',function(r){
  597. if (r){
  598. //调用方法 补打标签
  599. getInnerBoxPrintCacheData(boxNo);
  600. //$("#ifmforprint").attr('src', "/print/checkReceiveBox/" + boxNo + "/");
  601. }
  602. });
  603. }else{
  604. $.messager.alert('Info','no surplus roll!', 'Info');
  605. }
  606. }else{
  607. $.messager.alert('Error',ret.errorMsg, 'error');
  608. }
  609. });
  610. }
  611. //扫描序列号
  612. function scanSn() {
  613. $('#scanSnDlg').dialog('center').dialog('setTitle', '扫描序列号').dialog('open');
  614. $('#scanSnDlgFm').form('clear');
  615. }
  616. //扫描卷号
  617. function scanZeroRoll() {
  618. $('#scanRollDlg').dialog('center').dialog('setTitle', 'Scan roll number').dialog('open');
  619. $('#scanRollDlgFm').form('clear');
  620. }
  621. function scanSnComplement(){
  622. var snNo = $("#snNo").val();
  623. $.post("/shipment/scanSnNo", {snNo: snNo}, function(ret){
  624. if(ret.success){
  625. $.messager.confirm('Confirm',' <b>'+ret.rollNo+'</b>该卷,是否打印 ?',function(r){
  626. if (r){
  627. //调用打印的方法
  628. //调用方法 执行缓存打印的信息 然后调用js打印数据
  629. getQcPrintCacheData(ret.rollNo, 0);
  630. //$("#ifmforprint").attr('src', "/print/newlabel/" + ret.rollNo + "/0/");
  631. }
  632. });
  633. }else{
  634. $.messager.alert('Error',ret.errorMsg, 'error');
  635. }
  636. });
  637. }
  638. //缓存打印信息
  639. function getQcPrintCacheData(finalRollNo, pass){
  640. //组合请求的参数
  641. let requestData = {finalRollNo: finalRollNo, number: pass, username: username};
  642. $.ajax({
  643. url: "/print/label/cacheQcRollData",
  644. contentType: 'application/json',
  645. type:"POST",
  646. data:JSON.stringify(requestData),
  647. dataType:"JSON",
  648. success: function (result) {
  649. if(result.success){
  650. let printRow = JSON.parse(result.printData);
  651. let printerInfo = {printerSeq: printRow.printerSeq, printerName: printRow.printerName, clodopLicense: clodopLicense};
  652. //调用打印的方法的方法
  653. printQcRollLabel(printRow, printerInfo);
  654. }else{
  655. $.messager.alert("Error",result.msg,"Error",);
  656. }
  657. }
  658. })
  659. }
  660. //缓存打印信息
  661. function getQcZeroPrintCacheData(finalRollNo, pass){
  662. //组合请求的参数
  663. let requestData = {finalRollNo: finalRollNo, number: pass, username: username};
  664. $.ajax({
  665. url: "/print/label/cacheQcZeroRollData",
  666. contentType: 'application/json',
  667. type:"POST",
  668. data:JSON.stringify(requestData),
  669. dataType:"JSON",
  670. success: function (result) {
  671. if(result.success){
  672. let printRow = JSON.parse(result.printData);
  673. let printerInfo = {printerSeq: printRow.printerSeq, printerName: printRow.printerName, clodopLicense: clodopLicense};
  674. //调用打印的方法的方法
  675. printQcZeroRollLabel(printRow, printerInfo);
  676. }else{
  677. $.messager.alert("Error",result.msg,"Error",);
  678. }
  679. }
  680. })
  681. }
  682. //缓存打印信息
  683. function getInnerBoxPrintCacheData(boxNo, onLoaded){
  684. //组合请求的参数
  685. let requestData = {boxNo: boxNo, username: username};
  686. $.ajax({
  687. url: "/print/label/cacheReceiveBoxData",
  688. contentType: 'application/json',
  689. type:"POST",
  690. data:JSON.stringify(requestData),
  691. dataType:"JSON",
  692. success: function (result) {
  693. if(result.success){
  694. let printRow = JSON.parse(result.printData);
  695. let printerInfo = {printerSeq: printRow.printerSeq, printerName: printRow.printerName, clodopLicense: clodopLicense};
  696. //回调
  697. if (typeof onLoaded === 'function') {
  698. onLoaded();
  699. }
  700. //调用打印的方法的方法
  701. printReceiveBoxLabel(printRow, printerInfo);
  702. }else{
  703. $.messager.alert("Error",result.msg,"Error",);
  704. }
  705. }
  706. })
  707. }
  708. //补打零数卷
  709. function scanRollComplement(){
  710. var rollNo = $("#rollNo").val();
  711. $.post("/print/scanRollNo", {rollNo: rollNo}, function(ret){
  712. if(ret.success){
  713. $.messager.confirm('Confirm',' <b>'+ret.rollNo+'</b>该卷,是否打印 ?',function(r){
  714. if (r){
  715. //$("#ifmforprint").attr('src', "/print/newPrintLabel/" + ret.rollNo + "/0/");
  716. getQcZeroPrintCacheData(ret.rollNo, 0);
  717. }
  718. });
  719. }else{
  720. $.messager.alert('Error',ret.errorMsg, 'error');
  721. }
  722. });
  723. }
  724. //冻结卷页面
  725. function frozenSn(){
  726. $('#frozenRnDlg').dialog('center').dialog('setTitle', 'Scan roll number').dialog('open');
  727. $('#frozenRnDlgFm').form('clear');
  728. }
  729. //确认冻结卷
  730. function frozenRnComplement(){
  731. var frozenRn = $("#frozenRn").val();
  732. $.post("/scanning/frozenRn", {frozenRn: frozenRn}, function(ret){
  733. if(ret.success){
  734. $.messager.alert('Info',"Frozen", 'Info');
  735. $('#frozenRnDlg').dialog('close');
  736. }else{
  737. $.messager.alert('Error',ret.errorMsg, 'error');
  738. }
  739. });
  740. }
  741. //播放音乐声音
  742. function playmp3(){
  743. var audio = document.getElementById("myaudio");
  744. audio.setAttribute('src', '/1262.mp3');
  745. audio.play();
  746. setTimeout(function(){
  747. audio.pause();
  748. },10000);
  749. }
  750. // 打开并初始化“打印半成品工单”弹窗
  751. function printSfOrderModal(){
  752. $('#print_sf_order').dialog('center').dialog('setTitle', '打印半成品工单').dialog('open');
  753. // 清空并预填当前生产订单,便于直接打印
  754. $('#sf_order').textbox('setValue', "");
  755. $('#sf_order').textbox('textbox').focus();
  756. }
  757. // 执行打印半成品工单标签
  758. function printSfOrderLabel(){
  759. var sfOrder = $('#sf_order').val();
  760. if(!sfOrder || "" == sfOrder){
  761. $.messager.alert('Error','请输入半成品工单','error');
  762. return;
  763. }
  764. $.messager.confirm('Confirm',' <b>'+sfOrder+'</b> 是否打印 ?',function(r){
  765. if(r){
  766. // 使用半成品工单打印端点(后端会自动添加 SF; 前缀)
  767. $("#ifmforprint").attr('src', "/print/sfOrder?sfOrder=" + sfOrder);
  768. //直接调用js打印标签
  769. //printSfOrderLabel(sfOrder, currentPrinter);
  770. $('#sf_order').textbox('setValue', "");
  771. }
  772. });
  773. }
  774. </script>
  775. </div> <!-- /container -->
  776. <audio id="myaudio" controls="controls" autostart="false" loop="false" hidden="true" ></audio>
  777. <iframe id="ifmforprint" name="forprint" style="display: none;"></iframe>
  778. <script src="/js/holder.min.js"></script>
  779. <script src="/js/bootstrap.js"></script>
  780. <script src="/js/WdatePicker.js"></script>
  781. <script src="/js/app.js?v=1"></script>
  782. <form id="frmLogout" action="/logout" method="post">
  783. </form>
  784. </body>
  785. </html>
  786. </#macro>