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.

549 lines
24 KiB

3 days ago
  1. <#import "../master.ftl" as master>
  2. <@master.layout>
  3. <style>
  4. #fm label {
  5. width: 150px;
  6. }
  7. .page-header {
  8. margin: 20px 0 -10px;
  9. }
  10. .customer-label .textbox-label{
  11. width: 35%;
  12. margin-left: 12%;
  13. }
  14. .customer-label .easyui-fluid{
  15. width: 75% !important;
  16. margin-left: 12%;
  17. }
  18. .panel-header{
  19. width: 870px;
  20. }
  21. .panel{
  22. width: 882px;
  23. }
  24. .input-div {
  25. width: 100%;
  26. }
  27. </style>
  28. <div class="page-header">
  29. <h3>Part Info</h3>
  30. </div>
  31. <!-- 页面表单 -->
  32. <table id="dg" class="easyui-datagrid" style="width:100%; height:400px;display: none;"
  33. data-options="pagination: true, pageSize: 20, singleSelect:true, showFooter: true,
  34. onSelect:onTableRowSelect, url:'/basic/part/getPartList', method:'POST',
  35. toolbar:'#tb'">
  36. <thead>
  37. <tr>
  38. <th data-options="field:'partNo',width:120,editor:'textbox'">Part No</th>
  39. <th data-options="field:'partDesc',width:150">Part Description</th>
  40. <th data-options="field:'customerPartNo',width:120">Customer Part No</th>
  41. <th data-options="field:'customerPartDesc',width:150">客户料号描述</th>
  42. <th data-options="field:'revNo',width:60">物料版本</th>
  43. <th data-options="field:'customerDrawing',width:120">customer drawing</th>
  44. <th data-options="field:'eeeeCode',width:80">EEEEcode</th>
  45. <th data-options="field:'apn',width:100">APN</th>
  46. <th data-options="field:'spec',width:100">SPEC</th>
  47. <th data-options="field:'stage',width:80">stage</th>
  48. <th data-options="field:'config',width:80">config</th>
  49. <th data-options="field:'cross',width:60">码包排位</th>
  50. <th data-options="field:'primaryMaterialNo',width:120">主材料号</th>
  51. <th data-options="field:'packageQty',width:70,align:'right'">标准包数量</th>
  52. <th data-options="field:'boxQty',width:70,align:'right'">标准箱数量</th>
  53. <th data-options="field:'projectCode',width:120">project code</th>
  54. <th data-options="field:'labelType',width:60">标签类型</th>
  55. <th data-options="field:'codeType',width:60">码包类型</th>
  56. <th data-options="field:'productStyle',width:60">款式</th>
  57. <th data-options="field:'bu',width:60">bu</th>
  58. <th data-options="field:'checkProductDateFlag',width:120">允许不同生产日期装箱</th>
  59. <th data-options="field:'serialApn',width:70">serialApn</th>
  60. <th data-options="field:'createBy',width:80">Created By</th>
  61. <th data-options="field:'createDate',width:125,align:'left',formatter:formatDateTime">Created Time</th>
  62. <th data-options="field:'updateBy',width:80">Updated By</th>
  63. <th data-options="field:'updateDate',width:125,align:'left',formatter:formatDateTime">修改日期</th>
  64. </tr>
  65. </thead>
  66. </table>
  67. <!-- 页面的查询框 -->
  68. <div id="tb" style="padding:10px 5px;display: none;">
  69. <div>
  70. 料号: <input class="easyui-textbox" id="searchPartNo" style="width:110px">
  71. 创建日期: <input class="easyui-datebox" id="createdDateFrom" style="width:100px">
  72. 至: <input class="easyui-datebox" id="createdDateTo" style="width:100px">
  73. <a href="#nowhere" id="queryLink" class="easyui-linkbutton" iconCls="icon-search">Query</a>
  74. &nbsp;&nbsp;&nbsp;
  75. <a href="javascript:void(0)" id="tbAdd" class="easyui-linkbutton" iconCls="icon-add" onclick="newProductPartModal()">New</a>
  76. <a href="javascript:void(0)" id="tbEdit" data-options="disabled:true" class="easyui-linkbutton" iconCls="icon-edit" onclick="editProductPartModal()">Edit</a>
  77. <a href="javascript:void(0)" id="tbMaterial" data-options="disabled:true" class="easyui-linkbutton" iconCls="icon-edit" onclick="editPartMaterialModal()">材料跟踪维护</a>
  78. <a href="javascript:void(0)" id="tbDel" data-options="disabled:true" class="easyui-linkbutton" onclick="deletePart()">Delete</a>
  79. </div>
  80. </div>
  81. <!-- 新增和修改的modal -->
  82. <div id="dlg" class="easyui-dialog" style="width:870px; display: none;"
  83. closed="true" buttons="#dlg-buttons">
  84. <form id="fm" method="post" novalidate style="margin:0;padding:20px 20px; height: 425px;">
  85. <div style="margin-bottom:8px; display: none;" >
  86. <input id="addId" name="addId" class="easyui-textbox" style="display: none;" value="0">
  87. <input id="createBy" name="createBy" class="easyui-textbox" style="display: none;" value="">
  88. <input id="updateBy" name="updateBy" class="easyui-textbox" style="display: none;" value="">
  89. </div>
  90. <div style="width: 400px;">
  91. <div class="input-div" style="margin-bottom:8px">
  92. <input id="partNo" name="partNo" class="easyui-textbox" required="true" label="物料编码:" style="width:98%">
  93. </div>
  94. <div class="input-div" style="margin-bottom:8px">
  95. <input id="partDesc" name="partDesc" class="easyui-textbox" required="true" label="物料描述:" style="width:98%">
  96. </div>
  97. <div class="input-div" style="margin-bottom:8px">
  98. <input id="customerPartNo" name="customerPartNo" class="easyui-textbox" required="true" label="客户料号:" style="width:98%">
  99. </div>
  100. <div class="input-div" style="margin-bottom:8px">
  101. <input id="customerPartDesc" name="customerPartDesc" class="easyui-textbox" required="true" label="客户料号描述:" style="width:98%">
  102. </div>
  103. <div class="input-div" style="margin-bottom:8px">
  104. <input id="revNo" name="revNo" class="easyui-textbox" required="true" label="物料版本:" style="width:98%">
  105. </div>
  106. <div class="input-div" style="margin-bottom:8px">
  107. <input id="customerDrawing" name="customerDrawing" class="easyui-textbox" required="true" label="customer drawing:" style="width:98%">
  108. </div>
  109. <div class="input-div" style="margin-bottom:8px">
  110. <input id="apn" name="apn" class="easyui-textbox" required="true" label="APN:" style="width:98%">
  111. </div>
  112. <div class="input-div" style="margin-bottom:8px">
  113. <input id="eeeeCode" name="eeeeCode" class="easyui-textbox" required="true" label="EEEEcode:" style="width:98%" data-options="buttonText: 'getCode',onClickButton:getCode">
  114. </div>
  115. <div class="input-div" style="margin-bottom:8px">
  116. <input id="spec" name="spec" class="easyui-textbox" required="true" label="SPEC:" style="width:98%">
  117. </div>
  118. <div class="input-div" style="margin-bottom:8px">
  119. <input id="bu" name="bu" class="easyui-textbox" label="bu:" style="width:98%">
  120. </div>
  121. <div class="input-div" style="margin-bottom:8px">
  122. <select id="code_type" class="easyui-combobox" name="codeType" required="true" label="码包类型:" style="width:98%">
  123. <option value="2024" selected>2024</option>
  124. <option value="2025">2025</option>
  125. </select>
  126. </div>
  127. <div class="input-div" style="margin-bottom:8px">
  128. <input id=product_style" name="productStyle" class="easyui-textbox" required="true" label="款式:" style="width:98%">
  129. </div>
  130. </div>
  131. <div style=" margin-left: 430px;width: 400px; margin-top: -408px;">
  132. <div class="input-div" style="margin-bottom:8px">
  133. <input id="stage" name="stage" class="easyui-textbox" required="true" label="stage:" style="width:98%">
  134. </div>
  135. <div class="input-div" style="margin-bottom:8px">
  136. <input id="packageQty" name="packageQty" class="easyui-textbox" type="number" required="true" label="标准包数量:" style="width:98%">
  137. </div>
  138. <div class="input-div" style="margin-bottom:8px">
  139. <input id="boxQty" name="boxQty" class="easyui-textbox" type="number" required="true" label="标准箱数量:" style="width:98%">
  140. </div>
  141. <div class="input-div" style="margin-bottom:8px">
  142. <input id="projectCode" name="projectCode" class="easyui-textbox" required="true" label="project code:" style="width:98%">
  143. </div>
  144. <div class="input-div" style="margin-bottom:8px">
  145. <input id="config" name="config" class="easyui-textbox" required="true" label="config:" style="width:98%">
  146. </div>
  147. <div class="input-div" style="margin-bottom:8px">
  148. <input id="primaryMaterialNo" name="primaryMaterialNo" class="easyui-textbox" required="true" label="主材料号:" style="width:98%">
  149. </div>
  150. <div class="input-div" style="margin-bottom:8px">
  151. <select id="cross" name="cross" required="true" class="easyui-combobox" label="码包排位:" style="width:98%">
  152. </select>
  153. </div>
  154. <div class="input-div" style="margin-bottom:8px">
  155. <select id="column_type" name="columnType" required="true" class="easyui-combobox" label="分切排位:" style="width:98%">
  156. </select>
  157. </div>
  158. <div class="input-div" style="margin-bottom:8px">
  159. <select id="labelType" class="easyui-combobox" name="labelType" required="true" label="标签类型:" style="width:98%">
  160. <option value="A">A</option>
  161. <option value="B">B</option>
  162. <option value="C">C</option>
  163. <option value="D">D</option>
  164. </select>
  165. </div>
  166. <div style="margin-bottom:8px">
  167. <select id="checkProductDateFlag" class="easyui-combobox" name="checkProductDateFlag" required="true" label="允许不同生产日期装箱:" style="width:98%">
  168. <option value="Y">Y</option>
  169. <option value="N">N</option>
  170. </select>
  171. </div>
  172. <div style="margin-bottom:8px">
  173. <input id="serialApn" name="serialApn" class="easyui-textbox" label="serialApn:" style="width:98%">
  174. </div>
  175. </div>
  176. </form>
  177. </div>
  178. <div id="dlg-buttons" style="display: none; text-align: center;width: 870px;">
  179. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="saveProductPart()" style="width:90px">Save</a>
  180. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg').dialog('close')" style="width:90px">取消</a>
  181. </div>
  182. <!-- 材料跟踪的modal -->
  183. <div id="material_dlg" class="easyui-dialog" style="width: 420px; display: none;"
  184. closed="true" buttons="#material_dlg-buttons">
  185. <form id="material_fm" method="post" class="customer-label" novalidate style="margin:0; height: 265px;">
  186. <div style="">
  187. <div class="input-div" style="margin-bottom:10px">
  188. <input id="show_part_no" name="partNo" class="easyui-textbox" required="true" label="物料编码:" style="width:100%">
  189. </div>
  190. <div class="input-div" style="margin-bottom:10px">
  191. <input id="show_part_desc" name="partDesc" class="easyui-textbox" required="true" label="物料描述:" style="width:100%">
  192. </div>
  193. <div class="input-div" style="margin-bottom:10px">
  194. <input id="indigo_materials" name="indigoMaterials" class="easyui-textbox" label="Indigo Materials:" style="width:100%">
  195. </div>
  196. <div class="input-div" style="margin-bottom:10px">
  197. <input id="abg_materials" name="abgMaterials" class="easyui-textbox" label="ABG Materials:" style="width:75%">
  198. </div>
  199. </div>
  200. </form>
  201. </div>
  202. <div id="material_dlg-buttons" style="display: none; text-align: center;width: 870px;">
  203. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="savePartMaterials()" style="width:90px">Save</a>
  204. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#material_dlg').dialog('close')" style="width:90px">取消</a>
  205. </div>
  206. <script>
  207. //临时参数
  208. var currentRow;//当前行
  209. //控制页面的高度
  210. $(window).resize(function () {
  211. $("#dg").datagrid({"height": $(window).height() - $(".datagrid").offset().top - 30});
  212. });
  213. //初始化页面的高度
  214. $(function () {
  215. $(window).resize();
  216. //加载数据
  217. initColumnQty();
  218. initColumnType(null);
  219. });
  220. //加载排位数量
  221. function initColumnQty(){
  222. $.ajax({
  223. url: "/base/getPartColumnQtyList",
  224. type:"POST",
  225. data:{},// 你的formid
  226. dataType:"JSON",
  227. success: function (data) {
  228. let currentColumnQtyRows = [];
  229. let tempRows = data.rows;
  230. //初始化
  231. for(var i = 0; i< tempRows.length; i++){
  232. currentColumnQtyRows.push({value:tempRows[i], text:tempRows[i]});
  233. }
  234. $("#cross").combobox('loadData', currentColumnQtyRows);
  235. }
  236. })
  237. }
  238. //添加change事件
  239. $("#cross").combobox({
  240. onChange: function(newValue, oldValue){
  241. //let text = $("#cross").combobox('getText');
  242. initColumnType(newValue);
  243. //清空已经选择的选项
  244. $("#column_type").textbox('setValue', '');
  245. }
  246. })
  247. //获取eeeeCode
  248. function getCode(){
  249. var apn = $("#apn").textbox('getValue');
  250. if (apn && apn != ''){
  251. let currentEEEECode = apn.substring(1, 9).replace('-', '')
  252. $("#eeeeCode").textbox('setValue', currentEEEECode);
  253. }
  254. }
  255. //加载排位数量
  256. function initColumnType(columnQty){
  257. var searchData = {'columnQty': columnQty};
  258. $.ajax({
  259. url: "/base/getPartColumnTypeList",
  260. type:"POST",
  261. contentType: "application/json",
  262. data: JSON.stringify(searchData),// 你的formid
  263. dataType:"JSON",
  264. success: function (data) {
  265. let currentColumnTypeRows = [];
  266. let tempRows = data.rows;
  267. //初始化
  268. for(var i = 0; i< tempRows.length; i++){
  269. currentColumnTypeRows.push({value:tempRows[i].columnType, text:tempRows[i].columnType});
  270. }
  271. $("#column_type").combobox('loadData', currentColumnTypeRows);
  272. }
  273. })
  274. }
  275. //查询功能
  276. $("#queryLink").click(function(){
  277. var dg = $('#dg').datagrid({
  278. queryParams: {
  279. partNo: $("#searchPartNo").val(),
  280. createdDateFrom: $("#createdDateFrom").val(),
  281. createdDateTo: $("#createdDateTo").val(),
  282. }
  283. });
  284. });
  285. //处理菜单的功能
  286. function onTableRowSelect(index, row) {
  287. let noRowSelect = !!!row;
  288. let status = row.status;
  289. $("#tbEdit").linkbutton({"disabled": noRowSelect});
  290. $("#tbDel").linkbutton({"disabled": noRowSelect});
  291. $("#tbMaterial").linkbutton({"disabled": noRowSelect});//新增材料跟踪维护
  292. }
  293. var url;
  294. function newProductPartModal(){
  295. $('#dlg').dialog('open').dialog('center').dialog('setTitle','新增物料');
  296. $('#fm').form('clear');
  297. url = '/basic/part/insertPart';
  298. $('#addId').textbox("setValue", 0);
  299. $('#createBy').textbox("setValue", username);
  300. $('#partNo').textbox('textbox').removeAttr('readonly');
  301. //设置默认值
  302. $('#code_type').combobox('setValue', '2024');
  303. }
  304. //保存工单的信息
  305. function saveProductPart(){
  306. //判断标准中包参数是否符合要求
  307. let partNo = $("#partNo").textbox('getValue');
  308. //判断是否是正数
  309. if(null == partNo || '' == partNo){
  310. $.messager.alert('error', '请维护物料编码!', 'error');
  311. return false;
  312. }
  313. let partDesc = $.trim($("#partDesc").textbox('getValue'));
  314. if(null == partDesc || '' == partDesc){
  315. $.messager.alert('error', '请维护物料描述!', 'error');
  316. return false;
  317. }
  318. let customerPartNo = $.trim($("#customerPartNo").textbox('getValue'));
  319. if(null == customerPartNo || '' == customerPartNo){
  320. $.messager.alert('error', '请维护客户料号!', 'error');
  321. return false;
  322. }
  323. let customerPartDesc = $.trim($("#customerPartDesc").textbox('getValue'));
  324. if(null == customerPartDesc || '' == customerPartDesc){
  325. $.messager.alert('error', '请维护客户料号描述!', 'error');
  326. return false;
  327. }
  328. let revNo = $.trim($("#revNo").textbox('getValue'));
  329. if(null == revNo || '' == revNo){
  330. $.messager.alert('error', '请维护物料版本!', 'error');
  331. return false;
  332. }
  333. let customerDrawing = $.trim($("#customerDrawing").textbox('getValue'));
  334. if(null == customerDrawing || '' == customerDrawing){
  335. $.messager.alert('error', '请维护customer drawing!', 'error');
  336. return false;
  337. }
  338. let eeeeCode = $.trim($("#eeeeCode").textbox('getValue'));
  339. if(null == eeeeCode || '' == eeeeCode){
  340. $.messager.alert('error', '请维护EEEEcode!', 'error');
  341. return false;
  342. }
  343. let apn = $.trim($("#apn").textbox('getValue'));
  344. if(null == apn || '' == apn){
  345. $.messager.alert('error', '请维护APN!', 'error');
  346. return false;
  347. }
  348. let spec = $.trim($("#spec").textbox('getValue'));
  349. if(null == spec || '' == spec){
  350. $.messager.alert('error', '请维护SPEC!', 'error');
  351. return false;
  352. }
  353. let stage = $.trim($("#stage").textbox('getValue'));
  354. if(null == stage || '' == stage){
  355. $.messager.alert('error', '请维护stage!', 'error');
  356. return false;
  357. }
  358. let packageQty = $.trim($("#packageQty").textbox('getValue'));
  359. if(null == packageQty || '' == packageQty){
  360. $.messager.alert('error', '请维护标准包数量!', 'error');
  361. return false;
  362. }
  363. let boxQty = $.trim($("#boxQty").textbox('getValue'));
  364. if(null == boxQty || '' == boxQty){
  365. $.messager.alert('error', '请维护标准箱数量!', 'error');
  366. return false;
  367. }
  368. let projectCode = $.trim($("#projectCode").textbox('getValue'));
  369. if(null == projectCode || '' == projectCode){
  370. $.messager.alert('error', '请维护project code!', 'error');
  371. return false;
  372. }
  373. let config = $.trim($("#config").textbox('getValue'));
  374. if(null == config || '' == config){
  375. $.messager.alert('error', '请维护config', 'error');
  376. return false;
  377. }
  378. let primaryMaterialNo = $.trim($("#primaryMaterialNo").textbox('getValue'));
  379. if(null == primaryMaterialNo || '' == primaryMaterialNo){
  380. $.messager.alert('error', '请维护主材料号', 'error');
  381. return false;
  382. }
  383. /* let cross = $.trim($("#cross").textbox('getValue'));
  384. if(null == cross || '' == cross){
  385. $.messager.alert('error', '请维护码包排位', 'error');
  386. return false;
  387. }
  388. let columnType = $.trim($("#column_type").textbox('getValue'));
  389. if(null == columnType || '' == columnType){
  390. $.messager.alert('error', '请维护分切排位', 'error');
  391. return false;
  392. } */
  393. let labelType = $.trim($("#labelType").textbox('getValue'));
  394. if(null == labelType || '' == labelType){
  395. $.messager.alert('error', '请维护标签类型', 'error');
  396. return false;
  397. }
  398. let checkProductDateFlag = $.trim($("#checkProductDateFlag").textbox('getValue'));
  399. if(null == checkProductDateFlag || '' == checkProductDateFlag){
  400. $.messager.alert('error', '请维护是否允许不同生产日期装箱', 'error');
  401. return false;
  402. }
  403. let codeType = $.trim($("#code_type").textbox('getValue'));
  404. if(null == codeType || '' == codeType){
  405. $.messager.alert('error', '请维护码包类型!', 'error');
  406. return false;
  407. }
  408. let serialApn = $.trim($("#serialApn").textbox('getValue'));
  409. //码包类型是2024时,必须填写serialApn
  410. if(codeType === '2024' && (null == serialApn || '' == serialApn)){
  411. $.messager.alert('error', '请维护serialApn', 'error');
  412. return false;
  413. }
  414. //判断是否存在内容
  415. $('#fm').form('submit', {
  416. url: url,
  417. success: function(result){
  418. var result = eval("("+result+")");
  419. if (result.success){
  420. $('#dlg').dialog('close'); // close the dialog
  421. $('#dg').datagrid('reload');
  422. } else {
  423. $.messager.alert('error',result.msg, 'error');
  424. }
  425. }
  426. });
  427. }
  428. //编辑输入框
  429. function editProductPartModal(){
  430. var row = $('#dg').datagrid('getSelected');
  431. if (row){
  432. $('#dlg').dialog('open').dialog('center').dialog('setTitle','修改物料');
  433. $('#fm').form('load', row);
  434. url = '/basic/part/insertPart';
  435. $('#addId').textbox("setValue", 1);
  436. $('#updateBy').textbox("setValue", username);
  437. $('#partNo').textbox('textbox').attr('readonly','readonly');
  438. }else{
  439. $.messager.alert('Warning','请选择一行!', 'warning');
  440. }
  441. }
  442. //编辑材料跟踪的信息
  443. function editPartMaterialModal(){
  444. var row = $('#dg').datagrid('getSelected');
  445. if (row){
  446. $('#material_dlg').dialog('open').dialog('center').dialog('setTitle','修改材料跟踪');
  447. $('#material_fm').form('load', row);
  448. url = '/basic/part/updatePartMaterials';
  449. $('#show_part_no').textbox('textbox').attr('readonly','readonly');
  450. $('#show_part_desc').textbox('textbox').attr('readonly','readonly');
  451. }else{
  452. $.messager.alert('Warning','请选择一行!', 'warning');
  453. }
  454. }
  455. //保存材料和排位的信息
  456. function savePartMaterials(){
  457. let indigoMaterials = $.trim($("#indigo_materials").textbox('getValue'));
  458. /* if(null == indigoMaterials || '' == indigoMaterials){
  459. $.messager.alert('error', '请维护材料料号!', 'error');
  460. return false;
  461. } */
  462. let abgMaterials = $.trim($("#abg_materials").textbox('getValue'));
  463. /* if(null == abgMaterials || '' == abgMaterials){
  464. $.messager.alert('error', '请维护材料料号!', 'error');
  465. return false;
  466. } */
  467. //判断是否存在内容
  468. $('#material_fm').form('submit', {
  469. url: url,
  470. success: function(result){
  471. var result = eval("("+result+")");
  472. if (result.success){
  473. $('#material_dlg').dialog('close'); // close the dialog
  474. $('#dg').datagrid('reload');
  475. } else {
  476. $.messager.alert('error',result.msg, 'error');
  477. }
  478. }
  479. });
  480. }
  481. function deletePart() {
  482. $.messager.confirm('Confirm', 'Are you sure to delete the data?', function (r) {
  483. if (r) {
  484. // $.post('/base/deleteMachineData', {id: id}, function (result) {
  485. // if (result.success) {
  486. // $('#dg').datagrid('reload');
  487. // $.messager.alert('Success', 'Successfully', 'info');
  488. // } else {
  489. // $.messager.alert('Error', result.errorMsg, 'error');
  490. // }
  491. // }, 'json');
  492. deletePartDoing();
  493. }
  494. });
  495. }
  496. function deletePartDoing(){
  497. var row = $('#dg').datagrid('getSelected');
  498. if (row){
  499. $('#fm').form('load', row);
  500. //判断是否存在内容
  501. $('#fm').form('submit', {
  502. url: '/basic/part/deletePart',
  503. success: function(result){
  504. var result = eval("("+result+")");
  505. if (result.success){
  506. $('#dlg').dialog('close'); // close the dialog
  507. $('#dg').datagrid('reload');
  508. } else {
  509. $.messager.alert('error',result.msg, 'error');
  510. }
  511. }
  512. });
  513. }else{
  514. $.messager.alert('Warning','请选择一行!', 'warning');
  515. }
  516. }
  517. </script>
  518. </@master.layout>