fourcal/src/main/resources/static/assets/js/project_budget.js

1172 lines
44 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// 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));
});
}
}
}