Commit 306e67ac by yyq1988

对接物资盘亏

parent cd95ae43
<%--
Created by IntelliJ IDEA.
User: yangzi
Date: 2023/2/21
Time: 10:29
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/webpage/include/taglib.jsp" %>
<div id="toolbar" class="text-left">
<c:if test="${mode == 'add' || mode == 'edit'}">
<a class="btn btn-primary btn-sm" onclick="addDetail('#detail_table')" title="新增"><i class="fa fa-plus"></i>
添加</a>
</c:if>
</div>
<table id="detail_table" data-toolbar="#toolbar"></table>
<script>
var selector = "#detail_table";
function initTable() {
var data = ${fns:toJson(materialLoss.materialLossInfoList)};
$(selector).bootstrapTable({
data: data,
columns: [{checkbox: true},
{
field: 'no',
title: '序号',
align: 'center',
width: 60,
formatter: function (value, row, index) {
var tpl = $("#hideTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, "");
var html = Mustache.render(tpl, {
idx: index,
row: row
})
return html + '<span>' + (index + 1) + '</span>'
}
},
{
field: 'ledgerInfo.name',
title: '物资名称',
formatter: function (value, row, index) {
return Mustache.render($("#ledgerInfoNameTpl").html(), {
row: row,
idx: index
})
}
},
{
field: 'ledgerInfo.code',
title: '物资编码',
formatter: function (value, row, index) {
return Mustache.render($("#ledgerInfoCodeTpl").html(), {
row: row,
idx: index
})
}
},
{
field: 'ledgerInfo.type.name',
title: '类型',
formatter: function (value, row, index) {
return Mustache.render($("#ledgerInfoTypeTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, ""), {
row: row,
idx: index
})
}
},
{
field: 'ledgerInfo.model',
title: '型号',
formatter: function (value, row, index) {
return Mustache.render($("#ledgerInfoModelTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, ""), {
row: row,
idx: index
})
}
},
{
field: 'ledgerInfo.amount',
title: '单价',
formatter: function (value, row, index) {
return Mustache.render($("#ledgerInfoAmountTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, ""), {
row: row,
idx: index
})
}
},
{
field: 'ledgerInfo.batchNum',
title: '批次号',
formatter: function (value, row, index) {
return Mustache.render($("#ledgerInfoBatchNumTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, ""), {
row: row,
idx: index
})
}
},
{
field: 'ledgerInfo.shelves.name',
title: '货架',
formatter: function (value, row, index) {
return Mustache.render($("#ledgerInfoShelvesTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, ""), {
row: row,
idx: index
})
}
},
{
field: 'remarks',
title: '备注',
formatter: function (value, row, index) {
return Mustache.render($("#remarksTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, ""), {
row: row,
idx: index
})
}
},
{
field: '',
title: '操作',
formatter: function (value, row, index) {
var text = row.delFlag == 1 ? '撤销删除' : '删除';
var result = ["<a href='javascript:void(0);' onclick=\"removeRow(" + index + ", '" + row.id + "', '" + row.delFlag + "')\">" + text + "</a>"]
return result.join('');
}
}
]
});
}
function getSelections() {
return $(selector).bootstrapTable('getSelections');
}
/**
* 手动添加明细
* @param selector
*/
function addDetail(selector) {
jp.openGridSelectDialog({
title: '选择物资台账明细',
isMultiSelect: true,
url: "${ctx}/warehouse/ledger/ledger/findByQrOrCode",
fieldLabels: "物资编码|物资名称|类型|型号|批次号|单价",
fieldKeys: "code|name|type.name|model|batchNum|amount",
searchLabels: "物资编码",
searchKeys: "code",
}, function (items) {
if (Array.isArray(items)) {
var data = items.map(function (item) {
item[0] = false;
return {
id: '',
delFlag: 0,
remarks: '',
ledgerInfo: item
}
})
$(selector).bootstrapTable('append', data)
}
})
}
function removeRow(index, rowId, rowDelFlag) {
if (rowId) {
var delFlag = rowDelFlag === 1 ? 0 : 1
updateRow(index, {
delFlag: delFlag
})
} else {
$(selector).bootstrapTable("remove", {
field: '$index',
values: [index]
})
}
}
function updateRow(index, row) {
$(selector).bootstrapTable('updateRow', {
index: index,
row: row
})
}
function onInputChange(rowIndex, elem, field) {
var obj = {};
obj[field] = $(elem).val();
updateRow(rowIndex, obj);
}
/**
* 获取所有明细数据
* @returns {*|jQuery}
*/
function getTableData() {
return $(selector).bootstrapTable('getData');
}
</script>
<script id="hideTpl" type="text/html">
<input id="materialLossInfoList{{idx}}_id" name="materialLossInfoList[{{idx}}].id" type="hidden"
value="{{row.id}}"/>
<input id="materialLossInfoList{{idx}}_delFlag" name="materialLossInfoList[{{idx}}].delFlag"
type="hidden" value="{{row.delFlag}}"/>
<input id="materialLossInfoList{{idx}}_materialLoss"
name="materialLossInfoList[{{idx}}].materialLoss.id" type="hidden"
value="{{row.materialLoss.id}}"/>
<input id="materialLossInfoList{{idx}}_ledgerInfoId"
name="materialLossInfoList[{{idx}}].ledgerInfo.id" type="hidden" value="{{row.ledgerInfo.id}}"/>
</script>
<script id="ledgerInfoNameTpl" type="text/html">
<input id="materialLossInfoList{{idx}}_ledgerInfoName" readonly
name="materialLossInfoList[{{idx}}].ledgerInfo.name" type="text" class="form-control"
value="{{row.ledgerInfo.name}}"/>
</script>
<script id="ledgerInfoCodeTpl" type="text/html">
<input id="materialLossInfoList{{idx}}_ledgerInfoCode" readonly
name="materialLossInfoList[{{idx}}].ledgerInfo.code" type="text" class="form-control"
value="{{row.ledgerInfo.code}}"/>
</script>
<script id="ledgerInfoTypeTpl" type="text/html">//<!--
<sys:treeselect id="materialLossInfoList{{idx}}_ledgerInfoType" name="materialLossInfoList[{{idx}}].ledgerInfo.type.id" value="{{row.ledgerInfo.type.id}}" labelName="materialLossInfoList{{idx}}.ledgerInfo.type.name" labelValue="{{row.ledgerInfo.type.name}}"
title="类型" url="/warehouse/materialtype/materialType/treeData" cssClass="form-control " disabled="disabled" allowClear="true"/>//-->
</script>
<script id="ledgerInfoModelTpl" type="text/html">
<input id="materialLossInfoList{{idx}}_ledgerInfoModel"
name="materialLossInfoList[{{idx}}].ledgerInfo.model" type="text" class="form-control" readonly
value="{{row.ledgerInfo.model}}"/>
</script>
<script id="ledgerInfoAmountTpl" type="text/html">
<input id="materialLossInfoList{{idx}}_ledgerInfoAmount"
name="materialLossInfoList[{{idx}}].ledgerInfo.amount" type="text" readonly class="form-control"
value="{{row.ledgerInfo.amount}}"/>
</script>
<script id="ledgerInfoShelvesTpl" type="text/html">
<input id="materialLossInfoList{{idx}}_ledgerInfoShelves"
name="materialLossInfoList[{{idx}}].ledgerInfo.shelves.name" type="text" readonly class="form-control"
value="{{row.ledgerInfo.shelves.name}}"/>
</script>
<script id="ledgerInfoBatchNumTpl" type="text/html">
<input id="materialLossInfoList{{idx}}_ledgerInfoBatchNum"
name="materialLossInfoList[{{idx}}].ledgerInfo.batchNum" type="text" readonly class="form-control"
value="{{row.ledgerInfo.batchNum}}"/>
</script>
<script id="remarksTpl" type="text/html">
<textarea id="storageInfoList{{idx}}_remarks" name="storageInfoList[{{idx}}].remarks" rows="2"
onchange="onInputChange('{{idx}}', this, 'remarks')" class="form-control ">{{row.remarks}}</textarea>
</script>
<%@ page contentType="text/html;charset=UTF-8" %> <%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/webpage/include/taglib.jsp"%> <%@ include file="/webpage/include/taglib.jsp" %>
<html> <html>
<head> <head>
<title>物资盘亏记录管理</title> <title>物资盘亏记录管理</title>
<meta name="decorator" content="ani"/> <meta name="decorator" content="ani"/>
<script type="text/javascript"> <link rel="stylesheet" href="${ctxStatic}/common/css/form.css">
<link rel="stylesheet" href="${ctxStatic}/plugin/bootstrapTable/bootstrap-table.min.css">
$(document).ready(function() { <script type="text/javascript" src="${ctxStatic}/plugin/bootstrapTable/bootstrap-table.min.js"></script>
jp.ajaxForm("#inputForm",function(data){ <script type="text/javascript" src="${ctxStatic}/plugin/bootstrapTable/bootstrap-table-zh-CN.js"></script>
if(data.success){
jp.success(data.msg);
jp.go("${ctx}/warehouse/materialloss/materialLoss");
}else{
jp.error(data.msg);
$("#inputForm").find("button:submit").button("reset");
}
});
$('#time').datetimepicker({
format: "YYYY-MM-DD HH:mm:ss"
});
});
function addRow(list, idx, tpl, row){
$(list).append(Mustache.render(tpl, {
idx: idx, delBtn: true, row: row
}));
$(list+idx).find("select").each(function(){
$(this).val($(this).attr("data-value"));
});
$(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
var ss = $(this).attr("data-value").split(',');
for (var i=0; i<ss.length; i++){
if($(this).val() == ss[i]){
$(this).attr("checked","checked");
}
}
});
$(list+idx).find(".form_datetime").each(function(){
$(this).datetimepicker({
format: "YYYY-MM-DD HH:mm:ss"
});
});
}
function delRow(obj, prefix){
var id = $(prefix+"_id");
var delFlag = $(prefix+"_delFlag");
if (id.val() == ""){
$(obj).parent().parent().remove();
}else if(delFlag.val() == "0"){
delFlag.val("1");
$(obj).html("&divide;").attr("title", "撤销删除");
$(obj).parent().parent().addClass("error");
}else if(delFlag.val() == "1"){
delFlag.val("0");
$(obj).html("&times;").attr("title", "删除");
$(obj).parent().parent().removeClass("error");
}
}
</script>
</head> </head>
<body> <body>
<div class="wrapper wrapper-content"> <div class="wrapper wrapper-content">
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<div class="panel panel-primary"> <div class="panel panel-primary">
<div class="panel-heading"> <div class="panel-body">
<h3 class="panel-title"> <form:form id="inputForm" modelAttribute="materialLoss"
<a class="panelButton" href="${ctx}/warehouse/materialloss/materialLoss"><i class="ti-angle-left"></i> 返回</a> action="${ctx}/warehouse/materialloss/materialLoss/save" method="post"
</h3> class="form-horizontal">
</div> <form:hidden path="id"/>
<div class="panel-body"> <h3 class="text-center">物资盘亏表</h3>
<form:form id="inputForm" modelAttribute="materialLoss" action="${ctx}/warehouse/materialloss/materialLoss/save" method="post" class="form-horizontal"> <table class="table table-bordered main-table">
<form:hidden path="id"/> <tr>
<div class="form-group"> <td> <font color="red">*</font>单号</td>
<label class="col-sm-2 control-label">盘亏单号:</label> <td>
<div class="col-sm-10"> <form:input path="number" htmlEscape="false" readonly="true" class="form-control required"/>
<form:input path="number" htmlEscape="false" class="form-control "/> </td>
</div> <td><font color="red">*</font>操作人</td>
</div> <td>
<div class="form-group"> <sys:userselect id="operator" name="operator.id"
<label class="col-sm-2 control-label">操作人:</label> value="${materialLoss.operator.id}" labelName="operator.name"
<div class="col-sm-10"> labelValue="${materialLoss.operator.name}" disabled="disabled"
<form:input path="operator" htmlEscape="false" class="form-control "/> cssClass="form-control required"/>
</div> </td>
</div> </tr>
<div class="form-group"> <tr>
<label class="col-sm-2 control-label">盘亏时间:</label> <td><font color="red">*</font>盘亏时间</td>
<div class="col-sm-10"> <td>
<div class='input-group form_datetime' id='time'> <div class='input-group form_datetime' id='time'>
<input type='text' name="time" class="form-control " value="<fmt:formatDate value="${materialLoss.time}" pattern="yyyy-MM-dd HH:mm:ss"/>"/> <input type='text' name="time" class="form-control required" autocomplete="off"
<span class="input-group-addon"> value="<fmt:formatDate value="${materialLoss.time}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
<span class="glyphicon glyphicon-calendar"></span> <span class="input-group-addon">
</span> <span class="glyphicon glyphicon-calendar"></span>
</div> </span>
</div> </div>
</div> </td>
<div class="form-group"> <td>备注</td>
<label class="col-sm-2 control-label">备注信息:</label> <td>
<div class="col-sm-10"> <form:textarea path="remarks" htmlEscape="false" rows="4" class="form-control "/>
<form:textarea path="remarks" htmlEscape="false" rows="4" class="form-control "/> </td>
</div> </tr>
</div> <tr>
<div class="tabs-container"> <td colspan="4">
<ul class="nav nav-tabs"> <%@include file="materialLossDetail.jsp" %>
<li class="active"><a data-toggle="tab" href="#tab-1" aria-expanded="true">盘亏明细表:</a> </td>
</li> </tr>
</ul> </table>
<div class="tab-content"> </form:form>
<div id="tab-1" class="tab-pane fade in active"> </div>
<a class="btn btn-white btn-sm" onclick="addRow('#materialLossInfoList', materialLossInfoRowIdx, materialLossInfoTpl);materialLossInfoRowIdx = materialLossInfoRowIdx + 1;" title="新增"><i class="fa fa-plus"></i> 新增</a> </div>
<table class="table table-striped table-bordered table-condensed"> </div>
<thead> </div>
<tr>
<th class="hide"></th>
<th>盘亏表主表ID</th>
<th>物资台账明细ID</th>
<th>备注信息</th>
<th width="10">&nbsp;</th>
</tr>
</thead>
<tbody id="materialLossInfoList">
</tbody>
</table>
<script type="text/template" id="materialLossInfoTpl">//<!--
<tr id="materialLossInfoList{{idx}}">
<td class="hide">
<input id="materialLossInfoList{{idx}}_id" name="materialLossInfoList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
<input id="materialLossInfoList{{idx}}_delFlag" name="materialLossInfoList[{{idx}}].delFlag" type="hidden" value="0"/>
</td>
<td>
<input id="materialLossInfoList{{idx}}_materialLoss" name="materialLossInfoList[{{idx}}].materialLoss.id" type="text" value="{{row.materialLoss.id}}" class="form-control "/>
</td>
<td>
<input id="materialLossInfoList{{idx}}_ledgerInfo" name="materialLossInfoList[{{idx}}].ledgerInfo.id" type="text" value="{{row.ledgerInfo.id}}" class="form-control "/>
</td>
<td>
<textarea id="materialLossInfoList{{idx}}_remarks" name="materialLossInfoList[{{idx}}].remarks" rows="4" class="form-control ">{{row.remarks}}</textarea>
</td>
<td class="text-center" width="10">
{{#delBtn}}<span class="close" onclick="delRow(this, '#materialLossInfoList{{idx}}')" title="删除">&times;</span>{{/delBtn}}
</td>
</tr>//-->
</script>
<script type="text/javascript">
var materialLossInfoRowIdx = 0, materialLossInfoTpl = $("#materialLossInfoTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
$(document).ready(function() {
var data = ${fns:toJson(materialLoss.materialLossInfoList)};
for (var i=0; i<data.length; i++){
addRow('#materialLossInfoList', materialLossInfoRowIdx, materialLossInfoTpl, data[i]);
materialLossInfoRowIdx = materialLossInfoRowIdx + 1;
}
});
</script>
</div>
</div>
</div>
<c:if test="${mode == 'add' || mode=='edit'}">
<div class="col-lg-3"></div>
<div class="col-lg-6">
<div class="form-group text-center">
<div>
<button class="btn btn-primary btn-block btn-lg btn-parsley" data-loading-text="正在提交...">提 交</button>
</div>
</div>
</div>
</c:if>
</form:form>
</div>
</div>
</div>
</div>
</div> </div>
<script type="text/javascript">
$(document).ready(function() {
initTable();
$('#time').datetimepicker({
format: "YYYY-MM-DD HH:mm:ss"
});
});
</script>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -241,21 +241,21 @@ $(document).ready(function() { ...@@ -241,21 +241,21 @@ $(document).ready(function() {
$('#materialLossTable').bootstrapTable('refresh'); $('#materialLossTable').bootstrapTable('refresh');
} }
function add(){ function add(){
jp.go("${ctx}/warehouse/materialloss/materialLoss/form/add"); jp.openSaveDialog("新增物资盘亏","${ctx}/warehouse/materialloss/materialLoss/form/add",'1200','800');
} }
function edit(id){ function edit(id){
if(id == undefined){ if(id == undefined){
id = getIdSelections(); id = getIdSelections();
} }
jp.go("${ctx}/warehouse/materialloss/materialLoss/form/edit?id=" + id); jp.openSaveDialog("编辑物资盘亏","${ctx}/warehouse/materialloss/materialLoss/form/edit?id=" + id,'1200','800');
} }
function view(id){//没有权限时,不显示确定按钮 function view(id){//没有权限时,不显示确定按钮
if(id == undefined){ if(id == undefined){
id = getIdSelections(); id = getIdSelections();
} }
jp.go("${ctx}/warehouse/materialloss/materialLoss/form/view?id=" + id); jp.openViewDialog("查看物资盘亏","${ctx}/warehouse/materialloss/materialLoss/form/view?id=" + id,'1200','800');
} }
...@@ -299,9 +299,15 @@ $(document).ready(function() { ...@@ -299,9 +299,15 @@ $(document).ready(function() {
<table class="ani table"> <table class="ani table">
<thead> <thead>
<tr> <tr>
<th>盘亏表主表ID</th> <th>物资名称</th>
<th>物资台账明细ID</th> <th>物资编号</th>
<th>备注信息</th> <th>类型</th>
<th>型号</th>
<th>单价</th>
<th>批次号</th>
<th>货架</th>
<th>仓库</th>
<th>备注</th>
</tr> </tr>
</thead> </thead>
<tbody id="materialLossChild-{{idx}}-1-List"> <tbody id="materialLossChild-{{idx}}-1-List">
...@@ -313,10 +319,28 @@ $(document).ready(function() { ...@@ -313,10 +319,28 @@ $(document).ready(function() {
<script type="text/template" id="materialLossChild1Tpl">//<!-- <script type="text/template" id="materialLossChild1Tpl">//<!--
<tr> <tr>
<td> <td>
{{row.materialLoss.id}} {{row.ledgerInfo.name}}
</td> </td>
<td> <td>
{{row.ledgerInfo.id}} {{row.ledgerInfo.code}}
</td>
<td>
{{row.ledgerInfo.type.name}}
</td>
<td>
{{row.ledgerInfo.model}}
</td>
<td>
{{row.ledgerInfo.amount}}
</td>
<td>
{{row.ledgerInfo.batchNum}}
</td>
<td>
{{row.ledgerInfo.shelves.name}}
</td>
<td>
{{row.ledgerInfo.shelves.warehouse.name}}
</td> </td>
<td> <td>
{{row.remarks}} {{row.remarks}}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment