|
|
@@ -563,27 +563,39 @@ function calculatePrice(row) {
|
|
|
// 计算所有物品的总价
|
|
|
function calculateTotalPrice() {
|
|
|
var total = 0;
|
|
|
+ var hasMaterial = false;
|
|
|
|
|
|
$(".startTr1:not(.hide)").each(function() {
|
|
|
+ hasMaterial = true; // 标记有物料行
|
|
|
var qty = parseFloat($(this).find(".qty").val()) || 0;
|
|
|
var priceTax = parseFloat($(this).find(".priceTax").val()) || 0;
|
|
|
var subTotal = qty * priceTax;
|
|
|
total += subTotal;
|
|
|
});
|
|
|
|
|
|
- // 如果合同金额为空或与自动计算金额相同,则更新合同金额
|
|
|
- var contractMoney = parseFloat($("#contract_money").val()) || 0;
|
|
|
+ // 获取当前合同金额和手动输入标记
|
|
|
+ var contractMoney = parseFloat($("#contract_money").val());
|
|
|
var manualInput = $("#contract_money").data("manual-input") || false;
|
|
|
|
|
|
- // 如果合同金额小于物料总金额,自动更新合同金额
|
|
|
- if (contractMoney < total) {
|
|
|
- $("#contract_money").val(total.toFixed(2));
|
|
|
- manualInput = false; // 重置手动输入标记
|
|
|
- }
|
|
|
-
|
|
|
- if (!manualInput || contractMoney === 0 || contractMoney === total) {
|
|
|
- $("#contract_money").val(total.toFixed(2));
|
|
|
-
|
|
|
+ if (hasMaterial) {
|
|
|
+ // 有物料时,检查是否需要更新合同金额
|
|
|
+ // 如果是手动输入且大于物料总额,保留用户输入
|
|
|
+ // 否则,使用物料总额
|
|
|
+ if (manualInput && contractMoney > total) {
|
|
|
+ // 保留用户手动输入的较大值
|
|
|
+ // 不更新合同金额
|
|
|
+ } else {
|
|
|
+ // 自动更新为物料总额
|
|
|
+ $("#contract_money").val(total.toFixed(2));
|
|
|
+ // 重置手动输入标记
|
|
|
+ $("#contract_money").removeData("manual-input");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 没有物料时,只有非手动输入才清空
|
|
|
+ if (!manualInput) {
|
|
|
+ $("#contract_money").val("");
|
|
|
+ }
|
|
|
+ // 注意:如果是手动输入,即使没有物料也保留用户输入
|
|
|
}
|
|
|
|
|
|
$("#totalPrice").val(total.toFixed(2));
|
|
|
@@ -653,12 +665,11 @@ function hideInlineError(element) {
|
|
|
//检查是否需要删除合同付款信息
|
|
|
function checkAndRemovePaymentInfo() {
|
|
|
var hasMaterial = $(".startTr1:not(.hide)").length > 0;
|
|
|
- // 如果没有物料,则合同金额置0且删除所有付款信息
|
|
|
+ // 如果没有物料,则删除所有付款信息
|
|
|
if (!hasMaterial ) {
|
|
|
$(".startTr2:not(.hide)").each(function() {
|
|
|
$(this).remove();
|
|
|
});
|
|
|
- $("#contract_money").val("0");
|
|
|
}
|
|
|
}
|
|
|
|