diff --git a/src/main/java/cn/palmte/work/bean/BudgetBean.java b/src/main/java/cn/palmte/work/bean/BudgetBean.java index 1f56638..cba21c5 100644 --- a/src/main/java/cn/palmte/work/bean/BudgetBean.java +++ b/src/main/java/cn/palmte/work/bean/BudgetBean.java @@ -7,6 +7,14 @@ import java.math.BigDecimal; * @author xiongshiyan at 2021/11/1 , contact me with email yanshixiong@126.com or phone 15208384257 */ public class BudgetBean extends IncomeCostBean{ + /** + * 总的采购成本不含税 + */ + private BigDecimal costPurchaseTotalTaxExclude; + /** + * 总的采购成本含税 + */ + private BigDecimal costPurchaseTotalTaxInclude; /** * null就返回0 */ @@ -14,4 +22,20 @@ public class BudgetBean extends IncomeCostBean{ protected BigDecimal handleSpecial(BigDecimal src) { return null == src ? new BigDecimal(0) : src; } + + public BigDecimal getCostPurchaseTotalTaxExclude() { + return handleSpecial(costPurchaseTotalTaxExclude); + } + + public void setCostPurchaseTotalTaxExclude(BigDecimal costPurchaseTotalTaxExclude) { + this.costPurchaseTotalTaxExclude = costPurchaseTotalTaxExclude; + } + + public BigDecimal getCostPurchaseTotalTaxInclude() { + return handleSpecial(costPurchaseTotalTaxInclude); + } + + public void setCostPurchaseTotalTaxInclude(BigDecimal costPurchaseTotalTaxInclude) { + this.costPurchaseTotalTaxInclude = costPurchaseTotalTaxInclude; + } } diff --git a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java index 3c462c6..8392ae9 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -177,6 +177,10 @@ public class ProjectController extends BaseController { Project project = projectService.getProject(id); model.put("project", project); + model.put("planStartStr", project.getPlanStartStr()); + model.put("planStartDate", project.getPlanStartStr()); + model.put("planEndStr", project.getPlanEndStr()); + model.put("planEndDate", project.getPlanEndStr()); EstimateBean estimateBean = projectEstimateService.getEstimate(project); model.put("estimateBean", estimateBean); @@ -188,12 +192,15 @@ public class ProjectController extends BaseController { //收入明细 List budgetIncomeDetail = projectBudgetService.getBudgetIncomeDetail(project); model.put("incomeDetails", budgetIncomeDetail); + model.put("incomeTotalAmount", projectBudgetService.getBudgetIncomeAmount(project)); //成本明细 List budgetCostDetail = projectBudgetService.getBudgetCostDetail(project); model.put("costDetails", budgetCostDetail); + model.put("costTotalAmount", projectBudgetService.getBudgetCostAmount(project)); //项目管理成本明细 List budgetCostProjectManageDetail = projectBudgetService.getBudgetCostProjectManageDetail(project); model.put("costProjectManageDetails", budgetCostProjectManageDetail); + model.put("costProjectManageTotalAmount", projectBudgetService.getBudgetCostProjectManageAmount(project)); List projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(project); //资金计划明细 model.put("projectBudgetPlanDetails", projectBudgetPlanDetails); diff --git a/src/main/java/cn/palmte/work/model/Project.java b/src/main/java/cn/palmte/work/model/Project.java index f1d361c..39147f6 100644 --- a/src/main/java/cn/palmte/work/model/Project.java +++ b/src/main/java/cn/palmte/work/model/Project.java @@ -167,6 +167,12 @@ public class Project { @Temporal(TemporalType.TIMESTAMP) private Date lastUpdateTime; + @Column(name = "plan_start_str") + private String planStartStr; + + @Column(name = "plan_end_str") + private String planEndStr; + public int getId() { return id; } @@ -454,4 +460,20 @@ public class Project { public String getEndDateYM(){ return DatetimeUtils.toStr(this.endDate,"yyyy-MM"); } + + public String getPlanStartStr() { + return planStartStr; + } + + public void setPlanStartStr(String planStartStr) { + this.planStartStr = planStartStr; + } + + public String getPlanEndStr() { + return planEndStr; + } + + public void setPlanEndStr(String planEndStr) { + this.planEndStr = planEndStr; + } } diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetCostDetailRepository.java b/src/main/java/cn/palmte/work/model/ProjectBudgetCostDetailRepository.java index 32b77e1..ca1e19a 100644 --- a/src/main/java/cn/palmte/work/model/ProjectBudgetCostDetailRepository.java +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetCostDetailRepository.java @@ -1,9 +1,12 @@ package cn.palmte.work.model; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import java.util.List; public interface ProjectBudgetCostDetailRepository extends JpaRepository { List findAllByProjectIdEquals(int id); -} + + @Query(value = "select sum(amount) from project_budget_cost_detail where project_id = ?1", nativeQuery = true) + int findAmountByProject(int projectId);} diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetCostProjectManageDetailRepository.java b/src/main/java/cn/palmte/work/model/ProjectBudgetCostProjectManageDetailRepository.java index 8918863..0ea2e46 100644 --- a/src/main/java/cn/palmte/work/model/ProjectBudgetCostProjectManageDetailRepository.java +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetCostProjectManageDetailRepository.java @@ -1,9 +1,13 @@ package cn.palmte.work.model; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import java.util.List; public interface ProjectBudgetCostProjectManageDetailRepository extends JpaRepository { List findAllByProjectIdEquals(int id); + + @Query(value = "select sum(amount) from project_budget_cost_project_manage_detail where project_id = ?1", nativeQuery = true) + int findAmountByProject(int id); } diff --git a/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeDetailRepository.java b/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeDetailRepository.java index f7a48e6..b71a391 100644 --- a/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeDetailRepository.java +++ b/src/main/java/cn/palmte/work/model/ProjectBudgetIncomeDetailRepository.java @@ -1,9 +1,13 @@ package cn.palmte.work.model; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import java.util.List; public interface ProjectBudgetIncomeDetailRepository extends JpaRepository { List findAllByProjectIdEquals(int id); + + @Query(value = "select sum(amount) from project_budget_income_detail where project_id = ?1", nativeQuery = true) + int findAmountByProject(int projectId); } diff --git a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java index 9797023..6c8ce14 100644 --- a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java +++ b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java @@ -214,6 +214,9 @@ public class ProjectBudgetService { List collectOther = projectBudgetCostDetails.stream().filter(d -> d.getType() == ProjectBudgetCostDetail.TYPE_OHTER).collect(Collectors.toList()); budgetBean.setCostPurchaseOtherTaxInclude(getCostTotalTaxInclude(collectOther)); budgetBean.setCostPurchaseOtherTaxExclude(getCostTotalTaxExclude(collectOther)); + + budgetBean.setCostPurchaseTotalTaxInclude(getCostTotalTaxInclude(collectDevice).add(getCostTotalTaxInclude(collectBuild)).add(getCostTotalTaxInclude(collectService)).add(getCostTotalTaxInclude(collectOther))); + budgetBean.setCostPurchaseTotalTaxExclude(getCostTotalTaxExclude(collectDevice).add(getCostTotalTaxExclude(collectBuild)).add(getCostTotalTaxExclude(collectService)).add(getCostTotalTaxExclude(collectOther))); } //项目管理成本 @@ -367,6 +370,12 @@ public class ProjectBudgetService { public List getBudgetIncomeDetail(Project project){ return projectBudgetIncomeDetailRepository.findAllByProjectIdEquals(project.getId()); } + /** + * 获取项目的收入总数量 + */ + public int getBudgetIncomeAmount(Project project){ + return projectBudgetIncomeDetailRepository.findAmountByProject(project.getId()); + } /** * 清空项目的成本明细 */ @@ -415,6 +424,12 @@ public class ProjectBudgetService { public List getBudgetCostDetail(Project project){ return projectBudgetCostDetailRepository.findAllByProjectIdEquals(project.getId()); } + /** + * 获取项目的成本总数量 + */ + public int getBudgetCostAmount(Project project){ + return projectBudgetCostDetailRepository.findAmountByProject(project.getId()); + } /** * 清空项目的项目管理成本明细 */ @@ -468,7 +483,12 @@ public class ProjectBudgetService { // return getFixedNotDeletable(); // } } - + /** + * 获取项目的项目管理总数量 + */ + public int getBudgetCostProjectManageAmount(Project project){ + return projectBudgetCostProjectManageDetailRepository.findAmountByProject(project.getId()); + } private List getFixedNotDeletable() { List projectManageDetails = new ArrayList<>(6); for (String fixedProjectManageDetail : fixedProjectManageDetails) { diff --git a/src/main/resources/static/assets/js/project_budget.js b/src/main/resources/static/assets/js/project_budget.js index 4eb6de1..2311e8d 100644 --- a/src/main/resources/static/assets/js/project_budget.js +++ b/src/main/resources/static/assets/js/project_budget.js @@ -338,6 +338,9 @@ function arr2ObjectVerify(line, arr, detailPropertyArr, detailProperty) { var o = detailProperty[detailPropertyArr[i]]; //空但是要求非空 if (!arr[i] && o[0]) { + if (i === detailPropertyArr.length - 1 && detailProperty !== BUDGET_PLAN_DETAIL) { + continue; + } layuiAlert("第 " + (line + 1) + " 行的 " + o[1] + " 不允许为空"); return null; } @@ -359,6 +362,9 @@ function arr2ObjectVerifyCheck(line, arr, detailPropertyArr, detailProperty, s) var o = detailProperty[detailPropertyArr[i]]; //空但是要求非空 if (!arr[i] && o[0]) { + if (i === detailPropertyArr.length - 1 && s !== "项目资金计划表") { + continue; + } layuiAlert(s + "第 " + (line + 1) + " 行的 " + o[1] + " 不允许为空"); return null; } @@ -498,6 +504,36 @@ function bindChangeableInput() { }); } +/** + * 每次更新数量,单价和税率时,更改总计中含税和不含税总金额 + * @param className + * @param totalClassName + */ +function updateTotal(className, totalClassName) { + var total = 0; + //找到本列所有的 + $("."+className).each(function (t) { + total += f2($(this).val()); + console.log("total2: " + total); + }); + $("."+totalClassName).val(f2Fixed(total)); +} + +/** + * 每次更新数量时,更新总计中数量 + * @param className + * @param totalClassName + */ +function updateAmount(className, totalClassName) { + var total = 0; + //找到本列所有的 + $("."+className).each(function (t) { + console.log(className + ": " + f2($(this).val())); + total += f2($(this).val()); + }); + $("."+totalClassName).val(total); +} + /** * 绑定序号 */ diff --git a/src/main/resources/static/assets/js/project_budget_cost.js b/src/main/resources/static/assets/js/project_budget_cost.js index 8558d71..e121aec 100644 --- a/src/main/resources/static/assets/js/project_budget_cost.js +++ b/src/main/resources/static/assets/js/project_budget_cost.js @@ -190,26 +190,50 @@ function appendTrCost() { ''+ ''+ ''+ - ''+ - ''+ - ''+ - ''+ - ''+ + ''+ + ''+ + ''+ + ''+ + ''+ ''+ ''; - $("#costTable").append(template); + $("#costTotal").before(template); //重新绑定删除事件和input修改事件 bindDeleteBtn(); //绑定序号 bindNum(); //重新绑定 bindChangeableInput(); + //绑定总计值 + bindCostTotal(); //绑定采购明细中select联动事件 bindTypeSelectChange(); //绑定数字输入框保留两位小数 bindNumberInput(); } + +/** + * 绑定每个可改变的输入框,修改后改变对应输入框的值 + */ +function bindCostTotal() { + //数量改变 + $(".input-changeable-amount-cost").change(function () { + updateAmount("input-changeable-amount-cost", "input-changeable-total-amount-cost"); + updateTotal("input-changeable-total-tax-include-cost", "input-changeable-total-total-tax-include-cost"); + updateTotal("input-changeable-total-tax-exclude-cost", "input-changeable-total-total-tax-exclude-cost"); + }); + //单价改变 + $(".input-changeable-price-cost").change(function () { + updateTotal("input-changeable-total-tax-include-cost", "input-changeable-total-total-tax-include-cost"); + updateTotal("input-changeable-total-tax-exclude-cost", "input-changeable-total-total-tax-exclude-cost"); + }); + //税率改变 + $(".input-changeable-tax-rate-cost").change(function () { + updateTotal("input-changeable-total-tax-exclude-cost", "input-changeable-total-total-tax-exclude-cost"); + }); +} + /** * 更新页面收入的数据【累加】 */ diff --git a/src/main/resources/static/assets/js/project_budget_cost_project_manage.js b/src/main/resources/static/assets/js/project_budget_cost_project_manage.js index ec31229..54270cd 100644 --- a/src/main/resources/static/assets/js/project_budget_cost_project_manage.js +++ b/src/main/resources/static/assets/js/project_budget_cost_project_manage.js @@ -129,16 +129,34 @@ function appendTrCostProjectManage() { ' ' + ' \n' + ' '; - $("#costProjectManageTable").append(template); + $("#manageTotal").before(template); //重新绑定删除事件和input修改事件 bindDeleteBtn(); //绑定序号 bindNum(); bindChangeableInputProjectManage(); + //绑定总计值 + bindCostManageTotal(); bindTypeSelectChangeManager(); //绑定数字输入框保留两位小数 bindNumberInput(); } + +/** + * 绑定每个可改变的输入框,修改后改变对应输入框的值 + */ +function bindCostManageTotal() { + //数量改变 + $(".input-changeable-amount-project-manage").change(function () { + updateAmount("input-changeable-amount-project-manage", "input-changeable-total-amount-project-manage"); + updateTotal("input-changeable-total-project-manage", "input-changeable-total-total-project-manage"); + }); + //单价改变 + $(".input-changeable-price-project-manage").change(function () { + updateTotal("input-changeable-total-project-manage", "input-changeable-total-total-project-manage"); + }); +} + /** * 大类类别联动效果 */ diff --git a/src/main/resources/static/assets/js/project_budget_income.js b/src/main/resources/static/assets/js/project_budget_income.js index 081fa5a..11729f5 100644 --- a/src/main/resources/static/assets/js/project_budget_income.js +++ b/src/main/resources/static/assets/js/project_budget_income.js @@ -138,18 +138,40 @@ function appendTrIncome() { ' \n' + ' \n' + ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + ' \n' + ' '; - $("#incomeTable").append(template); + $("#incomeTotal").before(template); //重新绑定删除事件和input修改事件 bindDeleteBtn(); bindNum(); bindChangeableInput(); + bindIncomeTotal(); //绑定数字输入框保留两位小数 bindNumberInput(); +} + +/** + * 绑定每个可改变的输入框,修改后改变对应输入框的值 + */ +function bindIncomeTotal() { + //数量改变 + $(".input-changeable-amount-income").change(function () { + updateAmount("input-changeable-amount-income", "input-changeable-total-amount-income"); + updateTotal("input-changeable-total-tax-include-income", "input-changeable-total-total-tax-include-income"); + updateTotal("input-changeable-total-tax-exclude-income", "input-changeable-total-total-tax-exclude-income"); + }); + //单价改变 + $(".input-changeable-price-income").change(function () { + updateTotal("input-changeable-total-tax-include-income", "input-changeable-total-total-tax-include-income"); + updateTotal("input-changeable-total-tax-exclude-income", "input-changeable-total-total-tax-exclude-income"); + }); + //税率改变 + $(".input-changeable-tax-rate-income").change(function () { + updateTotal("input-changeable-total-tax-exclude-income", "input-changeable-total-total-tax-exclude-income"); + }); } \ No newline at end of file diff --git a/src/main/resources/static/assets/js/project_budget_plan.js b/src/main/resources/static/assets/js/project_budget_plan.js index 077e979..e47353c 100644 --- a/src/main/resources/static/assets/js/project_budget_plan.js +++ b/src/main/resources/static/assets/js/project_budget_plan.js @@ -89,6 +89,180 @@ $(function () { }); }); +layui.use('laydate', function(){ + var laydate = layui.laydate; + + laydate.render({ + elem: '#planStartStr', + type: 'month', + btns: ['confirm'], + trigger: 'click', + ready: function(){ + console.log($(this.elem).val()); + }, + done: function() { + var time = $(this.elem).val(); + console.log("planStartStr:" + time) + appendMultiplePlan(); + $("#planStartDate").val(time); + } + }); +}); + +layui.use('laydate', function(){ + var laydate = layui.laydate; + + laydate.render({ + elem: '#planEndStr', + type: 'month', + btns: ['confirm'], + trigger: 'click', + ready: function(){ + console.log($(this.elem).val()); + }, + done: function() { + var time = $(this.elem).val(); + console.log("planEndStr:" + time); + appendMultiplePlan(); + $("#planEndDate").val(time); + } + }); +}); + +function appendMultiplePlan() { + var planStartStr = $("#planStartStr").val(); + var planEndStr = $("#planEndStr").val(); + if (planStartStr !== "" && planEndStr !== "") { + if (planStartStr > planEndStr) { + layuiAlert("开始时间不可大于结束时间"); + return; + } + var planStartDate = $("#planStartDate").val(); + var planEndDate = $("#planEndDate").val(); + var startYear = planStartStr.substring(0, 4); + var startMonth = planStartStr.substring(5, 7); + var totalStartMonth = startYear * 12 + parseInt(startMonth); + var endYear = planEndStr.substring(0, 4); + var endMonth = planEndStr.substring(5, 7); + var totalEndMonth = endYear * 12 + parseInt(endMonth); + var diff = totalEndMonth - totalStartMonth + 1; + var planIndex = 0; + if (planStartDate === "") { + while (planIndex < diff) { + appendTrBudgetPlan(); + planIndex++; + } + } else { + if (planEndDate === "") { + while (planIndex < diff) { + appendTrBudgetPlan(); + planIndex++; + } + } else { + var startYear2 = planStartDate.substring(0, 4); + var startMonth2 = planStartDate.substring(5, 7); + var totalStartMonth2 = startYear2 * 12 + parseInt(startMonth2); + var endYear2 = planEndDate.substring(0, 4); + var endMonth2 = planEndDate.substring(5, 7); + var totalEndMonth2 = endYear2 * 12 + parseInt(endMonth2); + if (totalStartMonth < totalStartMonth2) { + console.log("增加开始"); + diff = totalStartMonth2 - totalStartMonth; + while (planIndex < diff) { + appendTrBudgetPlan2(); + planIndex++; + } + } else if (totalStartMonth > totalStartMonth2) { + console.log("减少开始"); + $(".input-changeable-month-budget-plan").each(function () { + var cur = $(this).val(); + if (cur < planStartStr) { + //删除自己对应的tr + $(this).parent().parent().remove(); + delBudgetPlan(); + } + }); + } + if (totalEndMonth < totalEndMonth2) { + console.log("减少结束"); + $(".input-changeable-month-budget-plan").each(function () { + var cur = $(this).val(); + if (cur > planEndStr) { + //删除自己对应的tr + $(this).parent().parent().remove(); + delBudgetPlan(); + } + }); + } else if (totalEndMonth > totalEndMonth2) { + console.log("增加结束"); + diff = totalEndMonth - totalEndMonth2; + while (planIndex < diff) { + appendTrBudgetPlan(); + planIndex++; + } + } + } + } + } +} + +/** + * 删除现有项 + */ +function delBudgetPlan() { + + //还需要更新每一列的合计数据 + 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-earnest-money-cost-budget-plan","input-total-title-earnest-money-cost-budget-plan"); + updateBudgetPlanTotal("input-changeable-total-cost-budget-plan","input-total-total-cost-budget-plan"); + updateBudgetPlanTotal("input-changeable-total-cost-budget-plan","input-total-title-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-earnest-money-income-budget-plan","input-total-title-earnest-money-income-budget-plan"); + updateBudgetPlanTotal("input-changeable-total-income-budget-plan","input-total-total-income-budget-plan"); + updateBudgetPlanTotal("input-changeable-total-income-budget-plan","input-total-title-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-capital-interest-budget-plan","input-total-title-capital-interest-budget-plan"); + updateBudgetPlanTotal("input-changeable-underwritten-plan-budget-plan","input-total-underwritten-plan-budget-plan"); + updateBudgetPlanTotal("input-changeable-underwritten-plan-budget-plan","input-total-title-underwritten-plan-budget-plan"); + updateBudgetPlanTotal("input-changeable-repayment-plan-budget-plan","input-total-repayment-plan-budget-plan"); + updateBudgetPlanTotal("input-changeable-repayment-plan-budget-plan","input-total-title-repayment-plan-budget-plan"); + + updatePageData(); +} + +/** + * + */ +function bindMonth() { + //找到每个月的资金余额输入框 + $(".input-changeable-month-budget-plan").each(function (t) { + //找到前一个月的数据 + var prev = $(this).parent().parent().prev("tr").find(".input-changeable-month-budget-plan").val(); + if(!prev){ + //第一个月 + var startDate = $("#planStartStr").val(); + $(this).val(startDate.substring(0, 7)); + } else { + var year = prev.substring(0, 4); + var month = prev.substring(5, 7); + var totalMonth = year * 12 + parseInt(month) + 1; + var newYear = Math.floor((totalMonth - 1) / 12); + var newMonth = totalMonth % 12; + if (newMonth == 0) { + newMonth = 12; + } + if (newMonth < 10) { + newMonth = "0" + newMonth; + } + $(this).val(newYear + "-" + newMonth); + } + }); +} //保存资金计划表 $(function () { @@ -140,6 +314,11 @@ function verifyBudgetPlan(){ } } + var planStartStr = $("#planStartStr").val(); + var planEndStr = $("#planEndStr").val(); + if (planStartStr === "" || planEndStr === "") { + return "请跳入资金计划表中的开始时间和结束时间"; + } var costPurchaseDeviceTaxInclude = inputVal("costPurchaseDeviceTaxInclude"); var costPurchaseBuildTaxInclude = inputVal("costPurchaseBuildTaxInclude"); @@ -215,32 +394,36 @@ function appendTrBudgetPlan() { } /** - * + * 资金计划增加一行 */ -function bindMonth() { - //找到每个月的资金余额输入框 - $(".input-changeable-month-budget-plan").each(function (t) { - //找到前一个月的数据 - var prev = $(this).parent().parent().prev("tr").find(".input-changeable-month-budget-plan").val(); - if(!prev){ - //第一个月 - var startDate = $("#startDate").val(); - $(this).val(startDate.substring(0, 7)); - } else { - var year = prev.substring(0, 4); - var month = prev.substring(5, 7); - var totalMonth = year * 12 + parseInt(month) + 1; - var newYear = Math.floor((totalMonth - 1) / 12); - var newMonth = totalMonth % 12; - if (newMonth == 0) { - newMonth = 12; - } - if (newMonth < 10) { - newMonth = "0" + newMonth; - } - $(this).val(newYear + "-" + newMonth); - } - }); +function appendTrBudgetPlan2() { + var template = '\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' '; + $("#firstBlock").after(template); + //根据前一条数据拿到月份 + bindMonth(); + //新增的收入与支出默认为0,并更新每一列的数据 + bindBudgetPlanUpdate(); + //重新绑定删除事件和input修改事件 + bindBudgetPlanDeleteBtn(); + //绑定资金计划明细输入框 + bindChangeableInputBudgetPlanDetail(); + //绑定数字输入框保留两位小数 + bindNumberInput(); } // /** @@ -293,8 +476,16 @@ function bindBudgetPlanUpdate() { */ function bindBudgetPlanDeleteBtn() { $(".am-modal-line-delete-budget-plan").click(function () { - //删除自己对应的tr - $(this).parent().parent().remove(); + // //删除自己对应的tr + // $(this).parent().parent().remove(); + $(this).parent().parent().find(".input-changeable-device-cost-budget-plan").val(f2Fixed(0)); + $(this).parent().parent().find(".input-changeable-engineer-cost-budget-plan").val(f2Fixed(0)); + $(this).parent().parent().find(".input-changeable-project-manage-cost-budget-plan").val(f2Fixed(0)); + $(this).parent().parent().find(".input-changeable-earnest-money-cost-budget-plan").val(f2Fixed(0)); + $(this).parent().parent().find(".input-changeable-total-cost-budget-plan").val(f2Fixed(0)); + $(this).parent().parent().find(".input-changeable-sale-income-budget-plan").val(f2Fixed(0)); + $(this).parent().parent().find(".input-changeable-earnest-money-income-budget-plan").val(f2Fixed(0)); + $(this).parent().parent().find(".input-changeable-total-income-budget-plan").val(f2Fixed(0)); //还需要更新每一列的合计数据 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"); @@ -316,8 +507,6 @@ function bindBudgetPlanDeleteBtn() { updateBudgetPlanTotal("input-changeable-repayment-plan-budget-plan","input-total-repayment-plan-budget-plan"); updateBudgetPlanTotal("input-changeable-repayment-plan-budget-plan","input-total-title-repayment-plan-budget-plan"); - //根据前一条数据拿到月份 - bindMonth(); updatePageData(); }); diff --git a/src/main/resources/templates/admin/project_budget_edit.ftl b/src/main/resources/templates/admin/project_budget_edit.ftl index 8fa9b75..e32f529 100644 --- a/src/main/resources/templates/admin/project_budget_edit.ftl +++ b/src/main/resources/templates/admin/project_budget_edit.ftl @@ -397,15 +397,27 @@ - > - - - - + > + + + + + + + + + + > + + + + + + @@ -466,15 +478,28 @@ - > - - - - + > + + + + + + + + + + + > + + + + + + @@ -548,6 +573,20 @@ + + + + + + + > + + + + + + + @@ -563,6 +602,21 @@
+ + + +
+
+
+ +
+
+
+ +
+
+
+ @@ -599,7 +653,7 @@ - + @@ -639,7 +693,7 @@
- +<#-- -->