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 5cfdbee..fdd6736 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -176,17 +176,17 @@ public class ProjectController extends BaseController{ @ResponseBody public ResponseMsg budgetEditSaveIncomeDetail(@RequestBody String body) { JSONObject jsonObject = JSON.parseObject(body); - JSONArray incomeDetails = jsonObject.getJSONArray("incomeDetails"); - List incomeDetailList = new ArrayList<>(incomeDetails.size()); - for (int i = 0; i < incomeDetails.size(); i++) { - ProjectBudgetIncomeDetail incomeDetail = incomeDetails.getObject(i, ProjectBudgetIncomeDetail.class); - incomeDetailList.add(incomeDetail); + JSONArray details = jsonObject.getJSONArray("details"); + List detailList = new ArrayList<>(details.size()); + for (int i = 0; i < details.size(); i++) { + ProjectBudgetIncomeDetail incomeDetail = details.getObject(i, ProjectBudgetIncomeDetail.class); + detailList.add(incomeDetail); } Project project = projectService.getProject(jsonObject.getInteger("projectId")); projectBudgetService.clearBudgetIncomeDetail(project); - projectBudgetService.saveBudgetIncomeDetail(project, incomeDetailList); + projectBudgetService.saveBudgetIncomeDetail(project, detailList); return ResponseMsg.buildSuccessMsg("成功"); } @@ -194,19 +194,20 @@ public class ProjectController extends BaseController{ * 保存成本明细 */ @RequestMapping("/budgetEditSaveCostDetail") + @ResponseBody public ResponseMsg budgetEditSaveCostDetail(@RequestBody String body) { JSONObject jsonObject = JSON.parseObject(body); - JSONArray costDetails = jsonObject.getJSONArray("costDetails"); - List costDetailList = new ArrayList<>(costDetails.size()); - for (int i = 0; i < costDetails.size(); i++) { - ProjectBudgetCostDetail costDetail = costDetails.getObject(i, ProjectBudgetCostDetail.class); - costDetailList.add(costDetail); + JSONArray details = jsonObject.getJSONArray("details"); + List detailList = new ArrayList<>(details.size()); + for (int i = 0; i < details.size(); i++) { + ProjectBudgetCostDetail costDetail = details.getObject(i, ProjectBudgetCostDetail.class); + detailList.add(costDetail); } Project project = projectService.getProject(jsonObject.getInteger("projectId")); projectBudgetService.clearBudgetCostDetail(project); - projectBudgetService.saveBudgetCostDetail(project, costDetailList); + projectBudgetService.saveBudgetCostDetail(project, detailList); return ResponseMsg.buildSuccessMsg("成功"); } @@ -214,19 +215,20 @@ public class ProjectController extends BaseController{ * 保存项目管理成本明细 */ @RequestMapping("/budgetEditSaveCostProjectManageDetail") + @ResponseBody public ResponseMsg budgetEditSaveCostProjectManageDetail(@RequestBody String body) { JSONObject jsonObject = JSON.parseObject(body); - JSONArray costDetails = jsonObject.getJSONArray("costProjectManageDetails"); - List costDetailList = new ArrayList<>(costDetails.size()); - for (int i = 0; i < costDetails.size(); i++) { - ProjectBudgetCostProjectManageDetail costDetail = costDetails.getObject(i, ProjectBudgetCostProjectManageDetail.class); - costDetailList.add(costDetail); + JSONArray details = jsonObject.getJSONArray("details"); + List detailList = new ArrayList<>(details.size()); + for (int i = 0; i < details.size(); i++) { + ProjectBudgetCostProjectManageDetail costDetail = details.getObject(i, ProjectBudgetCostProjectManageDetail.class); + detailList.add(costDetail); } Project project = projectService.getProject(jsonObject.getInteger("projectId")); projectBudgetService.clearBudgetCostProjectManageDetail(project); - projectBudgetService.saveBudgetCostProjectManageDetail(project, costDetailList); + projectBudgetService.saveBudgetCostProjectManageDetail(project, detailList); return ResponseMsg.buildSuccessMsg("成功"); } diff --git a/src/main/resources/static/assets/js/project_budget.js b/src/main/resources/static/assets/js/project_budget.js index f204fc1..67cea2b 100644 --- a/src/main/resources/static/assets/js/project_budget.js +++ b/src/main/resources/static/assets/js/project_budget.js @@ -34,37 +34,81 @@ function arr2Object(arr, mapArr) { return obj; } + +/** + * 收集收入明细的数据,因为动态添加的行modal无法识别,所以自己来收集 + * @returns {Array} + */ +function collectData(className) { + var a= []; + $("." + className).each(function (t) { + a.push($(this).val()); + }); + return a; +} + +/** + * 绑定每一行的删除事件,删除当前的一行tr + */ +function bindDeleteBtn() { + $(".am-modal-line-delete").click(function () { + //删除自己对应的tr + $(this).parent().parent().remove(); + }); +} /** * 一个收入详情的字段 */ INCOME_DETAIL_ARR=["type","name","unit","amount","price","taxRate","totalTaxInclude","totalTaxExclude"]; +/** + * 一个采购成本详情的字段 + */ +COST_DETAIL_ARR=["type","category","name","unit","amount","price","taxRate","totalTaxInclude","totalTaxExclude"]; /** - * 保存收入明细数据 + * 将页面收集到的数据转换为ajax请求的数据【一维数组转换为对象数组】 + * @param data + * @param detailPropertyArr + * @returns {Array} */ -function saveIncomeDetail(url, data, projectId) { - if(Array.isArray(data) && data.length != 0){ - var incomeDetails = convertIncomeDetail(data); - var da = { - "incomeDetails":incomeDetails, - "projectId":projectId - }; - console.log(da); - $.ajax({ - url: url, - data: JSON.stringify(da), - type: "post", - dataType: "json", - contentType:"application/json", - async: false, - success: function (d) { - console.log(d); - updateIncomeData(incomeDetails); - } - }); +function convertDetail(data,detailPropertyArr) { + var arr = arrayToMatrix(data,detailPropertyArr.length); + + var details = []; + for (var i=0;i设备'+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''; + $("#costTable").append(template); + //重新绑定删除事件和input修改事件 + bindDeleteBtn(); + bindChangeableInput(); +} +/** + * 更新页面收入的数据【累加】 + */ +function updateCostData(details) { + var deviceTaxInclude = 0; + var deviceTaxExclude = 0; + var buildTaxInclude = 0; + var buildTaxExclude = 0; + var serviceTaxInclude = 0; + var serviceTaxExclude = 0; + var otherTaxInclude = 0; + var otherTaxExclude = 0; + details.forEach(function (t, number, ts) { + if(t["type"] == "1"){ + //设备类 + deviceTaxInclude += parseFloat(t["totalTaxInclude"]); + deviceTaxExclude += parseFloat(t["totalTaxExclude"]); + }else if(t["type"] == "2"){ + //施工类 + buildTaxInclude += parseFloat(t["totalTaxInclude"]); + buildTaxExclude += parseFloat(t["totalTaxExclude"]); + }else if(t["type"] == "3"){ + //服务类 + serviceTaxInclude += parseFloat(t["totalTaxInclude"]); + serviceTaxExclude += parseFloat(t["totalTaxExclude"]); + }else if(t["type"] == "4"){ + //其他类 + otherTaxInclude += parseFloat(t["totalTaxInclude"]); + otherTaxExclude += parseFloat(t["totalTaxExclude"]); + } + }); + $("input[name='costPurchaseDeviceTaxInclude']").val(deviceTaxInclude); + $("input[name='costPurchaseDeviceTaxExclude']").val(deviceTaxExclude); + $("input[name='costPurchaseBuildTaxInclude']").val(buildTaxInclude); + $("input[name='costPurchaseBuildTaxExclude']").val(buildTaxExclude); + $("input[name='costPurchaseServiceTaxInclude']").val(serviceTaxInclude); + $("input[name='costPurchaseServiceTaxExclude']").val(serviceTaxExclude); + $("input[name='costPurchaseOtherTaxInclude']").val(otherTaxInclude); + $("input[name='costPurchaseOtherTaxExclude']").val(otherTaxExclude); + + var costOtherOtherTaxInclude = parseFloat($("input[name='costOtherOtherTaxInclude']").val()); + var costOtherOtherTaxExclude = parseFloat($("input[name='costOtherOtherTaxExclude']").val()); + + var costProjectManageTaxExclude = parseFloat($("input[name='costProjectManageTaxExclude']").val()); + + $("input[name='costTotalTaxInclude']").val(deviceTaxInclude+buildTaxInclude+serviceTaxInclude+otherTaxInclude+costOtherOtherTaxInclude); + $("input[name='costTotalTaxExclude']").val(deviceTaxExclude+buildTaxExclude+serviceTaxExclude+otherTaxExclude+costOtherOtherTaxExclude+costProjectManageTaxExclude); +} + +function bindOtherOtherChangeable() { + $("input[name='costOtherOtherTaxInclude']").change(function () { + var costPurchaseDeviceTaxInclude = parseFloat($("input[name='costPurchaseDeviceTaxInclude']").val()); + var costPurchaseBuildTaxInclude = parseFloat($("input[name='costPurchaseBuildTaxInclude']").val()); + var costPurchaseServiceTaxInclude = parseFloat($("input[name='costPurchaseServiceTaxInclude']").val()); + var costPurchaseOtherTaxInclude = parseFloat($("input[name='costPurchaseOtherTaxInclude']").val()); + + var costOtherOther = parseFloat($(this).val()); + + $("input[name='costTotalTaxInclude']").val(costPurchaseDeviceTaxInclude+costPurchaseBuildTaxInclude+costPurchaseServiceTaxInclude+costPurchaseOtherTaxInclude+costOtherOther); + }); + + $("input[name='costOtherOtherTaxExclude']").change(function () { + var costPurchaseDeviceTaxExclude = parseFloat($("input[name='costPurchaseDeviceTaxExclude']").val()); + var costPurchaseBuildTaxExclude = parseFloat($("input[name='costPurchaseBuildTaxExclude']").val()); + var costPurchaseServiceTaxExclude = parseFloat($("input[name='costPurchaseServiceTaxExclude']").val()); + var costPurchaseOtherTaxExclude = parseFloat($("input[name='costPurchaseOtherTaxExclude']").val()); + + var costProjectManageTaxExclude = parseFloat($("input[name='costProjectManageTaxExclude']").val()); + var costOtherOther = parseFloat($(this).val()); + + $("input[name='costTotalTaxExclude']").val(costPurchaseDeviceTaxExclude+costPurchaseBuildTaxExclude+costPurchaseServiceTaxExclude+costPurchaseOtherTaxExclude+costProjectManageTaxExclude+costOtherOther); + }); } \ No newline at end of file diff --git a/src/main/resources/templates/admin/project_budget_edit.ftl b/src/main/resources/templates/admin/project_budget_edit.ftl index 4a33a28..c02c01a 100644 --- a/src/main/resources/templates/admin/project_budget_edit.ftl +++ b/src/main/resources/templates/admin/project_budget_edit.ftl @@ -18,7 +18,7 @@
-
项目概算表 / ${project.name}
+
项目预算表 / ${project.name}
@@ -228,8 +228,8 @@ 成本 - 采购成本明细表 - 项目管理成本表 + 采购成本明细表 + 项目管理成本表 @@ -243,55 +243,55 @@ - - + + - - + + - + - - + + - + - - + + - - + +
成本 采购成本 设备
成本 采购成本 施工
成本 采购成本 服务
成本 采购成本 其他
成本 项目管理成本 项目管理成本 <#---->/
成本 其他 其他
合计
管理 - 资金计划表 + 资金计划表 @@ -406,6 +406,7 @@ + <#--收入明细表弹窗-->
新增销售收入明细表——${project.name}
@@ -456,6 +457,77 @@
+ <#--采购成本明细弹窗--> +
+
+
新增采购成本明细表——${project.name}
+
+
+ + + + + + + + + + + + + + + <#if costDetails??> + <#list costDetails as costDetail> + + + + + + + + + + + + + + + + +
大类类别名称单位数量单价税率(%)含税总金额(元)不含税金额(元)操作
+ + + +
+ +
+ +
+ + + + + + + @@ -473,6 +545,12 @@