430 lines
20 KiB
JavaScript
430 lines
20 KiB
JavaScript
/**
|
||
* 一个资金计划的字段
|
||
*/
|
||
BUDGET_PLAN_DETAIL_ARR=["month","deviceCost","engineerCost","project_manageCost","earnestMoneyCost","totalCost","saleIncome","earnestMoneyIncome","totalIncome","fundBalance","capitalInterest","underwrittenPlan","repaymentPlan"];
|
||
$(function () {
|
||
$(".budget-plan-detail").click(function () {
|
||
$('#my-prompt-budget-plan-detail').modal({
|
||
relatedTarget: this,
|
||
onConfirm: function(e) {
|
||
//不能使用e.data,因为无法获取动态添加的
|
||
var data = collectData("am-modal-prompt-input-budget-plan-detail");
|
||
data = prepareAjaxData(data, BUDGET_PLAN_DETAIL_ARR, $("#id").val());
|
||
saveDetail("/fourcal/project/budgetEditSaveBudgetPlanDetail", data, updateBudgetPlanDetailData);
|
||
},
|
||
onCancel: function(e) {
|
||
}
|
||
});
|
||
});
|
||
$("#budgetPlanDetailAddBtn").click(function () {
|
||
appendTrBudgetPlan();
|
||
});
|
||
});
|
||
/**
|
||
* 资金计划增加一行
|
||
*/
|
||
function appendTrBudgetPlan() {
|
||
var template = '<tr>\n' +
|
||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail"></td>\n' +
|
||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-device-cost-budget-plan"></td>\n' +
|
||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-engineer-cost-budget-plan"></td>\n' +
|
||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-project-manage-cost-budget-plan"></td>\n' +
|
||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-earnest-money-cost-budget-plan"></td>\n' +
|
||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-total-cost-budget-plan" readonly></td>\n' +
|
||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-sale-income-budget-plan"></td>\n' +
|
||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-earnest-money-income-budget-plan"></td>\n' +
|
||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-total-income-budget-plan" readonly></td>\n' +
|
||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-fund-balance-budget-plan" readonly></td>\n' +
|
||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-capital-interest-budget-plan" readonly></td>\n' +
|
||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-underwritten-plan-budget-plan" readonly></td>\n' +
|
||
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-budget-plan-detail input-changeable-repayment-plan-budget-plan" readonly></td>\n' +
|
||
' <td><button type="button" class="am-btn am-btn-warning am-btn-xs am-round am-modal-line-delete-budget-plan"><span class="am-icon-minus"></span></button></td>\n' +
|
||
' </tr>';
|
||
$("#budgetPlanDetailTable").append(template);
|
||
//重新绑定删除事件和input修改事件
|
||
bindBudgetPlanDeleteBtn();
|
||
bindChangeableInputBudgetPlanDetail();
|
||
}
|
||
|
||
/**
|
||
* 绑定删除删除按钮,不仅删除还需要重新计算统计的数据
|
||
*/
|
||
function bindBudgetPlanDeleteBtn() {
|
||
$(".am-modal-line-delete-budget-plan").click(function () {
|
||
//删除自己对应的tr
|
||
$(this).parent().parent().remove();
|
||
//还需要更新每一列的合计数据
|
||
updateBudgetPlanTotal("input-changeable-device-cost-budget-plan","input-total-device-cost-budget-plan");
|
||
updateBudgetPlanTotal("input-changeable-engineer-cost-budget-plan","input-total-engineer-cost-budget-plan");
|
||
updateBudgetPlanTotal("input-changeable-project-manage-cost-budget-plan","input-total-project-manage-cost-budget-plan");
|
||
updateBudgetPlanTotal("input-changeable-earnest-money-cost-budget-plan","input-total-earnest-money-cost-budget-plan");
|
||
updateBudgetPlanTotal("input-changeable-total-cost-budget-plan","input-total-total-cost-budget-plan");
|
||
updateBudgetPlanTotal("input-changeable-sale-income-budget-plan","input-total-sale-income-budget-plan");
|
||
updateBudgetPlanTotal("input-changeable-earnest-money-income-budget-plan","input-total-earnest-money-income-budget-plan");
|
||
updateBudgetPlanTotal("input-changeable-total-income-budget-plan","input-total-total-income-budget-plan");
|
||
/*updateBudgetPlanTotal("input-changeable-fund-balance-budget-plan","input-total-fund-balance-budget-plan");*/
|
||
updateBudgetPlanTotal("input-changeable-capital-interest-budget-plan","input-total-capital-interest-budget-plan");
|
||
updateBudgetPlanTotal("input-changeable-underwritten-plan-budget-plan","input-total-underwritten-plan-budget-plan");
|
||
updateBudgetPlanTotal("input-changeable-repayment-plan-budget-plan","input-total-repayment-plan-budget-plan");
|
||
|
||
//更新余额
|
||
updateEachFundBalance();
|
||
//更新垫资计划
|
||
updateEachUnderwrittenPlan();
|
||
//更新回款计划
|
||
updateEachRepaymentPlan();
|
||
//更新资金利息
|
||
updateEachCapitalInterest();
|
||
|
||
});
|
||
}
|
||
|
||
function bindChangeableInputBudgetPlanDetail() {
|
||
//设备支出改变
|
||
$(".input-changeable-device-cost-budget-plan").change(function () {
|
||
var deviceCost = parseFloat($(this).val());
|
||
//找到对应的工程支出、经营性支出、保证金支出
|
||
var engineerCost = parseFloat($(this).parent().parent().find(".input-changeable-engineer-cost-budget-plan").val());
|
||
var projectManageCost = parseFloat($(this).parent().parent().find(".input-changeable-project-manage-cost-budget-plan").val());
|
||
var earnestMoneyCost = parseFloat($(this).parent().parent().find(".input-changeable-earnest-money-cost-budget-plan").val());
|
||
console.log(deviceCost,engineerCost,projectManageCost,earnestMoneyCost);
|
||
|
||
//更新本月所有项支出
|
||
$(this).parent().parent().find(".input-changeable-total-cost-budget-plan").val(deviceCost+engineerCost+projectManageCost+earnestMoneyCost);
|
||
//更新所有月设备支出总额
|
||
updateBudgetPlanTotal("input-changeable-device-cost-budget-plan","input-total-device-cost-budget-plan");
|
||
//更新所有月支出总额
|
||
updateBudgetPlanTotal("input-changeable-total-cost-budget-plan","input-total-total-cost-budget-plan");
|
||
//更新余额
|
||
updateEachFundBalance();
|
||
//更新垫资计划
|
||
updateEachUnderwrittenPlan();
|
||
//更新回款计划
|
||
updateEachRepaymentPlan();
|
||
//更新资金利息
|
||
updateEachCapitalInterest();
|
||
});
|
||
//工程支出改变
|
||
$(".input-changeable-engineer-cost-budget-plan").change(function () {
|
||
var engineerCost = parseFloat($(this).val());
|
||
//找到对应的设备支出、经营性支出、保证金支出
|
||
var deviceCost = parseFloat($(this).parent().parent().find(".input-changeable-device-cost-budget-plan").val());
|
||
var projectManageCost = parseFloat($(this).parent().parent().find(".input-changeable-project-manage-cost-budget-plan").val());
|
||
var earnestMoneyCost = parseFloat($(this).parent().parent().find(".input-changeable-earnest-money-cost-budget-plan").val());
|
||
console.log(deviceCost,engineerCost,projectManageCost,earnestMoneyCost);
|
||
|
||
//更新本月所有项支出
|
||
$(this).parent().parent().find(".input-changeable-total-cost-budget-plan").val(deviceCost+engineerCost+projectManageCost+earnestMoneyCost);
|
||
//更新所有月工程支出总额
|
||
updateBudgetPlanTotal("input-changeable-engineer-cost-budget-plan","input-total-engineer-cost-budget-plan");
|
||
//更新所有月支出总额
|
||
updateBudgetPlanTotal("input-changeable-total-cost-budget-plan","input-total-total-cost-budget-plan");
|
||
//更新余额
|
||
updateEachFundBalance();
|
||
//更新垫资计划
|
||
updateEachUnderwrittenPlan();
|
||
//更新回款计划
|
||
updateEachRepaymentPlan();
|
||
//更新资金利息
|
||
updateEachCapitalInterest();
|
||
});
|
||
//经营性支出改变
|
||
$(".input-changeable-project-manage-cost-budget-plan").change(function () {
|
||
var projectManageCost = parseFloat($(this).val());
|
||
//找到对应的设备支出、工程支出、保证金支出
|
||
var deviceCost = parseFloat($(this).parent().parent().find(".input-changeable-device-cost-budget-plan").val());
|
||
var engineerCost = parseFloat($(this).parent().parent().find(".input-changeable-engineer-cost-budget-plan").val());
|
||
var earnestMoneyCost = parseFloat($(this).parent().parent().find(".input-changeable-earnest-money-cost-budget-plan").val());
|
||
console.log(deviceCost,engineerCost,projectManageCost,earnestMoneyCost);
|
||
|
||
//更新本月所有项支出
|
||
$(this).parent().parent().find(".input-changeable-total-cost-budget-plan").val(deviceCost+engineerCost+projectManageCost+earnestMoneyCost);
|
||
//更新所有月经营性支出总额
|
||
updateBudgetPlanTotal("input-changeable-project-manage-cost-budget-plan","input-total-project-manage-cost-budget-plan");
|
||
//更新所有月支出总额
|
||
updateBudgetPlanTotal("input-changeable-total-cost-budget-plan","input-total-total-cost-budget-plan");
|
||
//更新余额
|
||
updateEachFundBalance();
|
||
//更新垫资计划
|
||
updateEachUnderwrittenPlan();
|
||
//更新回款计划
|
||
updateEachRepaymentPlan();
|
||
//更新资金利息
|
||
updateEachCapitalInterest();
|
||
});
|
||
//保证金改变
|
||
$(".input-changeable-earnest-money-cost-budget-plan").change(function () {
|
||
var earnestMoneyCost = parseFloat($(this).val());
|
||
//找到对应的设备支出、经营性支出、保证金支出
|
||
var deviceCost = parseFloat($(this).parent().parent().find(".input-changeable-device-cost-budget-plan").val());
|
||
var engineerCost = parseFloat($(this).parent().parent().find(".input-changeable-engineer-cost-budget-plan").val());
|
||
var projectManageCost = parseFloat($(this).parent().parent().find(".input-changeable-project-manage-cost-budget-plan").val());
|
||
console.log(deviceCost,engineerCost,projectManageCost,earnestMoneyCost);
|
||
|
||
//更新本月所有项支出
|
||
$(this).parent().parent().find(".input-changeable-total-cost-budget-plan").val(deviceCost+engineerCost+projectManageCost+earnestMoneyCost);
|
||
//更新所有月保证金支出总额
|
||
updateBudgetPlanTotal("input-changeable-earnest-money-cost-budget-plan","input-total-earnest-money-cost-budget-plan");
|
||
//更新所有月支出总额
|
||
updateBudgetPlanTotal("input-changeable-total-cost-budget-plan","input-total-total-cost-budget-plan");
|
||
//更新余额
|
||
updateEachFundBalance();
|
||
//更新垫资计划
|
||
updateEachUnderwrittenPlan();
|
||
//更新回款计划
|
||
updateEachRepaymentPlan();
|
||
//更新资金利息
|
||
updateEachCapitalInterest();
|
||
});
|
||
|
||
//销售收款改变
|
||
$(".input-changeable-sale-income-budget-plan").change(function () {
|
||
var saleIncome = parseFloat($(this).val());
|
||
//找到保证金收款
|
||
var earnestMoneyIncome = parseFloat($(this).parent().parent().find(".input-changeable-earnest-money-income-budget-plan").val());
|
||
console.log(saleIncome, earnestMoneyIncome);
|
||
|
||
//更新本月所有项收入
|
||
$(this).parent().parent().find(".input-changeable-total-income-budget-plan").val(saleIncome+earnestMoneyIncome);
|
||
//更新所有月销售收款总额
|
||
updateBudgetPlanTotal("input-changeable-sale-income-budget-plan","input-total-sale-income-budget-plan");
|
||
//更新所有月收入总额
|
||
updateBudgetPlanTotal("input-changeable-total-income-budget-plan","input-total-total-income-budget-plan");
|
||
//更新余额
|
||
updateEachFundBalance();
|
||
//更新垫资计划
|
||
updateEachUnderwrittenPlan();
|
||
//更新回款计划
|
||
updateEachRepaymentPlan();
|
||
//更新资金利息
|
||
updateEachCapitalInterest();
|
||
});
|
||
//保证金收款改变
|
||
$(".input-changeable-earnest-money-income-budget-plan").change(function () {
|
||
var earnestMoneyIncome = parseFloat($(this).val());
|
||
//找到保证金收款
|
||
var saleIncome = parseFloat($(this).parent().parent().find(".input-changeable-sale-income-budget-plan").val());
|
||
console.log(saleIncome, earnestMoneyIncome);
|
||
|
||
//更新本月所有项收入
|
||
$(this).parent().parent().find(".input-changeable-total-income-budget-plan").val(saleIncome+earnestMoneyIncome);
|
||
//更新所有月保证金收款总额
|
||
updateBudgetPlanTotal("input-changeable-earnest-money-income-budget-plan","input-total-earnest-money-income-budget-plan");
|
||
//更新所有月收入总额
|
||
updateBudgetPlanTotal("input-changeable-total-income-budget-plan","input-total-total-income-budget-plan");
|
||
//更新余额
|
||
updateEachFundBalance();
|
||
//更新垫资计划
|
||
updateEachUnderwrittenPlan();
|
||
//更新回款计划
|
||
updateEachRepaymentPlan();
|
||
//更新资金利息
|
||
updateEachCapitalInterest();
|
||
});
|
||
|
||
|
||
/*//资金余额改变
|
||
$(".input-changeable-fund-balance-budget-plan").change(function () {
|
||
updateBudgetPlanTotal("input-changeable-fund-balance-budget-plan","input-total-fund-balance-budget-plan");
|
||
});*/
|
||
//资金利息改变
|
||
$(".input-changeable-capital-interest-budget-plan").change(function () {
|
||
updateBudgetPlanTotal("input-changeable-capital-interest-budget-plan","input-total-capital-interest-budget-plan");
|
||
});
|
||
//垫资计划改变
|
||
$(".input-changeable-underwritten-plan-budget-plan").change(function () {
|
||
updateBudgetPlanTotal("input-changeable-underwritten-plan-budget-plan","input-total-underwritten-plan-budget-plan");
|
||
});
|
||
//还款计划改变
|
||
$(".input-changeable-repayment-plan-budget-plan").change(function () {
|
||
updateBudgetPlanTotal("input-changeable-repayment-plan-budget-plan","input-total-repayment-plan-budget-plan");
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 更新每列的总计
|
||
*/
|
||
function updateBudgetPlanTotal(className, totalClassName) {
|
||
var total = 0;
|
||
//找到本列所有的
|
||
$("."+className).each(function (t) {
|
||
total += parseFloat($(this).val());
|
||
});
|
||
|
||
$("."+totalClassName).val(total);
|
||
}
|
||
|
||
/**
|
||
* 更新每一行【即每个月】的资金余额
|
||
* 每个月的余额=本月收入-支出+上月余额
|
||
*/
|
||
function updateEachFundBalance() {
|
||
var fundBalance = 0;
|
||
//找到每个月的资金余额输入框
|
||
$(".input-changeable-fund-balance-budget-plan").each(function (t) {
|
||
//找到当前月的收入和支出
|
||
var income = parseFloat($(this).parent().parent().find(".input-changeable-total-income-budget-plan").val());
|
||
var cost = parseFloat($(this).parent().parent().find(".input-changeable-total-cost-budget-plan").val());
|
||
//我的上月余额
|
||
var prevFundBalance = parseFloat($(this).parent().parent().prev("tr").find(".input-changeable-fund-balance-budget-plan").val());
|
||
if(!prevFundBalance){
|
||
//第一个月的话,上月余额就为0
|
||
prevFundBalance = 0;
|
||
}
|
||
fundBalance = income - cost + prevFundBalance;
|
||
$(this).val(fundBalance);
|
||
});
|
||
|
||
//总余额=最后一个月的余额
|
||
$(".input-total-fund-balance-budget-plan").val(fundBalance);
|
||
}
|
||
|
||
|
||
/**
|
||
* 更新每一行【即每个月】的垫资计划
|
||
*/
|
||
function updateEachUnderwrittenPlan() {
|
||
var total = 0;
|
||
//找到每个月的垫资计划输入框
|
||
$(".input-changeable-underwritten-plan-budget-plan").each(function (t) {
|
||
//找到当前月的收入和支出
|
||
var income = parseFloat($(this).parent().parent().find(".input-changeable-total-income-budget-plan").val());
|
||
var cost = parseFloat($(this).parent().parent().find(".input-changeable-total-cost-budget-plan").val());
|
||
//我的上月余额
|
||
var prevFundBalance = parseFloat($(this).parent().parent().prev("tr").find(".input-changeable-fund-balance-budget-plan").val());
|
||
if(!prevFundBalance){
|
||
//第一个月的话,上月余额就为0
|
||
prevFundBalance = 0;
|
||
}
|
||
|
||
var underwrittenPlan = calUnderwrittenPlan(income, cost, prevFundBalance);
|
||
|
||
total += underwrittenPlan;
|
||
|
||
$(this).val(underwrittenPlan);
|
||
});
|
||
|
||
//总垫资计划=所有月累加
|
||
$(".input-total-underwritten-plan-budget-plan").val(total);
|
||
}
|
||
|
||
/**
|
||
* 计算垫资计划
|
||
* @param income 收入
|
||
* @param cost 支出
|
||
* @param prevFundBalance 上月余额
|
||
*/
|
||
function calUnderwrittenPlan(income, cost, prevFundBalance) {
|
||
var underwrittenPlan = 0;
|
||
|
||
if(!income || !cost){
|
||
//数据还不全的时候
|
||
underwrittenPlan = NaN;
|
||
}else {
|
||
|
||
if (income - cost >= 0) {
|
||
underwrittenPlan = 0;
|
||
} else {
|
||
if (prevFundBalance < 0) {
|
||
underwrittenPlan = cost - income;
|
||
} else {
|
||
if (prevFundBalance <= cost - income) {
|
||
underwrittenPlan = cost - income - prevFundBalance;
|
||
} else {
|
||
underwrittenPlan = 0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return underwrittenPlan;
|
||
}
|
||
|
||
/**
|
||
* 更新每一行【即每个月】的还款计划
|
||
*/
|
||
function updateEachRepaymentPlan() {
|
||
var total = 0;
|
||
//找到每个月的回款计划输入框
|
||
$(".input-changeable-repayment-plan-budget-plan").each(function (t) {
|
||
//找到当前月的收入和支出
|
||
var income = parseFloat($(this).parent().parent().find(".input-changeable-total-income-budget-plan").val());
|
||
var cost = parseFloat($(this).parent().parent().find(".input-changeable-total-cost-budget-plan").val());
|
||
//我的上月余额
|
||
var prevFundBalance = parseFloat($(this).parent().parent().prev("tr").find(".input-changeable-fund-balance-budget-plan").val());
|
||
if(!prevFundBalance){
|
||
//第一个月的话,上月余额就为0
|
||
prevFundBalance = 0;
|
||
}
|
||
|
||
|
||
var repaymentPlan = calRepaymentPlan(income, cost, prevFundBalance);
|
||
|
||
total += repaymentPlan;
|
||
|
||
$(this).val(repaymentPlan);
|
||
|
||
});
|
||
|
||
//总回款计划=所有月累加
|
||
$(".input-total-repayment-plan-budget-plan").val(total);
|
||
}
|
||
|
||
/**
|
||
* 计算回款计划
|
||
* @param income 收入
|
||
* @param cost 支出
|
||
* @param prevFundBalance 上月余额
|
||
*/
|
||
function calRepaymentPlan(income, cost, prevFundBalance) {
|
||
var repaymentPlan = 0;
|
||
|
||
if(!income || !cost){
|
||
//数据还不全的时候
|
||
repaymentPlan = NaN;
|
||
}else {
|
||
if(income - cost <= 0){
|
||
repaymentPlan = 0;
|
||
}else {
|
||
if(prevFundBalance >= 0){
|
||
repaymentPlan = 0;
|
||
}else {
|
||
if(income - cost <= -prevFundBalance){
|
||
repaymentPlan = income - cost;
|
||
}else {
|
||
repaymentPlan = -prevFundBalance;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return repaymentPlan;
|
||
}
|
||
|
||
/**
|
||
* 更新每一行【即每个月】的资金利息
|
||
*/
|
||
function updateEachCapitalInterest() {
|
||
var total = 0;
|
||
//找到每个月的资金利息输入框
|
||
$(".input-changeable-capital-interest-budget-plan").each(function (t) {
|
||
//找到当前月的垫资计划
|
||
var underwrittenPlan = parseFloat($(this).parent().parent().find(".input-changeable-underwritten-plan-budget-plan").val());
|
||
var capitalInterest = underwrittenPlan*0.0566/12;
|
||
total += capitalInterest;
|
||
|
||
$(this).val(capitalInterest);
|
||
|
||
});
|
||
|
||
//总资金利息=所有月累加
|
||
$(".input-total-capital-interest-budget-plan").val(total);
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* 更新页面收入的数据
|
||
*/
|
||
function updateBudgetPlanDetailData(details) {
|
||
} |