<!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>
|