You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
534 lines
24 KiB
534 lines
24 KiB
<!DOCTYPE html>
|
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
|
<head>
|
|
<th:block th:include="include :: header('修改入库检验通知')" />
|
|
<th:block th:include="include :: datetimepicker-css" />
|
|
<th:block th:include="include :: bootstrap-fileinput-css"/>
|
|
<link th:href="@{/ajax/libs/select2/select2.css}" rel="stylesheet">
|
|
<link th:href="@{/ajax/libs/select2/select2-bootstrap.css}" rel="stylesheet">
|
|
<th:block th:include="include :: bootstrap-editable-css"/>
|
|
<style>
|
|
.other-container {
|
|
width: 90%;
|
|
height: 200px;
|
|
margin: auto;
|
|
}
|
|
.other {
|
|
margin-top: 20px;
|
|
}
|
|
h4 {
|
|
display: inline-block;
|
|
margin-right: 20px;
|
|
}
|
|
.modal-body{
|
|
height: 550px;
|
|
}
|
|
iframe{
|
|
width: 100%;
|
|
height: 500px;
|
|
frameborder: 0;
|
|
border: 0;
|
|
display: inline-block;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body class="white-bg">
|
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
|
<form class="form-horizontal m" id="form-warehousingInspectionNotice-edit" th:object="${warehousingInspectionNotice}">
|
|
<input name="warehousingInspectionNoticeId" th:field="*{warehousingInspectionNoticeId}" type="hidden">
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label is-required">入通知单号:</label>
|
|
<div class="col-sm-8">
|
|
<input name="inNoticeNumber" th:field="*{inNoticeNumber}" class="form-control" type="text" required readonly>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">订购单号:</label>
|
|
<div class="col-sm-8">
|
|
<select name="purchaseOrderNumber" class="form-control m-b" th:field="*{purchaseOrderNumber}" readonly>
|
|
<option value="">所有</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">供应商代码:</label>
|
|
<div class="col-sm-8">
|
|
<input name="supplierCode" th:field="*{supplierCode}" class="form-control" type="text">
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">供应商名称:</label>
|
|
<div class="col-sm-8">
|
|
<input name="supplierName" th:field="*{supplierName}" class="form-control" type="text">
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">联系人:</label>
|
|
<div class="col-sm-8">
|
|
<input name="customerContact" th:field="*{customerContact}" class="form-control" type="text">
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">仓库名称:</label>
|
|
<div class="col-sm-8">
|
|
<select name="stockName" class="form-control m-b" th:field="*{stockName}">
|
|
<option value="">请选择仓库名称</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">仓库编号:</label>
|
|
<div class="col-sm-8">
|
|
<input name="stockNumber" th:field="*{stockNumber}" class="form-control" type="text">
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">仓库管理员:</label>
|
|
<div class="col-sm-8">
|
|
<input name="stockManager" th:field="*{stockManager}" class="form-control" type="text">
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">内外销:</label>
|
|
<div class="col-sm-8">
|
|
<select name="exportSales" class="form-control m-b" th:with="type=${@dict.getType('sys_export_sales')}">
|
|
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{exportSales}"></option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">入库类别:</label>
|
|
<div class="col-sm-8">
|
|
<select name="warehousingCategory" class="form-control m-b" th:with="type=${@dict.getType('warehousing_category')}">
|
|
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{warehousingCategory}"></option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">交检时间:</label>
|
|
<div class="col-sm-8">
|
|
<div class="input-group date">
|
|
<input name="inspectionDate" th:field="*{inspectionDate}" class="form-control" placeholder="yyyy-MM-dd hh:ii:ss" type="text">
|
|
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">入库日期:</label>
|
|
<div class="col-sm-8">
|
|
<div class="input-group date">
|
|
<input name="warehousingDate" th:field="*{warehousingDate}" class="form-control" placeholder="yyyy-MM-dd" type="text">
|
|
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">备注:</label>
|
|
<div class="col-sm-8">
|
|
<textarea name="remarks" class="form-control">[[*{remarks}]]</textarea>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-sm-3 control-label">检验报告:</label>
|
|
<div class="col-sm-8">
|
|
<input type="hidden" name="inspectionReport" th:field="*{inspectionReport}">
|
|
<div class="file-loading">
|
|
<input class="form-control file-upload" id="inspectionReport" name="file" type="file">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<div class="other-container">
|
|
<div class="other">
|
|
<br><hr>
|
|
<h4>订单材料信息</h4>
|
|
<div class="col-sm-12 select-table table-striped">
|
|
<table id="addDetailTable" style="white-space:nowrap"></table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<th:block th:include="include :: footer" />
|
|
<th:block th:include="include :: datetimepicker-js" />
|
|
<th:block th:include="include :: bootstrap-fileinput-js"/>
|
|
<th:block th:include="include :: select2-js"/>
|
|
<th:block th:include="include :: bootstrap-table-editable-js"/>
|
|
<script th:inline="javascript">
|
|
|
|
var getData = [[${warehousingInspectionNotice}]];
|
|
var prefix = ctx + "storehouse/warehousingInspectionNotice";
|
|
var prefixDetail = ctx + "storehouse/warehousingInspectionDetail";
|
|
var prefixPurchaseOrder = ctx + "purchase/purchaseOrder"
|
|
var prefixPurchaseMaterial = ctx + "purchase/purchaseMaterial"
|
|
|
|
var purchasingUnitDatas = [[${@dict.getType('sys_unit_class')}]];
|
|
var judgmentResultsDatas = [[${@dict.getType('judgment_results')}]];
|
|
var materialTypeDatas = [[${@dict.getType('ck_meterialt_type')}]];
|
|
|
|
$("#form-warehousingInspectionNotice-edit").validate({
|
|
focusCleanup: true
|
|
});
|
|
|
|
function submitHandler() {
|
|
let getData=$('#addDetailTable').bootstrapTable('getData', true)
|
|
if(getData.length > 0){
|
|
//确认添加选中的物料数据
|
|
confirmDetailMaterial();
|
|
if ($.validate.form()) {
|
|
$.operate.save(prefix + "/edit", $('#form-warehousingInspectionNotice-edit').serialize());
|
|
}
|
|
} else {
|
|
$.modal.alertWarning("未选择物料,请添加!")
|
|
}
|
|
}
|
|
|
|
$("input[name='inspectionDate']").datetimepicker({
|
|
format: "yyyy-mm-dd hh:ii:ss",
|
|
minView: "month",
|
|
autoclose: true
|
|
});
|
|
|
|
$("input[name='warehousingDate']").datetimepicker({
|
|
format: "yyyy-mm-dd",
|
|
minView: "month",
|
|
autoclose: true
|
|
});
|
|
|
|
$(".file-upload").each(function (i) {
|
|
var val = $("input[name='" + this.id + "']").val()
|
|
$(this).fileinput({
|
|
'uploadUrl': prefix + '/upload',
|
|
initialPreviewAsData: true,
|
|
initialPreview: [val],
|
|
maxFileCount: 1,
|
|
autoReplace: true
|
|
}).on('fileuploaded', function (event, data, previewId, index) {
|
|
$("input[name='" + event.currentTarget.id + "']").val(data.response.url)
|
|
}).on('fileremoved', function (event, id, index) {
|
|
$("input[name='" + event.currentTarget.id + "']").val('')
|
|
})
|
|
$(this).fileinput('_initFileActions');
|
|
});
|
|
|
|
|
|
//初始化添加材料表
|
|
$('#addDetailTable').bootstrapTable({
|
|
url: prefixDetail + '/list',
|
|
pagination: true,
|
|
pageNumber: 1,
|
|
pageSize: 10,
|
|
method: "post",
|
|
contentType: "application/x-www-form-urlencoded",
|
|
striped: true, // 是否显示行间隔色
|
|
cache: false, // 是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
|
|
showToggle: false, // 是否显示详细视图和列表视图的切换按钮
|
|
cardView: false, // 是否显示详细视图
|
|
detailView: false, // 是否显示父子表
|
|
smartDisplay: false, // 加了这个才显示每页显示的行数
|
|
showExport: false, // 是否显示导出按钮
|
|
clickToSelect: true,
|
|
paginationDetailHAlign: ' hiddenDetailInfo',
|
|
height: 250,
|
|
uniqueId: 'materialCode',
|
|
queryParams: function (params) {
|
|
//console.log("123");
|
|
var curParams = {
|
|
// 传递参数查询参数
|
|
pageSize: params.limit,
|
|
pageNum: params.offset / params.limit + 1,
|
|
inNoticeNumber: getData.inNoticeNumber
|
|
// enterpriseCode: data[0].enterpriseCode
|
|
};
|
|
// console.log(data[0].enterpriseCode)
|
|
return curParams
|
|
},
|
|
columns: [
|
|
// {
|
|
// title: '操作',
|
|
// align: 'center',
|
|
// formatter: function (value, row, index) {
|
|
// var actions = [];
|
|
// actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="removeProductData(\'' + row.rawSubsidiaryCode + '\')" ><i class="fa fa-remove"></i>删除</a>');
|
|
// return actions.join('');
|
|
// }
|
|
// },
|
|
{
|
|
field: 'warehousingInspectionDetailId',
|
|
title: '入库检验通知物料id',
|
|
visible: false
|
|
},
|
|
{
|
|
field: 'inNoticeNumber',
|
|
title: '入通知单号',
|
|
visible: false
|
|
},
|
|
{
|
|
field: 'materialCode',
|
|
title: '物料代码'
|
|
},
|
|
{
|
|
field: 'materialName',
|
|
title: '物料名称'
|
|
},
|
|
{
|
|
field: 'specificationModel',
|
|
title: '规格型号'
|
|
},
|
|
{
|
|
field: 'materialType',
|
|
title: '物料类别',
|
|
formatter: function(value, row, index) {
|
|
return $.table.selectDictLabel(materialTypeDatas, value);
|
|
}
|
|
},
|
|
{
|
|
field: 'purchasingUnit',
|
|
title: '单位',
|
|
formatter: function(value, row, index) {
|
|
return $.table.selectDictLabel(purchasingUnitDatas, value);
|
|
}
|
|
},
|
|
{
|
|
field: 'materialQuantity',
|
|
title: '送货数量',
|
|
editable: {
|
|
type: 'text',
|
|
title: '送货数量',
|
|
emptytext: '送货数量',
|
|
validate: function (v) {
|
|
// if (isNaN(v)) return '数量必须是数字';
|
|
// var ex = /^[1-9]\d*$/;
|
|
// if (!ex.test(v)) return '数量必须是正整数';
|
|
}
|
|
}
|
|
},
|
|
{
|
|
field: 'qualifiedQuantity',
|
|
title: '合格数量',
|
|
editable: {
|
|
type: 'text',
|
|
title: '合格数量',
|
|
emptytext: '合格数量',
|
|
validate: function (v) {
|
|
// if (isNaN(v)) return '数量必须是数字';
|
|
// var ex = /^[1-9]\d*$/;
|
|
// if (!ex.test(v)) return '数量必须是正整数';
|
|
}
|
|
}
|
|
},
|
|
{
|
|
field: 'unqualifiedQuantity',
|
|
title: '不合格数量',
|
|
editable: {
|
|
type: 'text',
|
|
title: '不合格数量',
|
|
emptytext: '不合格数量',
|
|
validate: function (v) {
|
|
if (isNaN(v)) return '数量必须是数字';
|
|
var ex = /^[1-9]\d*$/;
|
|
if (!ex.test(v)) return '数量必须是正整数';
|
|
}
|
|
},
|
|
formatter:function(value, row, index) {
|
|
let unqualifiedQuantity = row.materialQuantity - row.qualifiedQuantity;
|
|
row.unqualifiedQuantity = row.materialQuantity - row.qualifiedQuantity;
|
|
return unqualifiedQuantity.toFixed(0);
|
|
}
|
|
},
|
|
{
|
|
field: 'qualificationRate',
|
|
title: '合格率',
|
|
editable: {
|
|
type: 'text',
|
|
title: '合格率',
|
|
emptytext: '合格率',
|
|
validate: function (v) {
|
|
|
|
}
|
|
},
|
|
formatter:function(value, row, index) {
|
|
let total = row.qualifiedQuantity / row.materialQuantity;
|
|
row.qualificationRate = row.qualifiedQuantity / row.materialQuantity;
|
|
return (total*100).toFixed(2) + '%';
|
|
}
|
|
},
|
|
{
|
|
field: 'purchaseExplain',
|
|
title: '说明',
|
|
editable: {
|
|
type: 'text',
|
|
title: '说明',
|
|
emptytext: '说明',
|
|
validate: function (v) {
|
|
|
|
}
|
|
}
|
|
},
|
|
{
|
|
field: 'judgmentResults',
|
|
title: '判定结果',
|
|
editable: {
|
|
type: 'select',
|
|
title: '判定结果',
|
|
emptytext: '判定结果',
|
|
source: function() {
|
|
let result = [];
|
|
for (let i = 0;i<judgmentResultsDatas.length;i++) {
|
|
result.push({value: judgmentResultsDatas[i].dictValue,text: judgmentResultsDatas[i].dictLabel})
|
|
}
|
|
return result;
|
|
},
|
|
validate: function (value) {
|
|
|
|
}
|
|
}
|
|
},
|
|
{
|
|
field: 'receiptBatchNumber',
|
|
title: '收货批号',
|
|
editable: {
|
|
type: 'text',
|
|
title: '收货批号',
|
|
emptytext: '收货批号',
|
|
validate: function (v) {
|
|
|
|
}
|
|
}
|
|
},
|
|
{
|
|
field: 'manufacturerBatchNumber',
|
|
title: '厂商批号',
|
|
editable: {
|
|
type: 'text',
|
|
title: '厂商批号',
|
|
emptytext: '厂商批号',
|
|
validate: function (v) {
|
|
|
|
}
|
|
}
|
|
}]
|
|
})
|
|
|
|
//获取订单号
|
|
$.ajax({
|
|
url: prefixPurchaseOrder + '/list',
|
|
type: "post",
|
|
success: function (res) {
|
|
// console.log(res)
|
|
if (res.rows.length > 0) {
|
|
var orderData = res.rows;
|
|
//alert(JSON.stringify(data));
|
|
for (let i in orderData) {
|
|
// console.log(finishProductData[i].finishProductCode)
|
|
$("#form-warehousingInspectionNotice-edit select[name='purchaseOrderNumber']").append("<option value='" + orderData[i].purchaseOrderNumber + "'>" + orderData[i].purchaseOrderNumber + "</option>");
|
|
}
|
|
$("#form-warehousingInspectionNotice-edit select[name='purchaseOrderNumber']").val(getData.purchaseOrderNumber).trigger("change");
|
|
$("#form-warehousingInspectionNotice-edit select[name='purchaseOrderNumber']").change(function () {
|
|
var purchaseOrderNumber = $(this).val();
|
|
for (let i=0;i<orderData.length;i++) {
|
|
if (orderData[i].purchaseOrderNumber == purchaseOrderNumber) {
|
|
$("#form-warehousingInspectionNotice-edit input[name='supplierCode']").val(orderData[i].supplierCode);
|
|
$("#form-warehousingInspectionNotice-edit input[name='supplierName']").val(orderData[i].supplierName);
|
|
$("#form-warehousingInspectionNotice-edit input[name='customerContact']").val(orderData[i].customerContact);
|
|
//选择订单号显示表内订单信息
|
|
showDetailMaterial();
|
|
}
|
|
}
|
|
})
|
|
|
|
} else {
|
|
$.modal.msgError(res.msg);
|
|
}
|
|
}
|
|
})
|
|
|
|
//获取仓库信息
|
|
$.ajax({
|
|
url: ctx + "stock/stockInfo/list",
|
|
type: "post",
|
|
success: function (res) {
|
|
// console.log(res)
|
|
if (res.rows.length > 0) {
|
|
let stockData = res.rows;
|
|
for (let i in stockData) {
|
|
// console.log(finishProductData[i].finishProductCode)
|
|
$("#form-warehousingInspectionNotice-edit select[name='stockName']").append("<option value='" + stockData[i].stockname + "'>" + stockData[i].stockname + "</option>");
|
|
}
|
|
$("#form-warehousingInspectionNotice-edit select[name='stockName']").val(getData.stockName).trigger("change");
|
|
$("#form-warehousingInspectionNotice-edit select[name='stockName']").change(function () {
|
|
var stockName = $(this).val();
|
|
for (let i=0;i<stockData.length;i++) {
|
|
if (stockData[i].stockname == stockName) {
|
|
$("#form-warehousingInspectionNotice-edit input[name='stockNumber']").val(stockData[i].stockNO);
|
|
$("#form-warehousingInspectionNotice-edit input[name='stockManager']").val(stockData[i].stockmanager);
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
}
|
|
})
|
|
|
|
//选择订单号显示表内订单信息
|
|
function showDetailMaterial() {
|
|
$('#addDetailTable').bootstrapTable("removeAll")
|
|
var purchaseOrderNumber = $("select[name='purchaseOrderNumber']").val();
|
|
$.ajax({
|
|
url: prefixPurchaseMaterial + '/list',
|
|
type: 'post',
|
|
data: {
|
|
purchaseOrderNumber: purchaseOrderNumber
|
|
},
|
|
success: function (res) {
|
|
console.log(res)
|
|
var count = res.rows.length;
|
|
var data = res.rows;
|
|
var inNoticeNumber = $("input[name='inNoticeNumber']").val();
|
|
for (i = 0; i < res.rows.length; i++) {
|
|
$("#addDetailTable").bootstrapTable('insertRow', {
|
|
index: count + i,
|
|
row: {
|
|
inNoticeNumber: inNoticeNumber,
|
|
materialCode: data[i].rawSubsidiaryCode,
|
|
materialName: data[i].rawSubsidiaryName,
|
|
specificationModel: data[i].specificationModel,
|
|
materialType: data[i].materialType,
|
|
purchasingUnit: data[i].purchasingUnit,
|
|
materialQuantity: data[i].materialQuantity,
|
|
qualifiedQuantity: '',
|
|
unqualifiedQuantity: '',
|
|
qualificationRate: '',
|
|
purchaseExplain: data[i].purchaseExplain,
|
|
judgmentResults: '',
|
|
receiptBatchNumber: '',
|
|
manufacturerBatchNumber: '',
|
|
}
|
|
});
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
//确认添加选中的物料数据
|
|
function confirmDetailMaterial() {
|
|
$("#addDetailTable").bootstrapTable('refresh');
|
|
let data = $('#addDetailTable').bootstrapTable('getData', true);
|
|
// let getData=$('#addProductTable').bootstrapTable('getData', true)
|
|
// console.log(data)
|
|
$.ajax({
|
|
url: prefixDetail + '/addEditSave',
|
|
type: "POST",
|
|
data: {
|
|
data: JSON.stringify(data)
|
|
},
|
|
dataType: "json",
|
|
success: function (resp) {
|
|
// console.log(data)
|
|
console.log(resp)
|
|
},
|
|
|
|
})
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|