<!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">调入仓库<span 
 | 
                    class="text-danger">*</span></label> 
 | 
            <div class="col-sm-3"> 
 | 
                <select class="form-control autoFull" name="allottedInstoreId" 
 | 
                        id="allottedInstoreId" data-filed="name" 
 | 
                        th:data-url="@{/admin/warehouse/findShopWarehouse}" 
 | 
                        th:data-def="${obj?.allottedInstoreId}" datatype="*" nullmsg="调出仓库不能为空"> 
 | 
                    <option value=''>--请选择调入仓库--</option> 
 | 
                </select> 
 | 
                <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="allottedOutstoreId" 
 | 
                        id="allottedOutstoreId" data-filed="name" 
 | 
                        th:data-url="@{/admin/warehouse/findShopWarehouse}" 
 | 
                        th:data-def="${obj?.allottedOutstoreId}" 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"> 
 | 
                    <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>产品规格</th> 
 | 
                        <th>调拨单价</th> 
 | 
                        <th>申请调拨数量</th> 
 | 
                        <th>调拨金额</th> 
 | 
                        <th>库存量</th> 
 | 
                        <th>批次</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++) { 
 | 
  
 | 
                var obj = new Object(); 
 | 
                //库存sku信息 
 | 
                var 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做库存的唯一性验证 
 | 
                if (arr[i].batch == totalGoods[j].batch) { 
 | 
                    isDouble = true; 
 | 
                    break; 
 | 
                } 
 | 
            } 
 | 
            //如果不重复 
 | 
            if (!isDouble) { 
 | 
  
 | 
                totalGoods.push(arr[i]); 
 | 
                totalGoods[totalGoods.length-1].wholesale = arr[i].goods.wholesale; 
 | 
            } 
 | 
  
 | 
  
 | 
        } 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
    //删除选中的元素 
 | 
    function delSelectItem(node,id){ 
 | 
        //根据列表的id找到元素相应下表的元素 
 | 
        for(var i=0;i<totalGoods.length;i++){ 
 | 
            if(totalGoods[i].goods.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].goods.goodsNo 
 | 
                + '</td>' 
 | 
                + '<td>' 
 | 
                + totalGoods[i].goods.name 
 | 
                + '<input autocomplete="off"   type="hidden" name="sysAllotDetails['+i+'].skuId" value="'+totalGoods[i].goods.id+'">' 
 | 
                +'<input autocomplete="off"   type="hidden" name="sysAllotDetails['+i+'].storeId" value="'+totalGoods[i].id+'"></td>' 
 | 
                + '<td>' 
 | 
                + totalGoods[i].goods.goodsSortName 
 | 
                + '</td>' 
 | 
                + '<td>' 
 | 
                + totalGoods[i].goods.unit 
 | 
                + '</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].goods.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(5).find("input").val(); 
 | 
        var total = tds.eq(6).find("input").val(); 
 | 
  
 | 
        if(total>maxValue){ 
 | 
            layer.msg("调拨数量不能大于库存数量"); 
 | 
            tds.eq(6).find("input").val(maxValue); 
 | 
            total=parseInt(maxValue); 
 | 
        } 
 | 
  
 | 
  
 | 
  
 | 
        tds.eq(7).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> 
 |