| <!DOCTYPE HTML> | 
| <html xmlns:th="http://www.thymeleaf.org"> | 
| <head> | 
|     <meta charset="utf-8"> | 
|     <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> | 
|     <meta name="renderer" content="webkit|ie-comp|ie-stand"> | 
|     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | 
|     <meta name="viewport" | 
|           content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> | 
|     <meta http-equiv="Cache-Control" content="no-siteapp" /> | 
|     <!-- 本框架基本脚本和样式 --> | 
|     <script type="text/javascript" | 
|             th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> | 
|     <script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script> | 
| </head> | 
| <body> | 
| <div class="ibox-content"> | 
|     <form class="form-horizontal" id="dataform" | 
|           onsubmit="javascripr:return false;"> | 
|   | 
|             <input autocomplete="off"   th:if="${obj ne null }"  type="hidden" name="id" th:value="${obj?.id }"> | 
|             <!-- 添加的时候为待审核 --> | 
|             <input autocomplete="off"   th:if="${obj eq null }" type="hidden" name="appStatus" value="待审核"> | 
|   | 
|         <div class="form-group"> | 
|             <label class="col-offset-1 col-sm-2 control-label">调拨类型<span class="text-danger">*</span></label> | 
|             <div class="col-sm-3"> | 
|                 <select class="form-control autoFull" name="allottedType" id="allottedType"  datatype="*" nullmsg="类型不能为空" data-filed="name" data-value="name" | 
|                         th:data-url="@{/admin/dataDictionary/showDataDictionary}" | 
|                         data-param="{type:'产品用途'}"  th:data-def="${obj?.allottedType}"> | 
|                     <option  value=''>--请选择调拨类型--</option> | 
|                 </select> | 
|                 <div class="Validform_checktip"></div> | 
|             </div> | 
|             <label class="col-sm-2 control-label">调拨时间</label> | 
|             <div class="col-sm-3"> | 
|                 <!-- 新增的时候,日期默认为当前日期 --> | 
|                     <input autocomplete="off"   th:if="${obj eq null}" type="text" class="form-control datetimepicker" name="allottedDate" readonly="readonly" | 
|                            th:value="${#dates.format(new java.util.Date().getTime(), 'yyyy-MM-dd HH:mm:ss')}"  datatype="*" nullmsg="调拨日期不能为空"> | 
|                 <!-- 修改的时候为对象日期值 --> | 
|                     <input autocomplete="off"   th:if="${obj ne null}" type="text" class="form-control datetimepicker" name="allottedDate" readonly="readonly" | 
|                            th:value="${#dates.format(obj?.allottedDate, 'yyyy-MM-dd HH:mm:ss')}"  datatype="*" nullmsg="调拨日期不能为空"  > | 
|                 <div class="Validform_checktip"></div> | 
|             </div> | 
|         </div> | 
|   | 
|         <div class="form-group"> | 
|             <label class="col-sm-2 control-label">制单人</label> | 
|             <div class="col-sm-3"> | 
|                 <div th:if="${obj eq null}"> | 
|                     <input autocomplete="off"   type="text" th:value="${session.userInfo.suName}" class="form-control" readonly="readonly"> | 
|                     <input autocomplete="off"   type="hidden" th:value="${session.userInfo.suId}"  name="makingManId" id="makingManId"> | 
|                 </div> | 
|                     <div th:if="${obj ne null}"> | 
|                     <input autocomplete="off"   type="text" th:value="${obj?.makingManName}" class="form-control datetimepicker"  readonly="readonly"> | 
|                     <input autocomplete="off"   type="hidden" th:value="${obj?.makingManId}"  name="makingManId" id="makingManId"> | 
|                     </div> | 
|                 <div class="Validform_checktip"></div> | 
|             </div> | 
|   | 
|             <label class="col-sm-2 control-label">审核人<span class="text-danger">*</span></label> | 
|             <div class="col-sm-3"> | 
|                 <select class="form-control autoFull" name="appManId" id="appManId" data-filed="suName" | 
|                         th:data-value="suId" | 
|                         th:data-url="@{/admin/getShopStaffByRoleName?roleName=仓储主管}" th:data-def="${obj?.appManId}" datatype="*" nullmsg="审核人不能为空"> | 
|                     <option value=''>--请选择审核人--</option> | 
|                 </select> | 
|                 <div class="Validform_checktip"></div> | 
|             </div> | 
|         </div> | 
|   | 
|         <div class="form-group"> | 
|             <label class="col-sm-2 control-label">调入仓库</label> | 
|             <div class="col-sm-3"> | 
|                 <select class="form-control autoFull" data-filed="name" | 
|                         name="allottedInstoreId" dataType="*" errormsg="请选择入库仓库" | 
|                         th:data-url="@{/admin/warehouse/findShopWarehouse}" th:data-def="${obj?.allottedInstoreId}"> | 
|                 </select> | 
|             </div> | 
|             <label class="col-sm-2 control-label">调出仓库<span class="text-danger">*</span></label> | 
|   | 
|             <div class="col-sm-3"> | 
|                 <div th:if="${obj eq null}"> | 
|   | 
|                     <select class="form-control autoFull" name="allottedOutstoreId" | 
|                             id="allottedOutstoreId" data-filed="name" | 
|                             th:data-url="@{/admin/warehouse/findShopWarehouse}" | 
|                             th:data-def="${obj?.allottedOutstoreId}" datatype="*" | 
|                             nullmsg="调出仓库不能为空"> | 
|                         <option value=''>--请选择调出仓库--</option> | 
|                     </select> | 
|   | 
|                 </div> | 
|   | 
|                 <div th:if="${obj ne null}"> | 
|                     <input autocomplete="off"   th:value="${obj?.allottedOutstoreName}" readonly="readonly" class="form-control"> | 
|                     <input autocomplete="off"    type="hidden" name="allottedOutstoreId" th:value="${obj?.allottedOutstoreId}"> | 
|                 </div> | 
|   | 
|                 <div class="Validform_checktip"></div> | 
|             </div> | 
|   | 
|         </div> | 
|   | 
|         <div class="form-group"> | 
|   | 
|             <label class="col-sm-2 control-label">备注</label> | 
|             <div class="col-sm-3"> | 
|                     <textarea type="text" dataType="*1-500" ignore="ignore" class="form-control" name="allottedRemark" | 
|                               errormsg="备注不能超过500" th:text="${obj?.allottedRemark}" ></textarea> | 
|                 <div class="Validform_checktip"></div> | 
|             </div> | 
|             <label class="col-sm-2 control-label">调拨金额</label> | 
|             <div class="col-sm-3"> | 
|                 <input autocomplete="off"   type="text" readonly="readonly" th:value="${obj?.amountPrice}" | 
|                        class="form-control" id="amountPrice" name="amountPrice"></input> | 
|                 <div class="Validform_checktip"></div> | 
|             </div> | 
|   | 
|         </div> | 
|         <div class="form-group"> | 
|             <label  class="col-sm-2 control-label">调拨明细<span class="text-danger">*</span> </label>  | 
|             <div class="col-sm-3"> | 
|                 <button class="btn btn-success btn-sm"  onclick="openPruductList()" type="button"> 添加明细单</button> | 
|             </div> | 
|         </div> | 
|         <div class="form-group"> | 
|             <div class="col-sm-8 col-md-offset-2"> | 
|                 <table class="table table-striped table-hover table-bordered" id="mgrid" > | 
|                     <thead> | 
|                     <tr> | 
|                         <th>序号</th> | 
|                         <th>产品编号</th> | 
|                         <th>产品名称</th> | 
|                         <th>产品类型</th> | 
|                         <th width="120">调拨单价</th> | 
|                         <th width="120">申请调拨数量</th> | 
|                         <th width="120">调拨金额</th> | 
|                         <th width="120">库存量</th> | 
|                         <th width="120">批次</th> | 
|                         <th>操作</th> | 
|                     </tr> | 
|                     </thead> | 
|                     <tbody id="cpId"> | 
|   | 
|                     </tbody> | 
|   | 
|                 </table> | 
|             </div> | 
|         </div> | 
|         <div class="form-group "> | 
|             <div class="col-sm-12 text-center fixed-button"> | 
|                 <a href="javascript:;" onclick="myForm.submit()" | 
|                    class="btn btn-success radius"><i class="fa fa-check"></i> 保存</a>     | 
|                 <a class="btn btn-danger radius" href="javascript:;" | 
|                    onclick="MTools.closeForm()"><i class="fa fa-close"></i> 关闭</a> | 
|             </div> | 
|         </div> | 
|     </form> | 
| </div> | 
| </body> | 
|   | 
|   | 
| <script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> | 
| <script  th:inline="javascript"> | 
|     var goodsAttr=''; | 
|     var allottedStoreId=''; | 
|     var totalGoods=[]; | 
|     $(".datetimepicker").datetimepicker({ | 
|         format : 'yyyy-mm-dd hh:ii', | 
|         todayBtn : true, | 
|         autoclose : true, | 
|         startView : 2, | 
|         maxView : 3, | 
|         minView : 0 | 
|     }) | 
|   | 
|     //初始化操作 | 
|     MTools.autoFullSelect(); | 
|   | 
|     readInitData(); | 
|   | 
|   | 
|     writeDate(); | 
|     var myForm=MForm.initForm({ | 
|         beforeSubmit:function(){ | 
|             var bodyTrs=$("#cpId").find("tr"); | 
|             console.log((bodyTrs)); | 
|             if(bodyTrs.length==0){ | 
|                 layer.msg("请添加明细",{icon:2}); | 
|                 return false; | 
|             } | 
|         }, | 
|         invokeUrl:basePath+"/admin/allotted/addOrModify", | 
|         afterSubmit:function(){ | 
|             parent.myGrid.serchData(); | 
|         }, | 
|     }); | 
|   | 
|   | 
|     //重新选择调出仓库的话,清空明细列表 | 
|     $("#allottedOutstoreId").change(function (){ | 
|         totalGoods=[]; | 
|         writeDate(); | 
|     }); | 
|     //初始化产品列表 | 
|     function readInitData(){ | 
|   | 
|         /*<![CDATA[*/ | 
|         var projItemsL=/*[[${obj?.sysAllotDetails}]]*/ | 
|   | 
|         var allottedOutstoreId=/*[[${obj?.allottedOutstoreId}]]*/ | 
|         /*]]>*/ | 
|   | 
|         if(projItemsL){ | 
|   | 
|             for(var i =0; i<projItemsL.length; i++) { | 
|                 debugger | 
|                 var obj = new Object(); | 
|                 //库存sku信息 | 
|                 var sku = {goods: {}}; | 
|                 var projItems=projItemsL[i]; | 
|                 goods.id = projItems.goods.id; | 
|                 goods.name = projItems.goods.name; | 
|                 goods.unit = projItems.goods.unit; | 
|                 goods.goodsSortName = projItems.goods.goodsSortName; | 
|                 goods.goodsNo = projItems.goods.goodsNo; | 
|                 //调拨单本身的信息 | 
|                 obj.detailId = projItems.id; | 
|                 //调拨单价 | 
|                 obj.wholesale = projItems.wholesale; | 
|                 //调拨申请数量 | 
|                 obj.appTotal = projItems.appTotal; | 
|                 //出库仓id | 
|                 obj.id = projItems.storeId; | 
|                 //库存量 | 
|                 obj.storeTotal = projItems.storeInfo.storeTotal; | 
|                 //实际库存量 | 
|                 obj.realTotal = projItems.realTotal; | 
|                 obj.batch = projItems.storeInfo.batch; | 
|                 obj.receiveTotal=projItems.receiveTotal; | 
|                 obj.goods = goods; | 
|                 totalGoods[i] = obj; | 
|             } | 
|         } | 
|   | 
|   | 
|     } | 
|   | 
|     //打开产品界面 | 
|     function openPruductList(){ | 
|         var isTrue=validData(); | 
|         if(isTrue){ | 
|             //获取所选择 的产品属性,传递给选择页面 | 
|             goodsAttr=encodeURI($("#allottedType").val()); | 
|             allottedStoreId=$("#allottedOutstoreId").val(); | 
|             layer.full(layer.open({ | 
|                 type : 2, | 
|                 title : "选择产品", | 
|                 area : [ MUI.SIZE_L, '400px' ], | 
|                 content : [ basePath+'/admin/redirect/hive/instore/select-store-list?goodsAttr='+goodsAttr+'&allottedStoreId='+allottedStoreId] | 
|             })); | 
|         } | 
|     } | 
|   | 
|     //监听所选择的产品类型,切换类型则要清空原来的产品列表 | 
|     $("#instoreType").change(function(){ | 
|         totalGoods=[]; | 
|         $("#cpId").html(''); | 
|     }); | 
|     //添加产品回调 | 
|     function callback(arr){ | 
|         removeDouble(arr); | 
|         writeDate(); | 
|     } | 
|   | 
|     //赋值或者去重复 | 
|     function removeDouble(arr) { | 
|         if (totalGoods == null) { | 
|             totalGoods =[]; | 
|         } | 
|         //去重 | 
|   | 
|         for (var i = 0; i < arr.length; i++) { | 
|             var isDouble = false; | 
|             for (var j = 0; j < totalGoods.length; j++) { | 
|                 //同事比较仓库id skuId做库存的唯一性验证 | 
|                 debugger | 
|                 if (arr[i].batch == totalGoods[j].batch) { | 
|                     isDouble = true; | 
|                     break; | 
|                 } | 
|             } | 
|             //如果不重复 | 
|             if (!isDouble) { | 
|   | 
|                 totalGoods.push(arr[i]); | 
|                 totalGoods[totalGoods.length-1].wholesale = arr[i].sku.wholesale; | 
|             } | 
|   | 
|   | 
|         } | 
|   | 
|   | 
|     } | 
|   | 
|     //删除选中的元素 | 
|     function delSelectItem(node,id){ | 
|         //根据列表的id找到元素相应下表的元素 | 
|         for(var i=0;i<totalGoods.length;i++){ | 
|             if(totalGoods[i].sku.id==id){ | 
|                 totalGoods.splice(i, 1); | 
|                 break; | 
|   | 
|             } | 
|         } | 
|   | 
|         //移除tr | 
|         $(node).closest('tr').remove(); | 
|         $("tbody").find("tr").each(function(i){ | 
|             $(this).find("td").eq(0).html(i+1); | 
|         }); | 
|     } | 
|     //填写数据到html | 
|     function writeDate() { | 
|         var html = ""; | 
|         for (var i = 0; i < totalGoods.length; i++) { | 
|             if (!totalGoods[i].appTotal) { | 
|                 totalGoods[i].appTotal = ""; | 
|             } | 
|             if (!totalGoods[i].detailId) { | 
|                 totalGoods[i].detailId = ""; | 
|             } | 
|   | 
|             html += '<tr>' + '<td>' | 
|                 + (i + 1) | 
|                 + '<input autocomplete="off"   type="hidden" name="sysAllotDetails['+i+'].id" value="'+totalGoods[i].detailId+'"></td>' | 
|                 + '<td>' | 
|                 + totalGoods[i].sku.goodsNo | 
|                 + '</td>' | 
|                 + '<td>' | 
|                 + totalGoods[i].sku.name | 
|                 + '<input autocomplete="off"   type="hidden" name="sysAllotDetails['+i+'].skuId" value="'+totalGoods[i].sku.id+'">' | 
|                 +'<input autocomplete="off"   type="hidden" name="sysAllotDetails['+i+'].storeId" value="'+totalGoods[i].id+'"></td>' | 
|                 + '<td>' | 
|                 + totalGoods[i].sku.skuNo | 
|                 + '</td>' | 
|                 + '<td>' | 
|                 + totalGoods[i].sku.name | 
|                 + '</td>' | 
|                 + '<td>' | 
|                 + totalGoods[i].sku.goodsSortName | 
|                 + '</td>' | 
|                 + '<td><input autocomplete="off"   name="sysAllotDetails[' | 
|                 + i | 
|                 + '].wholesale" value="' | 
|                 + totalGoods[i].wholesale | 
|                 + '" onchange="changePrice(this)"  type="text" dataType="price" nullmsg="价格不能为空" errormsg="大于0的正整数" class="form-control"><div class="Validform_checktip"></div></td>' | 
|                 + '<td><input autocomplete="off"   name="sysAllotDetails[' | 
|                 + i | 
|                 + '].appTotal" value="' | 
|                 + totalGoods[i].appTotal | 
|                 + '"  onchange="changePrice(this)" data-max="'+totalGoods[i].storeTotal+'"  type="text" dataType="n" nullmsg="数量不能为空" errormsg="大于0的正整数" class="form-control"><div class="Validform_checktip"></div></td>' | 
|                 + '<td class="total" >' | 
|                 + (totalGoods[i].wholesale * totalGoods[i].appTotal) | 
|                 + '</td>' | 
|                 + '<td>' | 
|                 + totalGoods[i].storeTotal | 
|                 + '</td>' | 
|                 + '<td>' | 
|                 + totalGoods[i].batch | 
|                 + '</td>' | 
|                 + '<td class="center"><a style="text-decoration: none" class="fa fa-trash" onClick="delSelectItem(this,' | 
|                 + totalGoods[i].sku.id | 
|                 + ')" href="javascript:;" title="删除"></a></td>' + '</tr>'; | 
|         } | 
|         $("#cpId").html(html); | 
|     } | 
|   | 
|     function changePrice(node) { | 
|         var $node=$(node); | 
|         var $tr = $node.closest("tr"); | 
|   | 
|         var maxValue=$(node).data("max"); | 
|   | 
|   | 
|         console.log($tr); | 
|         var tds = $tr.find("td"); | 
|         var price = tds.eq(6).find("input").val(); | 
|         var total = tds.eq(7).find("input").val(); | 
|   | 
|         total=total>maxValue?maxValue:total; | 
|         $node.val(total); | 
|   | 
|         tds.eq(8).html((price * total).toFixed(2)); | 
|         //计算总金额 | 
|         var sum = 0; | 
|         $(".total").each(function() { | 
|             sum += parseFloat(this.innerHTML); | 
|         }); | 
|         $("#amountPrice").val(sum.toFixed(2)); | 
|   | 
|     } | 
|   | 
|     function validData() { | 
|         var selectOutStore = $("#allottedOutstoreId").val(); | 
|         var allottedType = $("#allottedType").val(); | 
|         var msg = ""; | 
|         if (allottedType == '') { | 
|             msg = "请选择产品类型"; | 
|         } | 
|         if (selectOutStore == '') { | 
|             msg = "请选择调出仓库"; | 
|             layer.msg(msg, { | 
|                 icon : 1 | 
|             }); | 
|         } | 
|         if (msg != '') { | 
|             layer.msg(msg, { | 
|                 icon : 2 | 
|             }); | 
|             return false; | 
|         } | 
|         return true; | 
|     } | 
| </script> | 
| </body> | 
| </html> |