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

1056 lines
40 KiB
JavaScript
Raw Normal View History

2024-10-18 09:01:41 +00:00
// 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 () {
2024-10-30 11:22:22 +00:00
generateFileupload('icon')
2024-10-18 09:01:41 +00:00
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;
// }
2024-10-18 09:01:41 +00:00
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());
2024-10-30 06:10:11 +00:00
if (dataIncome.details) {
postAjax(base + "/project/budgetEditSaveIncomeDetail", dataIncome);
2024-10-18 09:01:41 +00:00
}
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());
2024-10-30 06:10:11 +00:00
if (dataCost) {
postAjax(base + "/project/budgetEditSaveCostDetail", dataCost);
2024-10-18 09:01:41 +00:00
}
updateCostDataIfUnsubmit(dataCostCheck);
var dataManage = collectData("am-modal-prompt-input-cost-project-manage");
if (dataManage.length <= 0) {
2024-10-25 10:06:05 +00:00
window.confirm('项目管理费用');
2024-10-18 09:01:41 +00:00
$("#saveDraft").attr('disabled', false);
return;
}
2024-10-25 10:06:05 +00:00
var dataManageCheck = convertDetailVerifyCheck(dataManage, COST_PROJECT_MANAGE_DETAIL2, "项目管理费用");
2024-10-18 09:01:41 +00:00
if (dataManageCheck == null) {
$("#saveDraft").attr('disabled', false);
return;
}
dataManage = prepareAjaxDataVerify(dataManage, COST_PROJECT_MANAGE_DETAIL2, $("#id").val());
2024-10-30 06:10:11 +00:00
if (dataManage) {
postAjax(base + "/project/budgetEditSaveCostProjectManageDetail", dataManage);
2024-10-18 09:01:41 +00:00
}
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());
2024-10-30 06:10:11 +00:00
if (dataPlan) {
postAjax(base + "/project/budgetEditSaveBudgetPlanDetail", dataPlan);
2024-10-18 09:01:41 +00:00
}
updateBudgetPlanDetailDataUnsubmit();
// var message = verifyProjectContributionProfitRate();
// if (message) {
// $("#saveDraft").attr('disabled', false);
// layuiAlert(message);
// return;
// }
// console.log(message);
2024-10-28 12:03:47 +00:00
// 保存付款计划表
var dataPay = collectData("am-modal-prompt-input-pay");
dataPay = prepareAjaxDataVerify(dataPay, pay_DETAIL2, $("#id").val());
2024-10-30 06:10:11 +00:00
if (dataPay) {
postAjax(base + "/project/budgetEditSaveBudgetPayPlan", dataPay);
2024-10-28 12:03:47 +00:00
}
2024-10-29 09:07:51 +00:00
2024-10-18 09:01:41 +00:00
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
}
2024-10-18 09:01:41 +00:00
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());
2024-10-30 06:10:11 +00:00
if (dataIncome.details) {
postAjax(base + "/project/budgetEditSaveIncomeDetail", dataIncome);
2024-10-18 09:01:41 +00:00
}
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());
2024-10-30 06:10:11 +00:00
if (dataCost) {
postAjax(base + "/project/budgetEditSaveCostDetail", dataCost);
2024-10-18 09:01:41 +00:00
}
updateCostDataIfUnsubmit(dataCostCheck);
var dataManage = collectData("am-modal-prompt-input-cost-project-manage");
console.log("dataManage: " + dataManage.length);
if (dataManage.length <= 4) {
2024-10-25 10:06:05 +00:00
window.confirm('请填写项目管理费用');
2024-10-18 09:01:41 +00:00
$("#saveApprove").attr('disabled', false);
return;
}
2024-10-25 10:06:05 +00:00
var dataManageCheck = convertDetailVerifyCheck(dataManage, COST_PROJECT_MANAGE_DETAIL, "项目管理费用");
2024-10-18 09:01:41 +00:00
if (dataManageCheck == null) {
$("#saveApprove").attr('disabled', false);
return;
}
dataManage = prepareAjaxDataVerify(dataManage, COST_PROJECT_MANAGE_DETAIL, $("#id").val());
2024-10-30 06:10:11 +00:00
var totalTotal = dataManage.details.reduce((total, now) => {
return now.total + total
2024-10-30 06:10:11 +00:00
}, 0)
var limitTotal = dataManage.details.reduce((total, now) => {
2024-10-31 09:39:13 +00:00
if (now.type == 2 && (now.name == '5' || now.name == '4'))
return +total
2024-10-30 06:10:11 +00:00
else return total
}, 0)
var projectGrossProfitA = $('[name="projectGrossProfitA"]').val()
console.log(limitTotal, projectGrossProfitA.replace(/,/g, ''), totalTotal, limitTotal)
2024-10-31 09:39:13 +00:00
if (limitTotal > ((parseFloat(projectGrossProfitA.replace(/,/g, '')) - (totalTotal - limitTotal)) * 0.1)) {
2024-10-31 09:39:13 +00:00
$("#saveApprove").attr('disabled', false);
2024-10-30 06:10:11 +00:00
layuiAlert(`差旅费+业务费总金额不超过【毛利A(${projectGrossProfitA})-(项目管理费用-差旅费-业务费)】*10%`);
2024-10-29 03:14:36 +00:00
return
}
2024-10-30 06:10:11 +00:00
if (dataManage) {
postAjax(base + "/project/budgetEditSaveCostProjectManageDetail", dataManage);
2024-10-18 09:01:41 +00:00
}
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());
2024-10-30 06:10:11 +00:00
if (dataPlan) {
postAjax(base + "/project/budgetEditSaveBudgetPlanDetail", dataPlan);
2024-10-18 09:01:41 +00:00
}
updateBudgetPlanDetailDataUnsubmit();
// var message = verifyProjectContributionProfitRate();
// if (message) {
// $("#saveApprove").attr('disabled', false);
// layuiAlert(message);
// return;
// }
2024-10-29 09:07:51 +00:00
// 保存付款计划表
2024-10-31 09:39:13 +00:00
var flagPay = verifyBudgetPay(1)
2024-10-30 06:10:11 +00:00
if (!flagPay) {
2024-10-31 09:39:13 +00:00
$("#saveApprove").attr('disabled', false)
2024-10-29 09:07:51 +00:00
return;
}
var dataPay = collectData("am-modal-prompt-input-pay");
dataPay = prepareAjaxDataVerify(dataPay, pay_DETAIL2, $("#id").val());
2024-10-30 06:10:11 +00:00
if (dataPay) {
postAjax(base + "/project/budgetEditSaveBudgetPayPlan", dataPay);
2024-10-29 09:07:51 +00:00
}
2024-10-18 09:01:41 +00:00
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();
2024-11-07 02:50:19 +00:00
var contractTimeBudget = $("#contractTimeBudget").val();
var bidsTimeBudget = $("#bidsTimeBudget").val();
var isSecondBudget = $("#isSecondBudget").val();
var signTypeBudget = $("#signTypeBudget").val();
var calculationCollectionBudget = $("#calculationCollectionBudget").val();
2024-10-18 09:01:41 +00:00
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;
}
2024-11-07 02:50:19 +00:00
if (contractTimeBudget.length <= 0) {
window.confirm('预计合同签订时间不能为空');
check = 1;
return;
}
//
if (bidsTimeBudget.length <= 0) {
window.confirm('项目计划招标时间不能为空');
check = 1;
return;
}
if (!isSecondBudget) {
2024-11-07 02:50:19 +00:00
window.confirm('是否二次合作不能为空');
check = 1;
return;
}
if (!signTypeBudget) {
2024-11-07 02:50:19 +00:00
window.confirm('是否汇智中标不能为空');
check = 1;
return;
}
if (!calculationCollectionBudget) {
2024-11-07 02:50:19 +00:00
window.confirm('计收计划不能为空');
check = 1;
return;
}
2024-10-18 09:01:41 +00:00
}
/**
* 判断是否重名
*/
2024-10-30 06:10:11 +00:00
function checkName() {
2024-11-07 03:22:25 +00:00
var name = $("#nameBudget").val();
2024-10-18 09:01:41 +00:00
var id = $("#id").val();
$.ajax({
url: base + "/project/checkName",
2024-10-18 09:01:41 +00:00
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];
2024-10-30 06:10:11 +00:00
if (o[2] === 'number') {
2024-10-18 09:01:41 +00:00
v = f2(v);
2024-10-30 06:10:11 +00:00
} else if (o[2] === 'price') {
2024-10-18 09:01:41 +00:00
v = f5(v);
}
2024-10-30 06:10:11 +00:00
obj[detailPropertyArr[i]] = v;
2024-10-18 09:01:41 +00:00
}
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) {
2024-10-30 06:10:11 +00:00
if (!$(this).is(':hidden'))
a.push($(this).val());
2024-10-18 09:01:41 +00:00
});
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)));
2024-10-30 06:10:11 +00:00
$(this).parent().parent().find(".input-changeable-total-tax").val(f2Fixed(amount * price * taxRate / (100 + taxRate)));
2024-10-18 09:01:41 +00:00
});
//单价改变
$(".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)));
2024-10-30 06:10:11 +00:00
$(this).parent().parent().find(".input-changeable-total-tax").val(f2Fixed(amount * price * taxRate / (100 + taxRate)));
2024-10-18 09:01:41 +00:00
$(this).val(f5Price(price));
console.log("单价:" + $(this).val());
});
//税率改变
$(".input-changeable-tax-rate").change(function () {
var taxRate = f2($(this).val());
2024-10-30 06:10:11 +00:00
var rowVal = $(this).parent().parent().find(".input-changeable-total-tax-include").val()
2024-10-28 09:05:31 +00:00
$(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 () {
2024-10-30 06:10:11 +00:00
var rowVal = f2($(this).val());
var taxRate = $(this).parent().parent().find(".input-changeable-tax-rate").val()
2024-10-28 09:05:31 +00:00
$(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)));
2024-10-18 09:01:41 +00:00
});
}
/**
* 每次更新数量单价和税率时更改总计中含税和不含税总金额
* @param className
* @param totalClassName
*/
function updateTotal(className, totalClassName) {
var total = 0;
//找到本列所有的
2024-10-30 06:10:11 +00:00
$("." + className).each(function (t) {
2024-10-18 09:01:41 +00:00
total += f2($(this).val());
console.log("total2: " + total);
});
2024-10-30 06:10:11 +00:00
$("." + totalClassName).val(f2Fixed(total));
2024-10-18 09:01:41 +00:00
}
/**
* 每次更新数量时更新总计中数量
* @param className
* @param totalClassName
*/
function updateAmount(className, totalClassName) {
var total = 0;
//找到本列所有的
2024-10-30 06:10:11 +00:00
$("." + className).each(function (t) {
2024-10-18 09:01:41 +00:00
console.log(className + ": " + f2($(this).val()));
total += f2($(this).val());
});
2024-10-30 06:10:11 +00:00
$("." + totalClassName).val(f2Fixed(total));
2024-10-18 09:01:41 +00:00
}
/**
* 绑定序号
*/
function bindNum() {
2024-10-30 06:10:11 +00:00
$(".input-budget-num").each(function (t) {
2024-10-18 09:01:41 +00:00
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) {
2024-10-30 06:10:11 +00:00
if (t["type"] == "1") {
2024-10-18 09:01:41 +00:00
//设备类
deviceTaxInclude += f2(t["totalTaxInclude"]);
deviceTaxExclude += f2(t["totalTaxExclude"]);
2024-10-30 06:10:11 +00:00
} else if (t["type"] == "2") {
2024-10-18 09:01:41 +00:00
//施工类
buildTaxInclude += f2(t["totalTaxInclude"]);
buildTaxExclude += f2(t["totalTaxExclude"]);
2024-10-30 06:10:11 +00:00
} else if (t["type"] == "3") {
2024-10-18 09:01:41 +00:00
//服务类
serviceTaxInclude += f2(t["totalTaxInclude"]);
serviceTaxExclude += f2(t["totalTaxExclude"]);
2024-10-30 06:10:11 +00:00
} else if (t["type"] == "4") {
2024-10-18 09:01:41 +00:00
//其他类
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));
2024-10-30 06:10:11 +00:00
$(".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())));
2024-10-18 09:01:41 +00:00
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"]);
2024-10-30 06:10:11 +00:00
if (t["type"] == "1") {
2024-10-18 09:01:41 +00:00
//设备类
deviceTaxInclude += f2(t["totalTaxInclude"]);
deviceTaxExclude += f2(t["totalTaxExclude"]);
2024-10-30 06:10:11 +00:00
} else if (t["type"] == "2") {
2024-10-18 09:01:41 +00:00
//工程类
engineerTaxInclude += f2(t["totalTaxInclude"]);
engineerTaxExclude += f2(t["totalTaxExclude"]);
2024-10-30 06:10:11 +00:00
} else if (t["type"] == "3") {
2024-10-18 09:01:41 +00:00
//服务类
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));
2024-10-30 06:10:11 +00:00
$("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)));
2024-10-18 09:01:41 +00:00
$(".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())
2024-10-30 06:10:11 +00:00
+ f2($(".input-total-title-earnest-money-income-budget-plan").val())));
2024-10-18 09:01:41 +00:00
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();
2024-10-30 06:10:11 +00:00
$(".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())));
2024-10-18 09:01:41 +00:00
calCostExclude();
calCostInclude();
calCostTotalTax()
updateProjectContributionProfitRate();
}
/**
* 更新页面收入的数据
*/
2024-10-30 06:10:11 +00:00
function updateBudgetPlanDetailDataUnsubmit(data, returnData) {
2024-10-18 09:01:41 +00:00
//var details = data.details;
//主页面上的财务费用
$("input[name='costExpropriationTaxExclude']").val($(".input-underwritten-plan-statistic-capital-interest-budget-plan").val());
//更新项目贡献率
updateProjectContributionProfitRate();
//更新现金流量
updateCashFlow();
}
2024-10-28 09:05:31 +00:00
// 校验资金计划表
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
}