add_batch.ftl 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="renderer" content="webkit|ie-comp|ie-stand">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  7. <meta name="viewport"
  8. content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
  9. <meta http-equiv="Cache-Control" content="no-siteapp"/>
  10. <#include "/base/add_base.ftl">
  11. <link href="${path}/common/lib/jquery.ui/jquery-ui.css" rel="stylesheet" type="text/css"/>
  12. <style>
  13. .add-list>li{margin: 10px 0;}
  14. input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/rst/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
  15. input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(/rst/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
  16. </style>
  17. <title>添加批次 - 批次管理 - RST</title>
  18. </head>
  19. <body>
  20. <nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
  21. <span class="c-gray en">&gt;</span> 批次管理
  22. <span class="c-gray en">&gt;</span> 添加批次
  23. <a class="btn radius r"
  24. style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;border:1px solid #32a3d8;"
  25. href="javascript:location.replace(location.href);" title="刷新"><i class="Hui-iconfont">&#xe68f;</i></a>
  26. </nav>
  27. <article class="page-container" style="padding: 10px;width: 600px;margin: 0 auto;">
  28. <form action="${path}/admin/batch/save_batch" method="post" class="form form-horizontal" id="form-batch-add">
  29. <div class="row cl">
  30. <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>所属产品:</label>
  31. <div class="formControls col-xs-8 col-sm-9"> <span class="select-box">
  32. <select class="select" size="1" name="produceId">
  33. <#if produceList?? && (produceList?size > 0) >
  34. <#list produceList as produce>
  35. <option value="${produce.produceId}" >${produce.produceName}</option>
  36. </#list>
  37. <#else>
  38. <option value="">暂时没有产品,需要到生产产品页面添加产品</option>
  39. </#if>
  40. </select>
  41. </span>
  42. </div>
  43. </div>
  44. <div class="row cl">
  45. <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>批次编号:</label>
  46. <div class="formControls col-xs-8 col-sm-9">
  47. <input type="text" class="input-text" value="" id="batchNo" name="batchNo" placeholder="请输入1-20位的批次编号,支持字母、数字" datatype="/^[a-zA-Z0-9]{1,20}$/" errormsg="请输入1-20位的批次编号,支持字母、数字!">
  48. </div>
  49. </div>
  50. <div class="row cl">
  51. <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>批次数量:</label>
  52. <div class="formControls col-xs-8 col-sm-9 components">
  53. <input type="hidden" id="batchColorQuantity" name="batchColorQuantity">
  54. <table class="table table-border table-bordered table-bg table-hover table-sort">
  55. <thead>
  56. <tr class="text-c">
  57. <th width="150">选择颜色</th>
  58. <th width="60">批次数量</th>
  59. <th width="20">操作</th>
  60. </tr>
  61. </thead>
  62. <tbody id="batchColorAll">
  63. </tbody>
  64. </table>
  65. </div>
  66. </div>
  67. <div class="row cl">
  68. <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
  69. <input class="btn btn-primary radius" type="button" value="&nbsp;&nbsp;新增颜色&nbsp;&nbsp;" onclick="addBatchColor('','')">
  70. </div>
  71. </div>
  72. <div class="row cl">
  73. <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>批次总数量:</label>
  74. <div class="formControls col-xs-8 col-sm-9">
  75. <input type="text" class="input-text" value="" name="batchQuantity" disabled="disabled" style="background: #eee;" placeholder="该批次的总数量" datatype="n1-6" errormsg="批次数量只能输入数字且不能超过999999!">
  76. <input type="hidden" class="input-text" value="" name="batchQuantity" >
  77. </div>
  78. </div>
  79. <div class="row cl">
  80. <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>软件版本:</label>
  81. <div class="formControls col-xs-8 col-sm-9">
  82. <span class="select-box">
  83. <select class="select" size="1" name="batchSoftwareVersionId" id="batchSoftwareVersionId" datatype="*" errormsg="请选择软件版本">
  84. </select>
  85. </span>
  86. <span id="batchSoftwareVersionIdMsg" style="color: red;"></span>
  87. </div>
  88. </div>
  89. <div class="row cl">
  90. <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>Bom单:</label>
  91. <div class="formControls col-xs-8 col-sm-9">
  92. <span class="select-box" >
  93. <select class="select" size="1" name="bomId" id="bomId" datatype="*" errormsg="请选择Bom单">
  94. </select>
  95. </span>
  96. <span id="bomIdMsg" style="color: red;"></span>
  97. </div>
  98. </div>
  99. <div class="row cl">
  100. <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>批次状态:</label>
  101. <div class="formControls col-xs-8 col-sm-9">
  102. <div class="radio-box">
  103. <input type="radio" id="batchStatus-1" name="batchStatus" checked value="1">
  104. <label for="batchStatus-1">立即使用</label>
  105. </div>
  106. <div class="radio-box">
  107. <input type="radio" id="batchStatus-2" name="batchStatus" value="0">
  108. <label for="batchStatus-2">暂不使用</label>
  109. </div>
  110. </div>
  111. </div>
  112. <div class="row cl">
  113. <label class="form-label col-xs-4 col-sm-3">批次描述:</label>
  114. <div class="formControls col-xs-8 col-sm-9">
  115. <textarea name="batchDesc" id="batchDesc" cols="" rows="" class="textarea"
  116. placeholder="批次描述,最多支持100字符" onKeyUp="$.Huitextarealength(this,100)" ></textarea>
  117. <p class="textarea-numberbar"><em class="textarea-length">0</em>/100</p>
  118. </div>
  119. </div>
  120. <div class="row cl">
  121. <label class="form-label col-xs-4 col-sm-3"></label>
  122. <span class="c-red">*提示</span><span>:如果设置状态为 使用,将停止使用同一个产品的其他批次!</span>
  123. </div>
  124. <div class="row cl">
  125. <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
  126. <input class="btn btn-primary radius" type="submit" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">
  127. </div>
  128. </div>
  129. </form>
  130. </article>
  131. <script type="text/javascript">
  132. /*颜色枚举值*/
  133. var colorAll = ['黑色','白色',"金色",'红色','蓝色','绿色','橙色','黄色','青色','紫色'];
  134. /*修改批次时,获取之前的批次编号,添加页面为空*/
  135. var upBatchNo = null;
  136. $(function(){
  137. $("#form-batch-add").Validform({
  138. tiptype: function (msg, o, cssctl) {
  139. if (o.type == 3) {//失败
  140. layer.msg(msg, {icon: 5, time: 3000});
  141. $(window).scrollTop(o.obj.offset().top - 40);
  142. }
  143. },
  144. datatype: {//自定义验证类型
  145. },
  146. ignoreHidden: true,
  147. tipSweep: true, //若为true,则只在表单提交时验证
  148. ajaxPost: true, //异步提交
  149. beforeCheck: function (curform) { //验证通过之前执行的函数
  150. },
  151. beforeSubmit: function (curform) { //验证通过之后执行的函数
  152. //批次编号不能重复 -- 重复为false 不重复(可用)为true
  153. var batchNo = $("#batchNo").val();
  154. if(upBatchNo == null || typeof(upBatchNo) == "undefined"){
  155. if(!isValiBatchNo(batchNo)){
  156. layer.msg("批次编号重复", {icon: 5, time: 3000});
  157. return false;
  158. }
  159. }
  160. //计算批次数量
  161. calculationQuantity();
  162. //合并 批次颜色信息
  163. var colorList = new Array();
  164. $("#batchColorAll").find("tr").each(function(){
  165. var ptsBatchColor = {};
  166. ptsBatchColor.colorName = $(this).find("[name='colorName']").eq(0).val();
  167. ptsBatchColor.colorQuantity = $(this).find("[name='colorQuantity']").eq(0).val();
  168. colorList.push(ptsBatchColor);
  169. })
  170. $("#batchColorQuantity").val(JSON.stringify(colorList));
  171. },
  172. callback: function (data) {//异步回调函数
  173. if (data) {
  174. var index = layer.alert(data.resultMsg, function () {
  175. if (data.resultCode == 200) {
  176. location.href = "${path}/admin/batch/_batch_list";
  177. } else {
  178. layer.close(index);
  179. }
  180. });
  181. }
  182. }
  183. });
  184. })
  185. $(function () {
  186. /*添加页面初始化,将根据产品的来获取bom和软件版本*/
  187. var produceId = $("[name='produceId']").val();
  188. getBomByProduce(produceId);
  189. getVersionByProduce(produceId);
  190. /*初始化一个颜色*/
  191. addBatchColor('','');
  192. /*监听产品选择*/
  193. $("[name='produceId']").change(function(){
  194. var produceId = $(this).val();
  195. getBomByProduce(produceId);
  196. getVersionByProduce(produceId);
  197. })
  198. })
  199. /*判断batch是否重复 重复为false 不重复(可用)为true */
  200. function isValiBatchNo(batchNo) {
  201. var boolean = false;
  202. $.ajax({
  203. type: "POST",
  204. data: {
  205. batchNo : batchNo
  206. },
  207. url: "${path}/admin/batch/is_valiBatchNo",
  208. async: false,
  209. success: function(data){
  210. if (data.returnCode == 200 ) {
  211. if(data.returnMsg.ptsBatch == null ){
  212. boolean = true
  213. }
  214. }else{
  215. layer.msg(data.resultMsg, {icon: 5, time: 3000});
  216. }
  217. },
  218. error: function(XmlHttpRequest, textStatus, errorThrown){
  219. }
  220. });
  221. return boolean;
  222. }
  223. /*根据产品id,获取bom集合*/
  224. function getBomByProduce(produceId){
  225. $.ajax({
  226. type: "POST",
  227. data: {
  228. produceId : produceId
  229. },
  230. url: "${path}/admin/bom/get_listBom",
  231. async: false,
  232. success: function(data){
  233. var html = '';
  234. if (data.returnCode == 200) {
  235. var bomList = data.returnMsg.ptsBomsList;
  236. for(var i=0;i<bomList.length;i++){
  237. html += '<option value="'+ bomList[i].bomId +'">'+ bomList[i].bomName +'</option>';
  238. }
  239. }
  240. if(data.returnCode != 200 || data.returnMsg.ptsBomsList <1){
  241. $("#bomIdMsg").html("系统没有对应产品的Bom单,请到Bom单管理中添加Bom单");
  242. }else{
  243. $("#bomIdMsg").html("");
  244. }
  245. $("[name='bomId']").html(html);
  246. },
  247. error: function(XmlHttpRequest, textStatus, errorThrown){
  248. }
  249. });
  250. }
  251. /*根据产品获取软件版本*/
  252. function getVersionByProduce(produceId) {
  253. $.ajax({
  254. type: "POST",
  255. data: {
  256. produceId : produceId
  257. },
  258. url: "${path}/admin/batch/get_version",
  259. async: false,
  260. success: function(data){
  261. var html = '';
  262. if (data.returnCode == 200) {
  263. var versionList = data.returnMsg.ptsMachineVersionList;
  264. for(var i=0;i<versionList.length;i++){
  265. html += '<option value="'+ versionList[i].machineVersionId +'">'+ versionList[i].machineVersionName +'('+ versionList[i].machineVersionNo +')</option>';
  266. }
  267. }
  268. if(data.returnCode != 200 || data.returnMsg.ptsMachineVersionList <1){
  269. $("#batchSoftwareVersionIdMsg").html("系统没有对应产品的软件版本,请到版本管理中添加软件版本");
  270. }else{
  271. $("#batchSoftwareVersionIdMsg").html("");
  272. }
  273. $("[name='batchSoftwareVersionId']").html(html);
  274. },
  275. error: function(XmlHttpRequest, textStatus, errorThrown){
  276. }
  277. });
  278. }
  279. /**
  280. * 添加颜色
  281. * colorName
  282. * */
  283. function addBatchColor(colorName,colorQuantity) {
  284. //判断颜色数量
  285. if(getColorNumber() >= 9){
  286. layer.msg("添加的颜色不能超过9个", {icon: 5, time: 3000});
  287. return false;
  288. }
  289. var notAddColor = colorAll
  290. var opHtml = '';
  291. for(var i=0;i<notAddColor.length;i++){
  292. opHtml += '<option value="'+ notAddColor[i] +'" >'+ notAddColor[i] + '</option>'
  293. }
  294. var html = '<tr class="text-c">'
  295. +'<td>'
  296. +'<select class="select" size="1" name="colorName" style="height: 30px;">'
  297. + opHtml
  298. +'</select>'
  299. +'</td>'
  300. +'<td>'
  301. +'<input type="text" class="input-text colorQuantity" value="" onblur="calculationQuantity()" name="colorQuantity" placeholder="数量" datatype="n1-5" errormsg="零件数量只能为数字且不能超过99999!">'
  302. +'</td>'
  303. +'<td>'
  304. +'<a style="" href="javascript:void(0);" title="删除" onclick="delComponent(this,1)"> '
  305. +'<i class="Hui-iconfont">&#xe609;</i>'
  306. +'</a>'
  307. +'</td> '
  308. +'</tr>';
  309. $("#batchColorAll").append(html);
  310. }
  311. /*获取颜色数量*/
  312. function getColorNumber(){
  313. var number = $("#batchColorAll").find("tr").length;
  314. return number;
  315. }
  316. /*删除颜色 type=all时删除所有的颜色,但必须要保留一个颜色 */
  317. function delComponent(node,type) {
  318. if(type == "all"){
  319. $("#batchColorAll").find("tr").each(function () {
  320. $(this).remove();
  321. })
  322. }else{
  323. //删除零件必须保证还有一个颜色
  324. var batchLength = $("#batchColorAll").find("tr").length;
  325. if(batchLength > 1){
  326. $(node).parent().parent().remove();
  327. }else{
  328. layer.msg('必须要有一个颜色', {icon: 5, time: 3000});
  329. }
  330. }
  331. //删除操作需要计算总数量
  332. calculationQuantity();
  333. }
  334. /**计算批次总数量*/
  335. function calculationQuantity(){
  336. var quantity = 0;
  337. $("#batchColorAll").find("[name='colorQuantity']").each(function (){
  338. var colorQuantity = $(this).val();
  339. var myreg = /^[0-9]*$/;
  340. if( colorQuantity != null && colorQuantity != "" && typeof(colorQuantity) != "undefined"){
  341. if(myreg.test(colorQuantity))
  342. {
  343. quantity += parseInt(colorQuantity);
  344. }
  345. }
  346. })
  347. $("[name='batchQuantity']").val(quantity);
  348. }
  349. /*获取未被添加的颜色*/
  350. // function getNotAddColorAll() {
  351. // if($("#batchColorAll").find("tr") != null && $("#batchColorAll").find("tr").length > 0){
  352. // $("#batchColorAll").find("tr").each(function (){
  353. // for(var i=0; i<colorAll.length;i++){
  354. // colorAll.remove(1);
  355. // }
  356. // })
  357. // }else{
  358. // return colorAll;
  359. // }
  360. // }
  361. </script>
  362. <!--/请在上方写此页面业务相关的脚本-->
  363. </body>
  364. </html>