// INCOME_DETAIL={ // "num":[false,"序号","string"], // "type":[true,"类别","string"], // "name":[true,"名称","string"], // "unit":[true,"单位","string"], // "amount":[true,"数量","string"], // "price":[true,"单价","price"], // "taxRate":[true,"税率","number"], // "totalTaxInclude":[true,"含税总金额","number"], // "totalTaxExclude":[true,"不含税金额","number"], // "totalTax":[true,"税金","number"] // }; // // COST_DETAIL={ // "num":[false,"序号","string"], // "type":[true,"大类","string"], // "category":[true,"类别","string"], // "name":[true,"名称","string"], // "unit":[true,"单位","string"], // "amount":[true,"数量","string"], // "price":[true,"单价","price"], // "taxRate":[true,"税率","number"], // "totalTaxInclude":[true,"含税总金额","number"], // "totalTaxExclude":[true,"不含税金额","number"], // "totalTax":[true,"税金","number"] // }; // // COST_PROJECT_MANAGE_DETAIL={ // "num":[false,"序号","string"], // "type":[true,"财务费用类别","string"], // "name1":[false,"业务项目","string"], // "name2":[false,"业务项目","string"], // "detail":[true,"项目明细","string"], // "unit":[true,"单位","string"], // "amount":[true,"数量","string"], // "price":[true,"单价","price"], // "total":[true,"总金额","number"], // "predictMethod":[false,"预估计算方法","string"], // "predictWhy":[false,"预估依据","string"], // "remark":[false,"备注","string"], // "deletable":[true,"是否可删除","string"] // }; // // BUDGET_PLAN_DETAIL={ // "month":[true,"月份"], // "deviceCost":[true,"设备支出","number"], // "engineerCost":[true,"工程支出","number"], // "projectManageCost":[true,"经营性开支","number"], // "earnestMoneyCost":[true,"保证金支出","number"], // "totalCost":[true,"支出合计","number"], // "saleIncome":[true,"销售收款","number"], // "earnestMoneyIncome":[true,"保证金收款","number"], // "totalIncome":[true,"收款合计","number"], // "fundBalance":[true,"资金余额","number"], // "capitalInterest":[true,"资金利息","number"], // "underwrittenPlan":[true,"垫资计划","number"], // "repaymentPlan":[true,"还款计划","number"] // }; var result = 0; var check = 0; $(function () { generateFileupload('icon') generateFileupload2('icon'); $("input[name='costCompanyManageTaxExclude']").change(function () { digitalSelf("costCompanyManageTaxExclude", "input[name='costCompanyManageTaxExclude']"); }); $("input[name='costOtherOtherTaxInclude']").change(function () { console.log("budget.js:costOtherOtherTaxInclude"); digitalSelf("costOtherOtherTaxInclude", "input[name='costOtherOtherTaxInclude']"); }); $("input[name='costOtherOtherTaxExclude']").change(function () { console.log("budget.js:costOtherOtherTaxExclude"); digitalSelf("costOtherOtherTaxExclude", "input[name='costOtherOtherTaxExclude']"); }); //绑定删除按钮删除当前行 bindDeleteBtn(); //绑定收入和采购成本的输入框【都有税率】 bindChangeableInput(); //绑定总计的输入框 bindIncomeTotal(); //绑定总计的输入框 bindCostTotal(); //绑定总计的输入框 bindCostManageTotal(); $("#saveDraft").click(function () { $("#saveDraft").attr('disabled', true); $("#collaboratorUrl").val($("#collaboratorUrl_span").text()); // checkIfFillIn(); // if(!checkprojectPlan()){ // $("#saveDraft").attr('disabled', false); // return; // } var dataIncome = collectData("am-modal-prompt-input-income"); if (dataIncome.length <= 0) { window.confirm('请填写收入明细表'); $("#saveDraft").attr('disabled', false); return; } var dataIncomeCheck = convertDetailVerifyCheck(dataIncome, INCOME_DETAIL2, "收入明细表"); if (dataIncomeCheck == null) { $("#saveDraft").attr('disabled', false); return; } //如果没有提交则自动计算预算信息 dataIncome = prepareAjaxDataVerify(dataIncome, INCOME_DETAIL2, $("#id").val()); if (dataIncome.details) { postAjax(base + "/project/budgetEditSaveIncomeDetail", dataIncome); } updateIncomeDataUnsubmit(dataIncomeCheck); var dataCost = collectData("am-modal-prompt-input-cost"); if (dataCost.length <= 0) { window.confirm('请填写采购成本明细表'); $("#saveDraft").attr('disabled', false); 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); } updateCostDataIfUnsubmit(dataCostCheck); var dataManage = collectData("am-modal-prompt-input-cost-project-manage"); if (dataManage.length <= 0) { window.confirm('项目管理费用'); $("#saveDraft").attr('disabled', false); return; } var dataManageCheck = convertDetailVerifyCheck(dataManage, COST_PROJECT_MANAGE_DETAIL2, "项目管理费用"); if (dataManageCheck == null) { $("#saveDraft").attr('disabled', false); return; } dataManage = prepareAjaxDataVerify(dataManage, COST_PROJECT_MANAGE_DETAIL2, $("#id").val()); if (dataManage) { postAjax(base + "/project/budgetEditSaveCostProjectManageDetail", dataManage); } updateCostProjectManageDataUnsubmit(dataManageCheck); var dataPlan = collectData("am-modal-prompt-input-budget-plan-detail"); // if (dataPlan.length <= 0) { // window.confirm('请填写项目资金计划表'); // $("#saveDraft").attr('disabled', false); // return; // } var dataPlanCheck = convertDetailVerifyCheck(dataPlan, BUDGET_PLAN_DETAIL2, "项目资金计划表"); if (dataPlanCheck == null) { $("#saveDraft").attr('disabled', false); return; } //校验数据正确性 // var message = verifyBudgetPlan(); // if (message) { // layuiAlert(message); // $("#saveDraft").attr('disabled', false); // return; // } dataPlan = prepareAjaxDataVerify(dataPlan, BUDGET_PLAN_DETAIL2, $("#id").val()); if (dataPlan) { postAjax(base + "/project/budgetEditSaveBudgetPlanDetail", dataPlan); } updateBudgetPlanDetailDataUnsubmit(); // var message = verifyProjectContributionProfitRate(); // if (message) { // $("#saveDraft").attr('disabled', false); // layuiAlert(message); // 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(); var endTime = $("#endDate").val(); if (startTime > endTime) { $("#saveDraft").attr('disabled', false); window.confirm('开始日期应早于结束日期'); return; } setTimeout(function () { $("#saveDraft").attr('disabled', false); }, 5000); $("#pmsForm").attr("action", base + "/project/budgetEditSave"); $("#pmsForm").submit(); }); $("#saveApprove").click(function () { $("#saveApprove").attr('disabled', true); $("#collaboratorUrl").val($("#collaboratorUrl_span").text()); if (!checkprojectPlan()) { $("#saveApprove").attr('disabled', false); return } checkIfFillIn(); if (check === 1) { $("#saveApprove").attr('disabled', false); return; } var dataIncome = collectData("am-modal-prompt-input-income"); if (dataIncome.length <= 5) { window.confirm('请填写收入明细表'); $("#saveApprove").attr('disabled', false); return; } var dataIncomeCheck = convertDetailVerifyCheck(dataIncome, INCOME_DETAIL, "收入明细表"); if (dataIncomeCheck == null) { $("#saveApprove").attr('disabled', false); return; } //如果没有提交则自动计算预算信息 dataIncome = prepareAjaxDataVerify(dataIncome, INCOME_DETAIL, $("#id").val()); if (dataIncome.details) { postAjax(base + "/project/budgetEditSaveIncomeDetail", dataIncome); } updateIncomeDataUnsubmit(dataIncomeCheck); var dataCost = collectData("am-modal-prompt-input-cost"); if (dataCost.length <= 7) { window.confirm('请填写采购成本明细表'); $("#saveApprove").attr('disabled', false); return; } var dataCostCheck = convertDetailVerifyCheck(dataCost, COST_DETAIL, "采购成本明细表"); if (dataCostCheck == null) { $("#saveApprove").attr('disabled', false); return; } //如果没有提交则自动计算预算信息 dataCost = prepareAjaxDataVerify(dataCost, COST_DETAIL, $("#id").val()); if (dataCost) { postAjax(base + "/project/budgetEditSaveCostDetail", dataCost); } updateCostDataIfUnsubmit(dataCostCheck); var dataManage = collectData("am-modal-prompt-input-cost-project-manage"); console.log("dataManage: " + dataManage.length); if (dataManage.length <= 4) { window.confirm('请填写项目管理费用'); $("#saveApprove").attr('disabled', false); return; } var dataManageCheck = convertDetailVerifyCheck(dataManage, COST_PROJECT_MANAGE_DETAIL, "项目管理费用"); if (dataManageCheck == null) { $("#saveApprove").attr('disabled', false); return; } dataManage = prepareAjaxDataVerify(dataManage, COST_PROJECT_MANAGE_DETAIL, $("#id").val()); var totalTotal = dataManage.details.reduce((total, now) => { return now.total + total }, 0) var limitTotal = dataManage.details.reduce((total, now) => { if (now.type == 2 && (now.name == '5' || now.name == '4')) return +total else return total }, 0) var projectGrossProfitA = $('[name="projectGrossProfitA"]').val() console.log(limitTotal, projectGrossProfitA.replace(/,/g, ''), totalTotal, limitTotal) if (limitTotal > ((parseFloat(projectGrossProfitA.replace(/,/g, '')) - (totalTotal - limitTotal)) * 0.1)) { $("#saveApprove").attr('disabled', false); layuiAlert(`差旅费+业务费总金额不超过【毛利A(${projectGrossProfitA})-(项目管理费用-差旅费-业务费)】*10%`); return } if (dataManage) { postAjax(base + "/project/budgetEditSaveCostProjectManageDetail", dataManage); } updateCostProjectManageDataUnsubmit(dataManageCheck); var dataPlan = collectData("am-modal-prompt-input-budget-plan-detail"); console.log("dataPaln: " + dataPlan.length); if (dataPlan.length <= 1) { window.confirm('请填写项目资金计划表'); $("#saveApprove").attr('disabled', false); return; } var dataPlanCheck = convertDetailVerifyCheck(dataPlan, BUDGET_PLAN_DETAIL, "项目资金计划表"); if (dataPlanCheck == null) { $("#saveApprove").attr('disabled', false); return; } //校验数据正确性 var message = verifyBudgetPlan(); if (message) { layuiAlert(message); $("#saveApprove").attr('disabled', false); return; } dataPlan = prepareAjaxDataVerify(dataPlan, BUDGET_PLAN_DETAIL, $("#id").val()); if (dataPlan) { postAjax(base + "/project/budgetEditSaveBudgetPlanDetail", dataPlan); } updateBudgetPlanDetailDataUnsubmit(); // var message = verifyProjectContributionProfitRate(); // if (message) { // $("#saveApprove").attr('disabled', false); // 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); } var startTime = $("#startDate").val(); var endTime = $("#endDate").val(); if (startTime > endTime) { $("#saveApprove").attr('disabled', false); window.confirm('开始日期应早于结束日期'); return; } setTimeout(function () { $("#saveApprove").attr('disabled', false); }, 5000); $("#pmsForm").attr("action", base + "/project/budgetEditSaveAndApprove"); $("#pmsForm").submit(); }); }); //立项表填写检查 function checkIfFillIn() { var name = $("#nameBudget").val(); var startTime = $("#startDateBudget").val(); var endTime = $("#endDateBudget").val(); var underwrittenMode = $("#underwrittenModeBudget").val(); var cooperateType = $("#cooperateTypeBudget").val(); var collaborator = $("#collaboratorBudget").val(); var collaboratorUrl = $("#collaboratorUrlBudget").val(); var advanceInterestAmount = $("#advanceInterestAmountBudget").val(); var advancePeakAmount = $("#advancePeakAmountBudget").val(); var contractAmount = $("#contractAmountBudget").val(); var grossProfit = $("#grossProfitBudget").val(); var grossProfitMargin = $("#grossProfitMarginBudget").val(); var huizhiProductAmount = $("#huizhiProductAmountBudget").val(); var huazhiProductAmount = $("#huazhiProductAmountBudget").val(); var huasanProductAmount = $("#huasanProductAmountBudget").val(); var ziguangOtherAmount = $("#ziguangOtherAmountBudget").val(); // var industryScenario = $("#industryScenarioBudget").val(); var customer = $("#customerBudget").val(); var terminalCustomer = $("#terminalCustomerBudget").val(); var valueRisk = $("#valueRiskBudget").val(); var principal = $("#principalBudget").val(); var contractTimeBudget = $("#contractTimeBudget").val(); var bidsTimeBudget = $("#bidsTimeBudget").val(); var isSecondBudget = $("#isSecondBudget").val(); var signTypeBudget = $("#signTypeBudget").val(); var calculationCollectionBudget = $("#calculationCollectionBudget").val(); if (name.length <= 0) { window.confirm('项目名称不能为空'); check = 1; return; } checkName(); if (result == 1) { window.confirm('项目名称已存在'); check = 1; return; } // if (projectNo.length <= 0) { // window.confirm('项目编号不能为空'); // check = 1; // return; // } // // checkProjectNo(); // if (projectNoResult == 1) { // window.confirm('项目编号已存在'); // check = 1; // return; // } if (underwrittenMode > 2 && (advanceInterestAmount == undefined || advanceInterestAmount.length <= 0)) { window.confirm('垫资利息不能为空'); check = 1; return; } if (underwrittenMode > 2 && (advancePeakAmount == undefined || advancePeakAmount.length <= 0)) { window.confirm('垫资峰值不能为空'); check = 1; return; } if (contractAmount == undefined || contractAmount.length <= 0) { window.confirm('合同金额不能为空'); check = 1; return; } if (grossProfit == undefined || grossProfit.length <= 0) { window.confirm('项目毛利不能为空'); check = 1; return; } if (grossProfitMargin == undefined || grossProfitMargin.length <= 0) { window.confirm('项目毛利率不能为空'); check = 1; return; } if (huizhiProductAmount == undefined || huizhiProductAmount.length <= 0) { window.confirm('汇智产品金额不能为空'); check = 1; return; } if (huazhiProductAmount == undefined || huazhiProductAmount.length <= 0) { window.confirm('华智产品金额不能为空'); check = 1; return; } if (huasanProductAmount == undefined || huasanProductAmount.length <= 0) { window.confirm('华三产品金额不能为空'); check = 1; return; } if (ziguangOtherAmount == undefined || ziguangOtherAmount.length <= 0) { window.confirm('其他产品金额不能为空'); check = 1; return; } // if (industryScenario == undefined || industryScenario.length <= 0) { // window.confirm('行业应用场景不能为空'); // check = 1; // return; // } // if (mainContractCollectionTerms == undefined || mainContractCollectionTerms.length <= 0) { // window.confirm('主合同收款条款不能为空'); // check = 1; // return; // } if (customer == undefined || customer.length <= 0) { window.confirm('客户名称不能为空'); check = 1; return; } if (terminalCustomer == undefined || terminalCustomer.length <= 0) { window.confirm('最终用户名称不能为空'); check = 1; return; } if (valueRisk == undefined || valueRisk.length <= 0) { window.confirm('价值及风险不能为空'); check = 1; return; } if (principal == undefined || principal.length <= 0) { window.confirm('项目负责人不能为空'); check = 1; return; } if (contractTimeBudget.length <= 0) { window.confirm('预计合同签订时间不能为空'); check = 1; return; } // if (bidsTimeBudget.length <= 0) { window.confirm('项目计划招标时间不能为空'); check = 1; return; } if (!isSecondBudget) { window.confirm('是否二次合作不能为空'); check = 1; return; } if (!signTypeBudget) { window.confirm('是否汇智中标不能为空'); check = 1; return; } if (!calculationCollectionBudget) { window.confirm('计收计划不能为空'); check = 1; return; } } /** * 判断是否重名 */ function checkName() { var name = $("#nameBudget").val(); var id = $("#id").val(); $.ajax({ url: base + "/project/checkName", data: {name: name, id: id}, type: "post", dataType: "json", async: false, success: function (data) { result = data.status; } }); }; /** * 一维数组变二维数组 * @param list * @param elementsPerSubArray * @returns {Array} */ function arrayToMatrix(list, elementsPerSubArray) { var matrix = [], i, k; for (i = 0, k = -1; i < list.length; i++) { if (i % elementsPerSubArray === 0) { k++; matrix[k] = []; } matrix[k].push(list[i]); } return matrix; } /** * 根据映射关系将数组变为对象 * @param arr 一行数据 * @param mapArr 映射数组 * @param keepBlank 如果有空的并且不保留空就返回空,废弃这一行 * @returns {*} */ function arr2Object(arr, mapArr, keepBlank) { var obj = {}; for (var i = 0; i < mapArr.length; i++) { if (!arr[i] && !keepBlank) { return null; } obj[mapArr[i]] = arr[i]; } return obj; } function arr2ObjectVerify(line, arr, detailPropertyArr, detailProperty) { var obj = {}; for (var i = 0; i < detailPropertyArr.length; i++) { var o = detailProperty[detailPropertyArr[i]]; //空但是要求非空 if (!arr[i] && o[0]) { layuiAlert("第 " + (line + 1) + " 行的 " + o[1] + " 不允许为空"); return null; } //如果要求是数字类型的,进行转换 var v = arr[i]; if (o[2] === 'number') { v = f2(v); } else if (o[2] === 'price') { v = f5(v); } obj[detailPropertyArr[i]] = v; } return obj; } function arr2ObjectVerifyCheck(line, arr, detailPropertyArr, detailProperty, s) { var obj = {}; for (var i = 0; i < detailPropertyArr.length; i++) { var o = detailProperty[detailPropertyArr[i]]; //空但是要求非空 if (!arr[i] && o[0]) { layuiAlert(s + "第 " + (line + 1) + " 行的 " + o[1] + " 不允许为空"); return null; } obj[detailPropertyArr[i]] = arr[i]; } return obj; } /** * 收集收入明细的数据,因为动态添加的行modal无法识别,所以自己来收集 * @returns {Array} */ function collectData(className) { var a = []; $("." + className).each(function (t) { if (!$(this).is(':hidden')) a.push($(this).val()); }); return a; } /** * 绑定每一行的删除事件,删除当前的一行tr */ function bindDeleteBtn() { $(".am-modal-line-delete").click(function () { //删除自己对应的tr $(this).parent().parent().remove(); bindNum(); }); } /** * 将页面收集到的数据转换为ajax请求的数据【一维数组转换为对象数组】 * @param data * @param detailPropertyArr * @param keepBlank * @returns {Array} */ function convertDetail(data, detailPropertyArr, keepBlank) { var arr = arrayToMatrix(data, detailPropertyArr.length); var details = []; for (var i = 0; i < arr.length; i++) { var obj = arr2Object(arr[i], detailPropertyArr, keepBlank); if (obj) { details.push(obj); } } return details; } function convertDetailVerify(data, detailProperty) { var detailPropertyArr = Object.keys(detailProperty); var arr = arrayToMatrix(data, detailPropertyArr.length); var details = []; for (var i = 0; i < arr.length; i++) { if (i === arr.length - 1 && detailProperty !== BUDGET_PLAN_DETAIL2 && detailProperty !== BUDGET_PLAN_DETAIL) { continue; } var obj = arr2ObjectVerify(i, arr[i], detailPropertyArr, detailProperty); if (!obj) { return null; } details.push(obj); } return details; } function convertDetailVerifyCheck(data, detailProperty, s) { var detailPropertyArr = Object.keys(detailProperty); var arr = arrayToMatrix(data, detailPropertyArr.length); var details = []; for (var i = 0; i < arr.length; i++) { if (i === arr.length - 1 && s !== "项目资金计划表") { continue; } var obj = arr2ObjectVerifyCheck(i, arr[i], detailPropertyArr, detailProperty, s); if (!obj) { return null; } details.push(obj); } return details; } function prepareAjaxData(data, detailPropertyArr, projectId, keepBlank) { var details = convertDetail(data, detailPropertyArr, keepBlank); return { "details": details, "projectId": projectId }; } function prepareAjaxDataVerify(data, detailProperty, projectId) { var details = convertDetailVerify(data, detailProperty); return { "details": details, "projectId": projectId }; } /** * 绑定每个可改变的输入框,修改后改变对应输入框的值 */ function bindChangeableInput() { //数量改变 $(".input-changeable-amount").change(function () { var amount = f2($(this).val()); //找到对应的单价和税率 var price = f5($(this).parent().parent().find(".input-changeable-price").val()); var taxRate = f2($(this).parent().parent().find(".input-changeable-tax-rate").val()); console.log(amount, price, taxRate); $(this).parent().parent().find(".input-changeable-total-tax-include").val(f2Fixed(amount * price)); $(this).parent().parent().find(".input-changeable-total-tax-exclude").val(f2Fixed(amount * price / (1 + taxRate / 100))); $(this).parent().parent().find(".input-changeable-total-tax").val(f2Fixed(amount * price * taxRate / (100 + taxRate))); }); //单价改变 $(".input-changeable-price").change(function () { var price = f5($(this).val()); //找到对应的数量和税率 var amount = f2($(this).parent().parent().find(".input-changeable-amount").val()); var taxRate = f2($(this).parent().parent().find(".input-changeable-tax-rate").val()); console.log(amount, price, taxRate); $(this).parent().parent().find(".input-changeable-total-tax-include").val(f2Fixed(amount * price)); $(this).parent().parent().find(".input-changeable-total-tax-exclude").val(f2Fixed(amount * price / (1 + taxRate / 100))); $(this).parent().parent().find(".input-changeable-total-tax").val(f2Fixed(amount * price * taxRate / (100 + taxRate))); $(this).val(f5Price(price)); console.log("单价:" + $(this).val()); }); //税率改变 $(".input-changeable-tax-rate").change(function () { var taxRate = f2($(this).val()); var rowVal = $(this).parent().parent().find(".input-changeable-total-tax-include").val() $(this).parent().parent().find(".input-changeable-total-tax-exclude").val(f2Fixed(rowVal * (1 - (taxRate / 100)))); $(this).parent().parent().find(".input-changeable-total-tax").val(f2Fixed(rowVal * (taxRate / 100))); }); // 不含税金额改变 $(".input-changeable-total-tax-include").change(function () { var rowVal = f2($(this).val()); var taxRate = $(this).parent().parent().find(".input-changeable-tax-rate").val() $(this).parent().parent().find(".input-changeable-total-tax-exclude").val(f2Fixed(rowVal * (1 - (taxRate / 100)))); $(this).parent().parent().find(".input-changeable-total-tax").val(f2Fixed(rowVal * (taxRate / 100))); }); } /** * 每次更新数量,单价和税率时,更改总计中含税和不含税总金额 * @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(f2Fixed(total)); } /** * 绑定序号 */ function bindNum() { $(".input-budget-num").each(function (t) { var prevIndex = $(this).parent().parent().prev("tr").find(".input-budget-num").val(); $(this).val(f2(prevIndex) + 1); }); } /** * 校验项目贡献利润率必须大于阀值 * 低于阀值就返回提示信息,否则返回"" */ function verifyProjectContributionProfitRate() { var projectContributionProfitRate = f2(inputVal("projectContributionProfitRate")); var projectContributionProfitRateThreshold = f2($("#projectContributionProfitRateThreshold").val()); if (projectContributionProfitRate < projectContributionProfitRateThreshold) { return "项目贡献利润率[" + projectContributionProfitRate + "]低于阀值[" + projectContributionProfitRateThreshold + "],请调整后重新提交"; } return ""; } /** * 更新 * 毛利=收入总计(不含税)-成本总计(不含税)-财务费用总计(不含税) * 毛利率=毛利(不含税)/收入总计(不含税) * 贡献利润=项目毛利(不含税)-公司管理费用总计(不含税) * 贡献利润率=贡献利润(不含税)/收入总计(不含税) */ function updateProjectContributionProfitRate() { //收入总计不含税 var incomeTotalTaxExclude = f2(inputVal("incomeTotalTaxExclude")); //成本总计不含税 var costTotalTaxExclude = f2(inputVal("costTotalTaxExclude")); //资金使用成本不含税 var costExpropriationTaxExclude = f2(inputVal("costExpropriationTaxExclude")); //公司管理费用 var costCompanyManageTaxExclude = f2(inputVal("costCompanyManageTaxExclude")); //采购成本不含税 var costPurchaseDeviceTaxExclude = f2(inputVal("costPurchaseDeviceTaxExclude")); var costPurchaseBuildTaxExclude = f2(inputVal("costPurchaseBuildTaxExclude")); var costPurchaseServiceTaxExclude = f2(inputVal("costPurchaseServiceTaxExclude")); var costPurchaseOtherTaxExclude = f2(inputVal("costPurchaseOtherTaxExclude")); var projectGrossProfitA = f2Fixed(incomeTotalTaxExclude - (costPurchaseDeviceTaxExclude + costPurchaseBuildTaxExclude + costPurchaseServiceTaxExclude + costPurchaseOtherTaxExclude)); var projectGrossProfitARate = f2Fixed(rate(f2(projectGrossProfitA), incomeTotalTaxExclude)); var projectGrossProfit = f2Fixed(incomeTotalTaxExclude - costTotalTaxExclude - costExpropriationTaxExclude); var projectGrossProfitRate = f2Fixed(rate(f2(projectGrossProfit), incomeTotalTaxExclude)); var projectContributionProfit = f2Fixed(f2(projectGrossProfit) - costCompanyManageTaxExclude); var projectContributionProfitRate = f2Fixed(rate(f2(projectContributionProfit), incomeTotalTaxExclude)); $("input[name='projectGrossProfitA']").val(projectGrossProfitA); $("input[name='projectGrossProfitARate']").val(projectGrossProfitARate); $("input[name='projectGrossProfit']").val(projectGrossProfit); $("input[name='projectGrossProfitRate']").val(projectGrossProfitRate); $("input[name='projectContributionProfit']").val(projectContributionProfit); $("input[name='projectContributionProfitRate']").val(projectContributionProfitRate); } /** * 更新页面收入的数据【累加】 */ function updateCostDataIfUnsubmit(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 += f2(t["totalTaxInclude"]); deviceTaxExclude += f2(t["totalTaxExclude"]); } else if (t["type"] == "2") { //施工类 buildTaxInclude += f2(t["totalTaxInclude"]); buildTaxExclude += f2(t["totalTaxExclude"]); } else if (t["type"] == "3") { //服务类 serviceTaxInclude += f2(t["totalTaxInclude"]); serviceTaxExclude += f2(t["totalTaxExclude"]); } else if (t["type"] == "4") { //其他类 otherTaxInclude += f2(t["totalTaxInclude"]); otherTaxExclude += f2(t["totalTaxExclude"]); } }); $("input[name='costPurchaseDeviceTaxInclude']").val(f2Fixed(deviceTaxInclude)); $("input[name='costPurchaseDeviceTaxExclude']").val(f2Fixed(deviceTaxExclude)); $("input[name='costPurchaseBuildTaxInclude']").val(f2Fixed(buildTaxInclude)); $("input[name='costPurchaseBuildTaxExclude']").val(f2Fixed(buildTaxExclude)); $("input[name='costPurchaseServiceTaxInclude']").val(f2Fixed(serviceTaxInclude)); $("input[name='costPurchaseServiceTaxExclude']").val(f2Fixed(serviceTaxExclude)); $("input[name='costPurchaseOtherTaxInclude']").val(f2Fixed(otherTaxInclude)); $("input[name='costPurchaseOtherTaxExclude']").val(f2Fixed(otherTaxExclude)); //资金计划表中的 $(".input-total-title-device-cost-budget-plan").val(f2Fixed(deviceTaxInclude)); $(".input-total-title-engineer-cost-budget-plan").val(f2Fixed(f2(serviceTaxInclude) + f2(buildTaxInclude) + f2(otherTaxInclude))); $(".input-total-title-total-cost-budget-plan").val(f2Fixed(f2(deviceTaxInclude) + f2(buildTaxInclude) + f2(serviceTaxInclude) + f2(otherTaxInclude) + f2($(".input-total-title-project-manage-cost-budget-plan").val()) + f2($(".input-total-title-earnest-money-cost-budget-plan").val()))); calCostExclude(); calCostInclude(); calCostTotalTax(); var costTotalTaxInclude = inputVal("costTotalTaxInclude"); var costTotalTaxExclude = inputVal("costTotalTaxExclude"); $("input[name='costTotalTax']").val(f2Fixed(f2(costTotalTaxInclude) - f2(costTotalTaxExclude))); updateProjectContributionProfitRate(); } /** * 更新页面收入的数据【累加】 */ function updateIncomeDataUnsubmit(incomeDetails) { var deviceTaxInclude = 0; var deviceTaxExclude = 0; var engineerTaxInclude = 0; var engineerTaxExclude = 0; var serviceTaxInclude = 0; var serviceTaxExclude = 0; incomeDetails.forEach(function (t, number, ts) { console.log("income cost " + t["type"] + ", " + t["taxRate"] + ", " + t["totalTaxInclude"] + ", " + t["totalTaxExclud"]); if (t["type"] == "1") { //设备类 deviceTaxInclude += f2(t["totalTaxInclude"]); deviceTaxExclude += f2(t["totalTaxExclude"]); } else if (t["type"] == "2") { //工程类 engineerTaxInclude += f2(t["totalTaxInclude"]); engineerTaxExclude += f2(t["totalTaxExclude"]); } else if (t["type"] == "3") { //服务类 serviceTaxInclude += f2(t["totalTaxInclude"]); serviceTaxExclude += f2(t["totalTaxExclude"]); } }); $("input[name='incomeDeviceTaxInclude']").val(f2Fixed(deviceTaxInclude)); $("input[name='incomeDeviceTaxExclude']").val(f2Fixed(deviceTaxExclude)); $("input[name='incomeEngineerTaxInclude']").val(f2Fixed(engineerTaxInclude)); $("input[name='incomeEngineerTaxExclude']").val(f2Fixed(engineerTaxExclude)); $("input[name='incomeServiceTaxInclude']").val(f2Fixed(serviceTaxInclude)); $("input[name='incomeServiceTaxExclude']").val(f2Fixed(serviceTaxExclude)); $("input[name='incomeTotalTaxInclude']").val(f2Fixed(deviceTaxInclude + engineerTaxInclude + serviceTaxInclude)); $("input[name='incomeTotalTaxExclude']").val(f2Fixed(deviceTaxExclude + engineerTaxExclude + serviceTaxExclude)); $("input[name='incomeTotalTax']").val(f2Fixed(deviceTaxInclude + engineerTaxInclude + serviceTaxInclude - (deviceTaxExclude + engineerTaxExclude + serviceTaxExclude))); $("input[name='costCompanyManageTaxExclude']").val(f2Fixed(0.028 * (deviceTaxExclude + engineerTaxExclude + serviceTaxExclude))); // $(".input-total-title-sale-income-budget-plan").val($("input[name='incomeTotalTaxInclude']").val()); // $(".input-total-title-total-income-budget-plan").val(f2Fixed(f2($("input[name='incomeTotalTaxInclude']").val()) // + f2($(".input-total-title-earnest-money-income-budget-plan").val()))); updateProjectContributionProfitRate(); } /** * 更新页面收入的数据【累加】 */ function updateCostProjectManageDataUnsubmit(details) { var total = 0; details.forEach(function (t, number, ts) { total += f2(t["total"]); }); total = f2(total); $("input[name='costProjectManageTaxExclude']").val(f2Fixed(total)); $("input[name='costProjectManageTaxInclude']").val(f2Fixed(total)); //资金计划表中的 $(".input-total-title-project-manage-cost-budget-plan").val(f2Fixed(total)); var deviceTaxExclude = $("input[name='costPurchaseDeviceTaxExclude']").val(); var buildTaxExclude = $("input[name='costPurchaseBuildTaxExclude']").val(); var serviceTaxExclude = $("input[name='costPurchaseServiceTaxExclude']").val(); var otherTaxExclude = $("input[name='costPurchaseOtherTaxExclude']").val(); var deviceTaxInclude = $("input[name='costPurchaseDeviceTaxInclude']").val(); var buildTaxInclude = $("input[name='costPurchaseBuildTaxInclude']").val(); var serviceTaxInclude = $("input[name='costPurchaseServiceTaxInclude']").val(); var otherTaxInclude = $("input[name='costPurchaseOtherTaxInclude']").val(); $(".input-total-title-total-cost-budget-plan").val(f2Fixed(f2(deviceTaxInclude) + f2(buildTaxInclude) + f2(serviceTaxInclude) + f2(otherTaxInclude) + total + f2($(".input-total-title-earnest-money-cost-budget-plan").val()))); calCostExclude(); calCostInclude(); calCostTotalTax() updateProjectContributionProfitRate(); } /** * 更新页面收入的数据 */ function updateBudgetPlanDetailDataUnsubmit(data, returnData) { //var details = data.details; //主页面上的财务费用 $("input[name='costExpropriationTaxExclude']").val($(".input-underwritten-plan-statistic-capital-interest-budget-plan").val()); //更新项目贡献率 updateProjectContributionProfitRate(); //更新现金流量 updateCashFlow(); } // 校验资金计划表 function checkprojectPlan() { // 付款总计 let planPayTotal = f2($('.input-total-title-total-cost-budget-plan').val()) // 保证金付款总计 let planPayEarnest = f2($('.input-total-title-earnest-money-cost-budget-plan').val()) // 项目管理付款总计 let planPayProject = f2($('.input-total-title-project-manage-cost-budget-plan').val()) // 采购成本明细总计 let costTatol = f2($('.input-changeable-total-total-tax-include-cost').val()) if (planPayTotal != (planPayEarnest + planPayProject + costTatol)) { layuiAlert('资金计划表的付款合计需=保证金付款+项目管理费用表总计+采购成本明细表总计') return false; } // 收款总计 let saleTatol = f2($('.input-total-title-total-income-budget-plan').val()) // 保证金收款 let saleEarnest = f2($('.input-total-title-earnest-money-income-budget-plan').val()) // 收入明细表总计 let incomeTotal = f2($('.input-changeable-total-total-tax-include-income').val()) if (saleTatol != (saleEarnest + incomeTotal)) { layuiAlert('资金计划表的收款合计需= 保证金收款+收入明细表总计') return false; } return true } //根据收款计划表和付款计划表更新资金计划表日期范围 function updataCostPlanMonth(data, key) { if(!data.details.length) return let nowMaxMonth = new Date($('#planEndStr').val()).getTime() let nowMinMonth = new Date($('#planStartStr').val()).getTime() let dataMonth = data.details dataMonth.sort((a, b) => { return new Date(b[key].slice(0, 7)).getTime() - new Date(a[key].slice(0, 7)).getTime() }) let dataMax = new Date(dataMonth[0][key]).getTime() let dataMin = new Date(dataMonth[dataMonth.length - 1][key]).getTime() if (!nowMaxMonth || !nowMinMonth) { if(!nowMinMonth){ layui.use('laydate', function () { var laydate = layui.laydate; laydate.render({ elem: '#planStartStr', type: 'month', btns: ['confirm'], trigger: 'click', value: dataMonth[dataMonth.length - 1][key].slice(0, 7), ready: function () { }, done: function () { var time = $(this.elem).val(); appendMultiplePlan(); $("#planStartDate").val(time); } }); }) } if(!nowMaxMonth){ $('#planEndStr').val(dataMonth[0][key].slice(0, 7)) layui.use('laydate', function () { var laydate = layui.laydate; laydate.render({ elem: '#planEndStr', type: 'month', btns: ['confirm'], trigger: 'click', value: dataMonth[0][key].slice(0, 7), ready: function () { }, done: function () { var time = $(this.elem).val(); appendMultiplePlan(); $("#planEndDate").val(time); }, }); appendMultiplePlan(); $("#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', type: 'month', btns: ['confirm'], trigger: 'click', value: dataMonth[dataMonth.length - 1][key].slice(0, 7), ready: function () { }, done: function () { var time = $(this.elem).val(); appendMultiplePlan(); $("#planStartDate").val(time); } }); 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', type: 'month', btns: ['confirm'], trigger: 'click', value: dataMonth[0][key].slice(0, 7), ready: function () { }, done: function () { var time = $(this.elem).val(); appendMultiplePlan(); $("#planEndDate").val(time); }, }); appendMultiplePlan(); $("#planEndDate").val(dataMonth[0][key].slice(0, 7)); }); } } }