diff --git a/src/main/resources/static/assets/js/project_budget.js b/src/main/resources/static/assets/js/project_budget.js index bac8674..a3662ed 100644 --- a/src/main/resources/static/assets/js/project_budget.js +++ b/src/main/resources/static/assets/js/project_budget.js @@ -87,7 +87,7 @@ $(function () { //绑定总计的输入框 bindCostManageTotal(); - $("#saveDraft").click(function () { + $("#saveDraft").click(async function () { $("#saveDraft").attr('disabled', true); $("#collaboratorUrl").val($("#collaboratorUrl_span").text()); // 时间必填校验 @@ -124,10 +124,18 @@ $(function () { //如果没有提交则自动计算预算信息 dataIncome = prepareAjaxDataVerify(dataIncome, INCOME_DETAIL2, $("#id").val()); if (dataIncome.details) { - postAjax(base + "/project/budgetEditSaveIncomeDetail", dataIncome); + await postAjax(base + "/project/budgetEditSaveIncomeDetail", dataIncome); } updateIncomeDataUnsubmit(dataIncomeCheck); + // 提交收款计划表 + var dataIncomeCheck = collectData("am-modal-prompt-input-income-plan"); + var dataIncomePlan = prepareAjaxDataVerify(dataIncomeCheck, INCOME_PLAN_DETAIL, $("#id").val()); + if (dataIncomePlan.details) { + updateIncomePlanDataUnSubmit(dataIncomePlan) + await postAjax(base + "/project/budgetEditSaveIncomePlanDetail", dataIncomePlan); + } + var dataCost = collectData("am-modal-prompt-input-cost"); if (dataCost.length <= 0) { window.confirm('请填写采购成本明细表'); @@ -135,19 +143,30 @@ $(function () { return; } + + //保存采购表 var dataCostCheck = convertDetailVerifyCheck(dataCost, COST_DETAIL2, "采购成本明细表"); if (dataCostCheck == null) { $("#saveDraft").attr('disabled', false); return; } - - //如果没有提交则自动计算预算信息 dataCost = prepareAjaxDataVerify(dataCost, COST_DETAIL2, $("#id").val()); - if (dataCost) { - postAjax(base + "/project/budgetEditSaveCostDetail", dataCost); + if (dataCost.details) { + await postAjax(base + "/project/budgetEditSaveCostDetail", dataCost); } updateCostDataIfUnsubmit(dataCostCheck); + + // 保存付款计划表 + var dataPay = collectData("am-modal-prompt-input-pay"); + dataPay = prepareAjaxDataVerify(dataPay, pay_DETAIL2, $("#id").val()); + if (dataPay.details) { + updatePayDataUnSubmit(dataPay) + await postAjax(base + "/project/budgetEditSaveBudgetPayPlan", dataPay); + } + + + // 保存项目管理费用表 var dataManage = collectData("am-modal-prompt-input-cost-project-manage"); if (dataManage.length <= 0) { window.confirm('项目管理费用'); @@ -164,7 +183,7 @@ $(function () { dataManage = prepareAjaxDataVerify(dataManage, COST_PROJECT_MANAGE_DETAIL2, $("#id").val()); if (dataManage) { - postAjax(base + "/project/budgetEditSaveCostProjectManageDetail", dataManage); + await postAjax(base + "/project/budgetEditSaveCostProjectManageDetail", dataManage); } updateCostProjectManageDataUnsubmit(dataManageCheck); @@ -190,8 +209,8 @@ $(function () { // } dataPlan = prepareAjaxDataVerify(dataPlan, BUDGET_PLAN_DETAIL2, $("#id").val()); - if (dataPlan) { - postAjax(base + "/project/budgetEditSaveBudgetPlanDetail", dataPlan); + if (dataPlan.details) { + await postAjax(base + "/project/budgetEditSaveBudgetPlanDetail", dataPlan); } updateBudgetPlanDetailDataUnsubmit(); @@ -202,12 +221,6 @@ $(function () { // return; // } // console.log(message); - // 保存付款计划表 - var dataPay = collectData("am-modal-prompt-input-pay"); - dataPay = prepareAjaxDataVerify(dataPay, pay_DETAIL2, $("#id").val()); - if (dataPay) { - postAjax(base + "/project/budgetEditSaveBudgetPayPlan", dataPay); - } var startTime = $("#startDate").val(); @@ -222,14 +235,13 @@ $(function () { }, 5000); $("#pmsForm").attr("action", base + "/project/budgetEditSave"); $("#pmsForm").submit(); + + }); - $("#saveApprove").click(function () { + $("#saveApprove").click(async function () { $("#saveApprove").attr('disabled', true); $("#collaboratorUrl").val($("#collaboratorUrl_span").text()); - if (!checkprojectPlan()) { - $("#saveApprove").attr('disabled', false); - return - } + // 时间必填校验 var timeValue = $(".input-changeable-pay-time"); var timeFlag = true @@ -264,7 +276,7 @@ $(function () { //如果没有提交则自动计算预算信息 dataIncome = prepareAjaxDataVerify(dataIncome, INCOME_DETAIL, $("#id").val()); if (dataIncome.details) { - postAjax(base + "/project/budgetEditSaveIncomeDetail", dataIncome); + await postAjax(base + "/project/budgetEditSaveIncomeDetail", dataIncome); } updateIncomeDataUnsubmit(dataIncomeCheck); @@ -284,10 +296,32 @@ $(function () { //如果没有提交则自动计算预算信息 dataCost = prepareAjaxDataVerify(dataCost, COST_DETAIL, $("#id").val()); if (dataCost) { - postAjax(base + "/project/budgetEditSaveCostDetail", dataCost); + await postAjax(base + "/project/budgetEditSaveCostDetail", dataCost); } updateCostDataIfUnsubmit(dataCostCheck); + + // 提交收款计划表 + var dataIncomeCheck = collectData("am-modal-prompt-input-income-plan"); + var dataIncomePlan = prepareAjaxDataVerify(dataIncomeCheck, INCOME_PLAN_DETAIL, $("#id").val()); + if (dataIncomePlan.details) { + updateIncomePlanDataUnSubmit(dataIncomePlan) + await postAjax(base + "/project/budgetEditSaveIncomePlanDetail", dataIncomePlan); + } + + // 保存付款计划表 + var flagPay = verifyBudgetPay(1) + if (!flagPay) { + $("#saveApprove").attr('disabled', false) + return; + } + var dataPay = collectData("am-modal-prompt-input-pay"); + dataPay = prepareAjaxDataVerify(dataPay, pay_DETAIL2, $("#id").val()); + if (dataPay) { + updatePayDataUnSubmit(dataPay) + await postAjax(base + "/project/budgetEditSaveBudgetPayPlan", dataPay); + } + var dataManage = collectData("am-modal-prompt-input-cost-project-manage"); console.log("dataManage: " + dataManage.length); if (dataManage.length <= 4) { @@ -320,7 +354,7 @@ $(function () { return } if (dataManage) { - postAjax(base + "/project/budgetEditSaveCostProjectManageDetail", dataManage); + await postAjax(base + "/project/budgetEditSaveCostProjectManageDetail", dataManage); } updateCostProjectManageDataUnsubmit(dataManageCheck); @@ -348,7 +382,7 @@ $(function () { dataPlan = prepareAjaxDataVerify(dataPlan, BUDGET_PLAN_DETAIL, $("#id").val()); if (dataPlan) { - postAjax(base + "/project/budgetEditSaveBudgetPlanDetail", dataPlan); + await postAjax(base + "/project/budgetEditSaveBudgetPlanDetail", dataPlan); } updateBudgetPlanDetailDataUnsubmit(); @@ -358,16 +392,9 @@ $(function () { // layuiAlert(message); // return; // } - // 保存付款计划表 - var flagPay = verifyBudgetPay(1) - if (!flagPay) { - $("#saveApprove").attr('disabled', false) - return; - } - var dataPay = collectData("am-modal-prompt-input-pay"); - dataPay = prepareAjaxDataVerify(dataPay, pay_DETAIL2, $("#id").val()); - if (dataPay) { - postAjax(base + "/project/budgetEditSaveBudgetPayPlan", dataPay); + if (!checkprojectPlan()) { + $("#saveApprove").attr('disabled', false); + return } var startTime = $("#startDate").val(); @@ -1085,7 +1112,10 @@ function checkprojectPlan() { //根据收款计划表和付款计划表更新资金计划表日期范围 function updataCostPlanMonth(data, key) { + var laydate = layui.laydate; + if (!data.details.length) return + let nowMaxMonth = new Date($('#planEndStr').val()).getTime() let nowMinMonth = new Date($('#planStartStr').val()).getTime() let dataMonth = data.details @@ -1097,8 +1127,7 @@ function updataCostPlanMonth(data, key) { if (!nowMaxMonth || !nowMinMonth) { if (!nowMinMonth) { - layui.use('laydate', function () { - var laydate = layui.laydate; + laydate.render({ elem: '#planStartStr', type: 'month', @@ -1116,11 +1145,11 @@ function updataCostPlanMonth(data, key) { } }); - }) + } if (!nowMaxMonth) { $('#planEndStr').val(dataMonth[0][key].slice(0, 7)) - layui.use('laydate', function () { + var laydate = layui.laydate; laydate.render({ elem: '#planEndStr', @@ -1142,12 +1171,12 @@ function updataCostPlanMonth(data, key) { $("#planEndDate").val(dataMonth[0][key].slice(0, 7)); $("#planStartDate").val(dataMonth[dataMonth.length - 1][key].slice(0, 7)); - }); + } } else { if (nowMinMonth > dataMin) { - layui.use('laydate', function () { + var laydate = layui.laydate; laydate.render({ elem: '#planStartStr', @@ -1168,11 +1197,11 @@ function updataCostPlanMonth(data, key) { }); appendMultiplePlan(); $("#planStartDate").val(dataMonth[dataMonth.length - 1][key].slice(0, 7)); - }); + } if (dataMax > nowMaxMonth) { - layui.use('laydate', function () { + var laydate = layui.laydate; laydate.render({ elem: '#planEndStr', @@ -1184,6 +1213,7 @@ function updataCostPlanMonth(data, key) { }, done: function () { + var time = $(this.elem).val(); appendMultiplePlan(); $("#planEndDate").val(time); @@ -1192,10 +1222,83 @@ function updataCostPlanMonth(data, key) { }); appendMultiplePlan(); $("#planEndDate").val(dataMonth[0][key].slice(0, 7)); - }); + } } } +function updateIncomePlanDataUnSubmit(data, returnData) { + updataCostPlanMonth(data, 'receiveTime') + $('.input-changeable-sale-income-budget-plan').val(0) + $('.input-changeable-sale-income-budget-plan').each((index, ele) => { + let time = $(ele).parent().parent().find('.input-changeable-month-budget-plan').val() + let total = 0 + data.details.forEach((ele) => { + + if (time == ele.receiveTime.slice(0, 7)) + total += ele.receiveAmount + }) + $(ele).val(total) + var eventChange = new Event('change', {bubbles: true}); + ele.dispatchEvent(eventChange); + updateTotal('input-changeable-sale-income-budget-plan', 'input-total-title-sale-income-budget-plan') + + }) + $('#my-prompt-income-plan-detail').modal('close'); +} + +function updatePayDataUnSubmit(data) { + updataCostPlanMonth(data, 'payTime') + // 更新资金计划表数据 + $('.input-changeable-device-cost-budget-plan').val(0) + $('.input-changeable-project-cost-budget-plan').val(0) + $('.input-changeable-service-cost-budget-plan').val(0) + $('.input-changeable-other-cost-budget-plan').val(0) + data.details.forEach((ele) => { + let time = ele.payTime.slice(0, 7) + let type = ele.payProject + switch (type) { + case 1: + var input = $(`#tab6 .input-changeable-month-budget-plan[value="${time}"]`).parent().parent().find('.input-changeable-device-cost-budget-plan').get(0) + var val = parseFloat($(input).val()) + $(input).val(f2(ele.payAmount + val)) + break; + case 2: + var input = $(`#tab6 .input-changeable-month-budget-plan[value="${time}"]`).parent().parent().find('.input-changeable-project-cost-budget-plan') + var val = parseFloat($(input).val()) + $(input).val(f2(ele.payAmount + val)) + break; + case 3: + var input = $(`#tab6 .input-changeable-month-budget-plan[value="${time}"]`).parent().parent().find('.input-changeable-service-cost-budget-plan') + var val = parseFloat($(input).val()) + $(input).val(f2(ele.payAmount + val)) + break; + case 4: + var input = $(`#tab6 .input-changeable-month-budget-plan[value="${time}"]`).parent().parent().find('.input-changeable-other-cost-budget-plan') + var val = parseFloat($(input).val()) + $(input).val(f2(ele.payAmount + val)) + break; + + } + }) + updateTotal("input-changeable-device-cost-budget-plan", "input-total-title-device-cost-budget-plan"); + updateTotal("input-changeable-project-cost-budget-plan", "input-total-title-projectCost-cost-budget-plan"); + updateTotal("input-changeable-service-cost-budget-plan", "input-total-title-serviceCost-cost-budget-plan"); + updateTotal("input-changeable-other-cost-budget-plan", "input-total-title-otherCost-cost-budget-plan"); + $('.input-changeable-project-manage-cost-budget-plan').each((index, element) => { + var engineer1 = f2($(element).parent().parent().find(".input-changeable-device-cost-budget-plan").val()) + var engineer2 = f2($(element).parent().parent().find(".input-changeable-project-cost-budget-plan").val()) + var engineer3 = f2($(element).parent().parent().find(".input-changeable-service-cost-budget-plan").val()) + var engineer4 = f2($(element).parent().parent().find(".input-changeable-other-cost-budget-plan").val()) + var projectManageCost = f2($(element).val()); + var earnestMoneyCost = f2($(element).parent().parent().find(".input-changeable-earnest-money-cost-budget-plan").val()); + var engineerCost = f2(engineer1 + engineer2 + engineer3 + engineer4); + $(element).parent().parent().find('.input-changeable-total-cost-budget-plan').val(f2Fixed(engineerCost + projectManageCost + earnestMoneyCost)); + var eventChange = new Event('change', {bubbles: true}); + element.dispatchEvent(eventChange); + }) + updateTotal("input-changeable-total-cost-budget-plan", "input-total-title-total-cost-budget-plan"); +} + 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 1475f67..5d3e7e8 100644 --- a/src/main/resources/static/assets/js/project_budget_plan.js +++ b/src/main/resources/static/assets/js/project_budget_plan.js @@ -169,6 +169,7 @@ function appendMultiplePlan() { 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) { diff --git a/src/main/resources/templates/admin/project_budget_edit.ftl b/src/main/resources/templates/admin/project_budget_edit.ftl index ef82753..1569ff2 100644 --- a/src/main/resources/templates/admin/project_budget_edit.ftl +++ b/src/main/resources/templates/admin/project_budget_edit.ftl @@ -636,7 +636,7 @@ data-validation-message="汇智产品金额" name="huizhiProductAmountBudget" id="huizhiProductAmountBudget" placeholder="单位(元)" maxlength="16" - value="${Utils.format(projectBudget.huizhiProductAmountBudget, "0.00")}"/> + value="${Utils.format(projectBudget.huizhiProductAmountBudget, "0.00")}"/>