预算页面修改

master
hanbo 2022-01-04 16:33:10 +08:00
parent 3dbb40c3c1
commit da86cac281
1 changed files with 178 additions and 51 deletions

View File

@ -1,3 +1,56 @@
INCOME_DETAIL = {
"type": [true, "类别"],
"name": [true, "名称"],
"unit": [true, "单位"],
"amount": [true, "数量"],
"price": [true, "单价"],
"taxRate": [true, "税率"],
"totalTaxInclude": [true, "含税总金额"],
"totalTaxExclude": [true, "不含税金额"]
};
COST_DETAIL={
"type":[true,"大类"],
"category":[true,"类别"],
"name":[true,"名称"],
"unit":[true,"单位"],
"amount":[true,"数量"],
"price":[true,"单价"],
"taxRate":[true,"税率"],
"totalTaxInclude":[true,"含税总金额"],
"totalTaxExclude":[true,"不含税金额"]
};
COST_PROJECT_MANAGE_DETAIL={
"type":[true,"财务费用类别"],
"name1":[false,"业务项目"],
"name2":[false,"业务项目"],
"detail":[true,"项目明细"],
"unit":[true,"单位"],
"amount":[true,"数量"],
"price":[true,"单价"],
"total":[true,"总金额"],
"predictMethod":[false,"预估计算方法"],
"predictWhy":[false,"预估依据"],
"remark":[false,"备注"],
"deletable":[true,"是否可删除"]
};
BUDGET_PLAN_DETAIL={
"month":[true,"月份"],
"deviceCost":[true,"设备支出"],
"engineerCost":[true,"工程支出"],
"projectManageCost":[true,"经营性开支"],
"earnestMoneyCost":[true,"保证金支出"],
"totalCost":[true,"支出合计"],
"saleIncome":[true,"销售收款"],
"earnestMoneyIncome":[true,"保证金收款"],
"totalIncome":[true,"收款合计"],
"fundBalance":[true,"资金余额"],
"capitalInterest":[true,"资金利息"],
"underwrittenPlan":[true,"垫资计划"],
"repaymentPlan":[true,"还款计划"]
};
$(function () { $(function () {
//绑定删除按钮删除当前行 //绑定删除按钮删除当前行
@ -8,82 +61,122 @@ $(function () {
$("#saveDraft").click(function () { $("#saveDraft").click(function () {
var dataIncome = collectData("am-modal-prompt-input-income"); var dataIncome = collectData("am-modal-prompt-input-income");
if(dataIncome.length <= 0){ if (dataIncome.length <= 0) {
window.confirm('请填写收入明细表'); window.confirm('请填写收入明细表');
return; return;
} }
var dataIncomeCheck = convertDetailVerifyCheck(dataIncome, INCOME_DETAIL, "收入明细表");
if (dataIncomeCheck == null) {
return;
}
var dataCost = collectData("am-modal-prompt-input-cost"); var dataCost = collectData("am-modal-prompt-input-cost");
if(dataCost.length <= 0){ if (dataCost.length <= 0) {
window.confirm('请填写采购成本明细表'); window.confirm('请填写采购成本明细表');
return; return;
} }
var dataCostCheck = convertDetailVerifyCheck(dataCost, COST_DETAIL, "采购成本明细表");
if (dataCostCheck == null) {
return;
}
var dataManage = collectData("am-modal-prompt-input-cost-project-manage"); var dataManage = collectData("am-modal-prompt-input-cost-project-manage");
if(dataManage.length <= 0){ if (dataManage.length <= 0) {
window.confirm('请填写项目管理成本表'); window.confirm('请填写项目管理成本表');
return; return;
} }
var dataManageCheck = convertDetailVerifyCheck(dataManage, COST_PROJECT_MANAGE_DETAIL, "项目管理成本表");
if (dataManageCheck == null) {
return;
}
var dataPlan = collectData("am-modal-prompt-input-budget-plan-detail"); var dataPlan = collectData("am-modal-prompt-input-budget-plan-detail");
if(dataPlan.length <= 0){ if (dataPlan.length <= 0) {
window.confirm('请填写项目资金计划表'); window.confirm('请填写项目资金计划表');
return; return;
} }
$("#saveDraft").attr('disabled',true); var dataPlanCheck = convertDetailVerifyCheck(dataPlan, BUDGET_PLAN_DETAIL, "项目资金计划表");
if (dataPlanCheck == null) {
return;
}
$("#saveDraft").attr('disabled', true);
var message = verifyProjectContributionProfitRate(); var message = verifyProjectContributionProfitRate();
if (message) { if (message) {
$("#saveDraft").attr('disabled',false); $("#saveDraft").attr('disabled', false);
layuiAlert(message); layuiAlert(message);
return ; return;
} }
console.log(message); console.log(message);
var startTime = $("#startDate").val(); var startTime = $("#startDate").val();
var endTime = $("#endDate").val(); var endTime = $("#endDate").val();
if (startTime > endTime) { if (startTime > endTime) {
$("#saveDraft").attr('disabled',false); $("#saveDraft").attr('disabled', false);
window.confirm('开始日期应早于结束日期'); window.confirm('开始日期应早于结束日期');
return; return;
} }
$("#pmsForm").attr("action",base+"/project/budgetEditSave"); $("#pmsForm").attr("action", base + "/project/budgetEditSave");
$("#pmsForm").submit(); $("#pmsForm").submit();
$("#saveDraft").attr('disabled',false); $("#saveDraft").attr('disabled', false);
}); });
$("#saveApprove").click(function () { $("#saveApprove").click(function () {
var dataIncome = collectData("am-modal-prompt-input-income"); var dataIncome = collectData("am-modal-prompt-input-income");
if(dataIncome.length <= 0){ if (dataIncome.length <= 0) {
window.confirm('请填写收入明细表'); window.confirm('请填写收入明细表');
return; return;
} }
var dataIncomeCheck = convertDetailVerifyCheck(dataIncome, INCOME_DETAIL, "收入明细表");
if (dataIncomeCheck == null) {
return;
}
var dataCost = collectData("am-modal-prompt-input-cost"); var dataCost = collectData("am-modal-prompt-input-cost");
if(dataCost.length <= 0){ if (dataCost.length <= 0) {
window.confirm('请填写采购成本明细表'); window.confirm('请填写采购成本明细表');
return; return;
} }
var dataCostCheck = convertDetailVerifyCheck(dataCost, COST_DETAIL, "采购成本明细表");
if (dataCostCheck == null) {
return;
}
var dataManage = collectData("am-modal-prompt-input-cost-project-manage"); var dataManage = collectData("am-modal-prompt-input-cost-project-manage");
if(dataManage.length <= 0){ if (dataManage.length <= 0) {
window.confirm('请填写项目管理成本表'); window.confirm('请填写项目管理成本表');
return; return;
} }
var dataManageCheck = convertDetailVerifyCheck(dataManage, COST_PROJECT_MANAGE_DETAIL, "项目管理成本表");
if (dataManageCheck == null) {
return;
}
var dataPlan = collectData("am-modal-prompt-input-budget-plan-detail"); var dataPlan = collectData("am-modal-prompt-input-budget-plan-detail");
if(dataPlan.length <= 0){ if (dataPlan.length <= 0) {
window.confirm('请填写项目资金计划表'); window.confirm('请填写项目资金计划表');
return; return;
} }
$("#saveApprove").attr('disabled',true); var dataPlanCheck = convertDetailVerifyCheck(dataPlan, BUDGET_PLAN_DETAIL, "项目资金计划表");
if (dataPlanCheck == null) {
return;
}
$("#saveApprove").attr('disabled', true);
var message = verifyProjectContributionProfitRate(); var message = verifyProjectContributionProfitRate();
if (message) { if (message) {
$("#saveApprove").attr('disabled',false); $("#saveApprove").attr('disabled', false);
layuiAlert(message); layuiAlert(message);
return; return;
} }
@ -91,14 +184,14 @@ $(function () {
var startTime = $("#startDate").val(); var startTime = $("#startDate").val();
var endTime = $("#endDate").val(); var endTime = $("#endDate").val();
if (startTime > endTime) { if (startTime > endTime) {
$("#saveApprove").attr('disabled',false); $("#saveApprove").attr('disabled', false);
window.confirm('开始日期应早于结束日期'); window.confirm('开始日期应早于结束日期');
return; return;
} }
$("#pmsForm").attr("action",base+"/project/budgetEditSaveAndApprove"); $("#pmsForm").attr("action", base + "/project/budgetEditSaveAndApprove");
$("#pmsForm").submit(); $("#pmsForm").submit();
$("#saveApprove").attr('disabled',false); $("#saveApprove").attr('disabled', false);
}); });
}); });
@ -133,23 +226,38 @@ function arrayToMatrix(list, elementsPerSubArray) {
function arr2Object(arr, mapArr, keepBlank) { function arr2Object(arr, mapArr, keepBlank) {
var obj = {}; var obj = {};
for (var i = 0; i < mapArr.length; i++) { for (var i = 0; i < mapArr.length; i++) {
if(!arr[i] && !keepBlank){ if (!arr[i] && !keepBlank) {
return null; return null;
} }
obj[mapArr[i]]=arr[i]; obj[mapArr[i]] = arr[i];
} }
return obj; return obj;
} }
function arr2ObjectVerify(line, arr, detailPropertyArr, detailProperty) { function arr2ObjectVerify(line, arr, detailPropertyArr, detailProperty) {
var obj = {}; var obj = {};
for (var i = 0; i < detailPropertyArr.length; i++) { for (var i = 0; i < detailPropertyArr.length; i++) {
var o = detailProperty[detailPropertyArr[i]]; var o = detailProperty[detailPropertyArr[i]];
//空但是要求非空 //空但是要求非空
if(!arr[i] && o[0]){ if (!arr[i] && o[0]) {
layuiAlert("第 "+(line+1)+" 行的 "+o[1]+" 不允许为空"); layuiAlert("第 " + (line + 1) + " 行的 " + o[1] + " 不允许为空");
return null; return null;
} }
obj[detailPropertyArr[i]]=arr[i]; obj[detailPropertyArr[i]] = arr[i];
}
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; return obj;
} }
@ -160,7 +268,7 @@ function arr2ObjectVerify(line, arr, detailPropertyArr, detailProperty) {
* @returns {Array} * @returns {Array}
*/ */
function collectData(className) { function collectData(className) {
var a= []; var a = [];
$("." + className).each(function (t) { $("." + className).each(function (t) {
console.log("收集:" + className + "," + $(this).val()) console.log("收集:" + className + "," + $(this).val())
a.push($(this).val()); a.push($(this).val());
@ -185,26 +293,27 @@ function bindDeleteBtn() {
* @param keepBlank * @param keepBlank
* @returns {Array} * @returns {Array}
*/ */
function convertDetail(data,detailPropertyArr, keepBlank) { function convertDetail(data, detailPropertyArr, keepBlank) {
var arr = arrayToMatrix(data,detailPropertyArr.length); var arr = arrayToMatrix(data, detailPropertyArr.length);
var details = []; var details = [];
for (var i=0;i<arr.length;i++){ for (var i = 0; i < arr.length; i++) {
var obj = arr2Object(arr[i], detailPropertyArr, keepBlank); var obj = arr2Object(arr[i], detailPropertyArr, keepBlank);
if(obj){ if (obj) {
details.push(obj); details.push(obj);
} }
} }
return details; return details;
} }
function convertDetailVerify(data,detailProperty) {
function convertDetailVerify(data, detailProperty) {
var detailPropertyArr = Object.keys(detailProperty); var detailPropertyArr = Object.keys(detailProperty);
var arr = arrayToMatrix(data,detailPropertyArr.length); var arr = arrayToMatrix(data, detailPropertyArr.length);
var details = []; var details = [];
for (var i=0;i<arr.length;i++){ for (var i = 0; i < arr.length; i++) {
var obj = arr2ObjectVerify(i, arr[i], detailPropertyArr, detailProperty); var obj = arr2ObjectVerify(i, arr[i], detailPropertyArr, detailProperty);
if(!obj){ if (!obj) {
return null; return null;
} }
details.push(obj); details.push(obj);
@ -213,20 +322,37 @@ function convertDetailVerify(data,detailProperty) {
return details; return details;
} }
function prepareAjaxData(data,detailPropertyArr,projectId, keepBlank){ 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++) {
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); var details = convertDetail(data, detailPropertyArr, keepBlank);
return { return {
"details":details, "details": details,
"projectId":projectId "projectId": projectId
}; };
} }
function prepareAjaxDataVerify(data,detailProperty,projectId){
function prepareAjaxDataVerify(data, detailProperty, projectId) {
var details = convertDetailVerify(data, detailProperty); var details = convertDetailVerify(data, detailProperty);
return { return {
"details":details, "details": details,
"projectId":projectId "projectId": projectId
}; };
} }
/** /**
* 绑定每个可改变的输入框修改后改变对应输入框的值 * 绑定每个可改变的输入框修改后改变对应输入框的值
*/ */
@ -237,10 +363,10 @@ function bindChangeableInput() {
//找到对应的单价和税率 //找到对应的单价和税率
var price = f2($(this).parent().parent().find(".input-changeable-price").val()); var price = f2($(this).parent().parent().find(".input-changeable-price").val());
var taxRate = f2($(this).parent().parent().find(".input-changeable-tax-rate").val()); var taxRate = f2($(this).parent().parent().find(".input-changeable-tax-rate").val());
console.log(amount,price,taxRate); 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-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-exclude").val(f2Fixed(amount * price / (1 + taxRate / 100)));
}); });
//单价改变 //单价改变
$(".input-changeable-price").change(function () { $(".input-changeable-price").change(function () {
@ -248,10 +374,10 @@ function bindChangeableInput() {
//找到对应的数量和税率 //找到对应的数量和税率
var amount = parseInt($(this).parent().parent().find(".input-changeable-amount").val()); var amount = parseInt($(this).parent().parent().find(".input-changeable-amount").val());
var taxRate = f2($(this).parent().parent().find(".input-changeable-tax-rate").val()); var taxRate = f2($(this).parent().parent().find(".input-changeable-tax-rate").val());
console.log(amount,price,taxRate); 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-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-exclude").val(f2Fixed(amount * price / (1 + taxRate / 100)));
}); });
//税率改变 //税率改变
$(".input-changeable-tax-rate").change(function () { $(".input-changeable-tax-rate").change(function () {
@ -259,11 +385,12 @@ function bindChangeableInput() {
//找到对应的数量和单价 //找到对应的数量和单价
var amount = parseInt($(this).parent().parent().find(".input-changeable-amount").val()); var amount = parseInt($(this).parent().parent().find(".input-changeable-amount").val());
var price = f2($(this).parent().parent().find(".input-changeable-price").val()); var price = f2($(this).parent().parent().find(".input-changeable-price").val());
console.log(amount,price,taxRate); console.log(amount, price, taxRate);
$(this).parent().parent().find(".input-changeable-total-tax-exclude").val(f2Fixed(amount*price/(1+taxRate/100))); $(this).parent().parent().find(".input-changeable-total-tax-exclude").val(f2Fixed(amount * price / (1 + taxRate / 100)));
}); });
} }
/** /**
* 校验项目贡献利润率必须大于阀值 * 校验项目贡献利润率必须大于阀值
* 低于阀值就返回提示信息否则返回"" * 低于阀值就返回提示信息否则返回""
@ -271,8 +398,8 @@ function bindChangeableInput() {
function verifyProjectContributionProfitRate() { function verifyProjectContributionProfitRate() {
var projectContributionProfitRate = f2(inputVal("projectContributionProfitRate")); var projectContributionProfitRate = f2(inputVal("projectContributionProfitRate"));
var projectContributionProfitRateThreshold = f2($("#projectContributionProfitRateThreshold").val()); var projectContributionProfitRateThreshold = f2($("#projectContributionProfitRateThreshold").val());
if(projectContributionProfitRate<projectContributionProfitRateThreshold){ if (projectContributionProfitRate < projectContributionProfitRateThreshold) {
return "项目贡献利润率["+projectContributionProfitRate+"]低于阀值["+projectContributionProfitRateThreshold+"],请调整后重新提交"; return "项目贡献利润率[" + projectContributionProfitRate + "]低于阀值[" + projectContributionProfitRateThreshold + "],请调整后重新提交";
} }
return ""; return "";
@ -295,9 +422,9 @@ function updateProjectContributionProfitRate() {
//公司管理费用 //公司管理费用
var costCompanyManageTaxExclude = f2(inputVal("costCompanyManageTaxExclude")); var costCompanyManageTaxExclude = f2(inputVal("costCompanyManageTaxExclude"));
var projectGrossProfit = f2Fixed(incomeTotalTaxExclude-costTotalTaxExclude-costExpropriationTaxExclude); var projectGrossProfit = f2Fixed(incomeTotalTaxExclude - costTotalTaxExclude - costExpropriationTaxExclude);
var projectGrossProfitRate = f2Fixed(rate(projectGrossProfit, incomeTotalTaxExclude)); var projectGrossProfitRate = f2Fixed(rate(projectGrossProfit, incomeTotalTaxExclude));
var projectContributionProfit = f2Fixed(projectGrossProfit-costCompanyManageTaxExclude); var projectContributionProfit = f2Fixed(projectGrossProfit - costCompanyManageTaxExclude);
var projectContributionProfitRate = f2Fixed(rate(projectContributionProfit, incomeTotalTaxExclude)); var projectContributionProfitRate = f2Fixed(rate(projectContributionProfit, incomeTotalTaxExclude));
$("input[name='projectGrossProfit']").val(projectGrossProfit); $("input[name='projectGrossProfit']").val(projectGrossProfit);