|
|
@ -7,6 +7,7 @@ |
|
|
|
<body class="white-bg"> |
|
|
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content"> |
|
|
|
<form class="form-horizontal m" id="form-estimate-add" th:object="${salesEstimate}"> |
|
|
|
<input name="salesEstimateId" th:field="*{salesEstimateId}" type="hidden"> |
|
|
|
<div class="form-group"> |
|
|
|
<label class="col-sm-4 control-label">业务员:</label> |
|
|
|
<div class="col-sm-8"> |
|
|
@ -118,50 +119,59 @@ |
|
|
|
return obj; |
|
|
|
}, {}); |
|
|
|
|
|
|
|
//设置一个标志来跟踪任何错误 |
|
|
|
var hasError = false; |
|
|
|
|
|
|
|
// 销售估价物料 |
|
|
|
var estimateMaterialTable = $('#bootstrap-table').bootstrapTable('getData'); |
|
|
|
|
|
|
|
if (estimateMaterialTable.length === 0){ |
|
|
|
$.modal.alertWarning("请至少添加一条物料信息"); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 将表数据转换成与estimateData格式一致的数组 |
|
|
|
var estimateMaterialDataList = estimateMaterialTable.map(function(item) { |
|
|
|
// 根据实际字段名调整 |
|
|
|
return { |
|
|
|
"materialNo": item.materialNo, |
|
|
|
"materialName": item.materialName, |
|
|
|
"materialType": item.materialType, |
|
|
|
"materialPhotourl": item.materialPhotourl, |
|
|
|
"materialDescribe": item.materialDescribe, |
|
|
|
"materialBrand": item.materialBrand, |
|
|
|
"materialUnit": item.materialUnit, |
|
|
|
"materialProcessMethod": item.materialProcessMethod, |
|
|
|
"materialGearPosition": item.materialGearPosition, |
|
|
|
"materialNum":item.materialNum, |
|
|
|
"noTaxRmb": item.noTaxRmb, |
|
|
|
"taxRmb": item.taxRmb, |
|
|
|
"allNoTaxRmb": item.allNoTaxRmb, |
|
|
|
"allTaxRmb": item.allTaxRmb, |
|
|
|
"noTaxDollar": item.noTaxDollar, |
|
|
|
"taxDollar": item.taxDollar, |
|
|
|
"allNoTaxDollar": item.allNoTaxDollar, |
|
|
|
"allTaxDollar": item.allTaxDollar, |
|
|
|
"warehouseDept": item.warehouseDept, |
|
|
|
"estimateDetailId": item.estimateDetailId, |
|
|
|
"noTaxDevelopCosts": null, // 初始化为 null 或 0 |
|
|
|
"noTaxShippingCosts": null, |
|
|
|
"noTaxServiceCosts": null, |
|
|
|
// ...其他字段 |
|
|
|
}; |
|
|
|
}); |
|
|
|
|
|
|
|
// 获取料号档位的最新值 |
|
|
|
$('.form-control[id^="materialGearPosition_"]').each(function() { |
|
|
|
const index = $(this).attr('id').match(/materialGearPosition_(\d+)/)[1]; // 提取索引 |
|
|
|
const value = $(this).val(); // 获取下拉框的值 |
|
|
|
estimateMaterialDataList[index].materialGearPosition = value; // 更新料号档位 |
|
|
|
$('.form-inline[data-index]').each(function () { |
|
|
|
var index = $(this).data('index'); // 获取数据索引 |
|
|
|
var noTaxDevelopCosts = $('#noTaxDevelopCosts' + index).val(); |
|
|
|
var noTaxShippingCosts = $('#noTaxShippingCosts' + index).val(); |
|
|
|
var noTaxServiceCosts = $('#noTaxServiceCosts' + index).val(); |
|
|
|
|
|
|
|
// 检查成本值是否为空或仅为0 |
|
|
|
if (!noTaxDevelopCosts && noTaxDevelopCosts !== '0') { |
|
|
|
$.modal.alertWarning("开发成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的开发成本"); |
|
|
|
hasError = true; |
|
|
|
return; // 退出循环,阻止进一步处理 |
|
|
|
} |
|
|
|
if (!noTaxShippingCosts && noTaxShippingCosts !== '0') { |
|
|
|
$.modal.alertWarning("运输成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的运输成本"); |
|
|
|
hasError = true; |
|
|
|
return; // 退出循环,阻止进一步处理 |
|
|
|
} |
|
|
|
if (!noTaxServiceCosts && noTaxServiceCosts !== '0') { |
|
|
|
$.modal.alertWarning("服务成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的服务成本"); |
|
|
|
hasError = true; |
|
|
|
return; // 退出循环,阻止进一步处理 |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 更新 estimateMaterialDataList 中对应的记录 |
|
|
|
estimateMaterialDataList[index].noTaxDevelopCosts = noTaxDevelopCosts; |
|
|
|
estimateMaterialDataList[index].noTaxShippingCosts = noTaxShippingCosts; |
|
|
|
estimateMaterialDataList[index].noTaxServiceCosts = noTaxServiceCosts; |
|
|
|
}); |
|
|
|
|
|
|
|
if (hasError) { |
|
|
|
return; // 存在错误,阻止提交 |
|
|
|
} |
|
|
|
|
|
|
|
const combinedData = Object.assign({}, estimateData, { |
|
|
|
salesEstimateDetailList: estimateMaterialDataList, |
|
|
|
}); |
|
|
@ -170,7 +180,7 @@ |
|
|
|
// 使用 JSON.stringify() 序列化数据 |
|
|
|
const jsonData = JSON.stringify(combinedData); |
|
|
|
// 发送 AJAX 请求到后端接口 |
|
|
|
$.operate.saveJson(prefix + "/add", jsonData); |
|
|
|
$.operate.saveJson(prefix + "/engineeringAdd", jsonData); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -316,15 +326,12 @@ |
|
|
|
var childTableId = 'child_table_'+index; |
|
|
|
$detail.html('<table id="'+childTableId+'"></table>'); |
|
|
|
$('#'+childTableId).bootstrapTable({ |
|
|
|
url: prefix + "/showAftersalesShippingDeviceListTwo", |
|
|
|
url: prefix + "/getEstimateDetailMaterialList", |
|
|
|
method: 'post', |
|
|
|
sidePagination: "server", |
|
|
|
contentType: "application/x-www-form-urlencoded", |
|
|
|
queryParams : { |
|
|
|
// salesOrderCode: warehouseOutOrder.salesOrderCode, |
|
|
|
materialNo: parentRow.materialNo, |
|
|
|
salesOrderCode:warehouseOutOrder.salesOrderCode, |
|
|
|
makeNo:warehouseOutOrder.makeNo |
|
|
|
estimateDetailId:parentRow.estimateDetailId |
|
|
|
}, |
|
|
|
columns: [ |
|
|
|
{ |
|
|
@ -366,10 +373,19 @@ |
|
|
|
}); |
|
|
|
|
|
|
|
// 动态生成 form 表单 |
|
|
|
var formHtml = '<form class="form-inline">'; |
|
|
|
var formHtml = '<form class="form-inline" data-index="' + index + '">'; |
|
|
|
formHtml += '<h3>运输、服务、开发成本</h3>'; |
|
|
|
formHtml += '<div class="form-group">'; |
|
|
|
formHtml += '<label for="noTaxDevelopCosts' + index + '">不含税开发成本(RMB):</label>'; |
|
|
|
formHtml += '<input type="text" class="form-control" id="noTaxDevelopCosts' + index + '" name="noTaxDevelopCosts' + index + '" placeholder="请输入开发成本">'; |
|
|
|
formHtml += '</div>'; |
|
|
|
formHtml += '<div class="form-group">'; |
|
|
|
formHtml += '<label for="noTaxShippingCosts' + index + '">不含税运输成本(RMB):</label>'; |
|
|
|
formHtml += '<input type="text" class="form-control" id="noTaxShippingCosts' + index + '" name="noTaxShippingCosts' + index + '" placeholder="请输入运输成本">'; |
|
|
|
formHtml += '</div>'; |
|
|
|
formHtml += '<div class="form-group">'; |
|
|
|
formHtml += '<label for="additionalInput' + index + '">附加输入:</label>'; |
|
|
|
formHtml += '<input type="text" class="form-control" id="additionalInput' + index + '" placeholder="请输入附加信息">'; |
|
|
|
formHtml += '<label for="noTaxServiceCosts' + index + '">不含税服务成本(RMB):</label>'; |
|
|
|
formHtml += '<input type="text" class="form-control" id="noTaxServiceCosts' + index + '" name="noTaxServiceCosts' + index + '" placeholder="请输入服务成本">'; |
|
|
|
formHtml += '</div>'; |
|
|
|
formHtml += '</form>'; |
|
|
|
|
|
|
@ -386,7 +402,13 @@ function queryParams(params) { |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 假设这是一个方法,用于获取所有展开行的索引 |
|
|
|
function getExpandedRowsIndexes() { |
|
|
|
var rows = $('#bootstrap-table').bootstrapTable('getSelections'); |
|
|
|
return rows.map(function(row, index) { |
|
|
|
return index; // 这里假设 index 是在 `onExpandRow` 中设置的 |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 逻辑删除前端的一行数据 |
|
|
|