fourcal/src/main/resources/static/assets/js/project_budget_plan.js

430 lines
20 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* 一个资金计划的字段
*/
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) {
}