/** * 一个资金计划的字段 */ 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 = '\n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' '; $("#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) { }