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

398 lines
14 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.

/**
* 一个采购成本详情的字段
*/
//COST_DETAIL_ARR=["type","category","name","unit","amount","price","taxRate","totalTaxInclude","totalTaxExclude"];
pay_DETAIL2 = {
"num": [false, "序号", "string"],
"payPoint": [false, "付款节点", "string"],
"payTime": [false, "付款时间", "string"],
"payProject": [false, "采购成本项目", "number"],
"payAmount": [false, "付款金额", "number"],
"supplier": [false, "供应商", "string"],
};
pay_DETAIL = {
"num": [false, "序号", "string"],
"payPoint": [false, "付款节点", "string"],
"payTime": [false, "付款时间", "string"],
"payProject": [false, "采购成本项目", "number"],
"payAmount": [false, "付款金额", "number"],
"supplier": [false, "供应商", "string"],
};
/*
[
{"id":"1","name":"xxx1"},{"id":"2","name":"xxx2"}
]
*/
SELECT_TYPE_CATEGORY_DATA = [];
/*{
"1":[
{
"id":"1",
"name":"华智产品"
},
{
"id":"2",
"name":"紫光其他产品"
},
{
"id":"3",
"name":"外购产品"
}
],
"2":[
{
"id":"4",
"name":"外购工程"
}
],
"3":[
{
"id":"5",
"name":"华智服务"
},
{
"id":"6",
"name":"紫光其他服务"
},
{
"id":"7",
"name":"外购服务"
}
],
"4":[
{
"id":"8",
"name":"其他"
}
]
};*/
SELECT_TYPE_CATEGORY_MAP_DATA = {};
/*{
"1":"1",
"2":"1",
"3":"1",
"4":"2",
"5":"3",
"6":"3",
"7":"3",
"8":"4"
};
*/
SELECT_CATEGORY_TYPE_MAP_DATA = {};
/*$(function () {
$("#cost-detail").click(function () {
$('#my-prompt-cost-detail').modal({
relatedTarget: this,
closeOnConfirm:false,
onConfirm: function(e) {
//不能使用e.data因为无法获取动态添加的
var data = collectData("am-modal-prompt-input-cost");
//data = prepareAjaxData(data, COST_DETAIL_ARR, $("#id").val(),false);
data = prepareAjaxDataVerify(data, COST_DETAIL, $("#id").val());
if(data){
postAjax(base+"/project/budgetEditSaveCostDetail", data, updateCostData);
}
},
onCancel: function(e) {
}
});
});
$("#costAddBtn").click(function () {
appendTrCost();
});
//初始化大类和类别的数据
getAjax(base+"/procurement/type/map", null, initTypeCategory);
});*/
$(function () {
});
//保存采购成本明细表
$(function () {
$("#payTableSave").click(function () {
//不能使用e.data因为无法获取动态添加的
var data = collectData("am-modal-prompt-input-pay");
//data = prepareAjaxData(data, COST_DETAIL_ARR, $("#id").val(),false);
data = prepareAjaxDataVerify(data, pay_DETAIL2, $("#id").val());
var flag = verifyBudgetPay()
if (!flag) return
if (data) {
postAjax(base + "/project/budgetEditSaveBudgetPayPlan", data, updateCostData);
}
});
$("#payAddBtn").click(function () {
appendTrPay();
$("#payAddBtn").blur();
});
//绑定删除按钮
bindDeleteBtnPay();
//绑定总计值
bindPayTotal();
//初始化大类和类别的数据
getAjax(base + "/procurement/type/map", null, initTypeCategory);
});
/**
* 采购成本增加一行
*/
function appendTrPay() {
//console.log(SELECT_TYPE_CATEGORY_DATA);
var options = '<option value="xxxx" disabled selected>--请选择--</option>\r\n';
SELECT_TYPE_CATEGORY_DATA.forEach(function (e) {
options += '<option value="' + e.id + '">' + e.name + '</option>\r\n';
});
var template = '<tr>' +
'<td width="60px"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-pay input-budget-num" readonly></td>' +
'<td width="100px"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-pay am-modal-prompt-input-pay-point" ></td>' +
'<td width="100px"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-pay input-changeable-pay-time" autocomplete="off" data-am-datepicker></td>' +
'<td width="100px">' +
'<select style="float: left;" class="am-modal-prompt-input am-modal-prompt-input-pay am-modal-prompt-input-pay-project">\n' +
'<option value="xxxx" disabled selected>--请选择--</option>' +
'<option value="1">设备成本</option>' +
'<option value="2">工程成本</option>' +
'<option value="3">服务成本</option>' +
'<option value="4">其他成本</option>' +
'</select>' +
'</td>' +
'<td width="100px"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-pay am-modal-prompt-input-pay-amount input-changeable-pay-amount" ></td>' +
'<td width="100px"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-pay am-modal-prompt-input-pay-supplier" ></td>' +
'<td width="60px"><button type="button" style="margin-top: 10px" class="am-btn am-btn-danger am-btn-xs am-round am-modal-line-delete"><span class="am-icon-minus"></span></button></td>' +
'</tr>';
$("#payTotal").before(template);
//重新绑定删除事件和input修改事件
bindDeleteBtnPay();
//绑定序号
bindNum();
//绑定时间
bindTime();
//绑定总计值
bindPayTotal();
//绑定数字输入框保留两位小数
bindNumberInput();
if ($('#costTable').find('tbody') && $('#costTable').find('tbody')[0]) {
$('#costTable').find('tbody')[0].scrollTop = $('#costTable').find('tbody')[0].scrollHeight
}
}
/**
* 绑定时间选择器
*/
function bindTime() {
$('[data-am-datepicker]').datepicker();
}
/**
* 绑定每一行的删除事件删除当前的一行tr修改总计值
*/
function bindDeleteBtnPay() {
$(".am-modal-line-delete").click(function () {
//删除自己对应的tr
$(this).parent().parent().remove();
bindNum();
updateTotal("input-changeable-pay-amount", "input-changeable-pay-amount-total");
});
}
/**
* 绑定每个可改变的输入框,修改后改变对应输入框的值
*/
function bindPayTotal() {
//数量改变
$(".input-changeable-pay-amount").change(function () {
updateTotal("input-changeable-pay-amount", "input-changeable-pay-amount-total");
});
}
/**
* 更新页面收入的数据【累加】
*/
function updateCostData(data, returnData) {
var details = data.details;
var deviceTaxInclude = 0;
var deviceTaxExclude = 0;
var deviceTax = 0;
var buildTaxInclude = 0;
var buildTaxExclude = 0;
var buildTax = 0;
var serviceTaxInclude = 0;
var serviceTaxExclude = 0;
var serviceTax = 0;
var otherTaxInclude = 0;
var otherTaxExclude = 0;
var otherTax = 0;
var costTaxRates = "";
var set = new Set();
details.forEach(function (t, number, ts) {
if (t["type"] == "1") {
//设备类
deviceTaxInclude += f2(t["totalTaxInclude"]);
deviceTaxExclude += f2(t["totalTaxExclude"]);
deviceTax += f2(t["totalTax"]);
} else if (t["type"] == "2") {
//施工类
buildTaxInclude += f2(t["totalTaxInclude"]);
buildTaxExclude += f2(t["totalTaxExclude"]);
buildTax += f2(t["totalTax"]);
} else if (t["type"] == "3") {
//服务类
serviceTaxInclude += f2(t["totalTaxInclude"]);
serviceTaxExclude += f2(t["totalTaxExclude"]);
serviceTax += f2(t["totalTax"]);
} else if (t["type"] == "4") {
//其他类
otherTaxInclude += f2(t["totalTaxInclude"]);
otherTaxExclude += f2(t["totalTaxExclude"]);
otherTax += f2(t["totalTax"]);
}
if (!set.has(t["taxRate"])) {
costTaxRates += f2Fixed(t["taxRate"]) + "%,";
set.add(t["taxRate"]);
}
});
$("input[name='costPurchaseDeviceTaxInclude']").val(f2Fixed(deviceTaxInclude));
$("input[name='costPurchaseDeviceTaxExclude']").val(f2Fixed(deviceTaxExclude));
$("input[name='costPurchaseDeviceTax']").val(f2Fixed(deviceTax));
$("input[name='costPurchaseBuildTaxInclude']").val(f2Fixed(buildTaxInclude));
$("input[name='costPurchaseBuildTaxExclude']").val(f2Fixed(buildTaxExclude));
$("input[name='costPurchaseBuildTax']").val(f2Fixed(buildTax));
$("input[name='costPurchaseServiceTaxInclude']").val(f2Fixed(serviceTaxInclude));
$("input[name='costPurchaseServiceTaxExclude']").val(f2Fixed(serviceTaxExclude));
$("input[name='costPurchaseServiceTax']").val(f2Fixed(serviceTax));
$("input[name='costPurchaseOtherTaxInclude']").val(f2Fixed(otherTaxInclude));
$("input[name='costPurchaseOtherTaxExclude']").val(f2Fixed(otherTaxExclude));
$("input[name='costPurchaseOtherTax']").val(f2Fixed(otherTax));
//资金计划表中的
$(".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())));
/* var costOtherOtherTaxInclude = f2($("input[name='costOtherOtherTaxInclude']").val());
var costOtherOtherTaxExclude = f2($("input[name='costOtherOtherTaxExclude']").val());
var costProjectManageTaxInclude = f2($("input[name='costProjectManageTaxInclude']").val());
var costProjectManageTaxExclude = f2($("input[name='costProjectManageTaxExclude']").val());
$("input[name='costTotalTaxInclude']").val(f2(deviceTaxInclude+buildTaxInclude+serviceTaxInclude+otherTaxInclude+costOtherOtherTaxInclude+costProjectManageTaxInclude));
$("input[name='costTotalTaxExclude']").val(f2(deviceTaxExclude+buildTaxExclude+serviceTaxExclude+otherTaxExclude+costOtherOtherTaxExclude+costProjectManageTaxExclude));*/
calCostExclude();
calCostInclude();
calCostTotalTax();
updateProjectContributionProfitRate();
if (costTaxRates.length > 0) {
$(".costTaxRates").text(costTaxRates.substr(0, costTaxRates.length - 1));
}
layuiAlert("保存成功");
$('#my-prompt-cost-detail').modal('close');
}
/**
* 大类类别联动效果
*/
/**
* 初始化数据
* SELECT_TYPE_CATEGORY_MAP_DATA
* SELECT_CATEGORY_TYPE_MAP_DATA
* SELECT_TYPE_CATEGORY_DATA
*/
function initTypeCategory(params, data) {
var d = data.data;
var map = d.map;
Object.keys(map).forEach(function (t, number) {
var temp = [];
map[t].forEach(function (g) {
temp.push({
name: g.name,
id: g.id + ""
});
});
SELECT_TYPE_CATEGORY_MAP_DATA[t] = temp;
});
var procurementTypes = d.procurementTypes;
procurementTypes.forEach(function (e) {
SELECT_TYPE_CATEGORY_DATA.push({
id: e.id + "",
name: e.name
});
SELECT_CATEGORY_TYPE_MAP_DATA[e.id] = e.type;
});
//--请选择--的映射
//SELECT_CATEGORY_TYPE_MAP_DATA["xxxx"]="xxxx";
// console.log(SELECT_TYPE_CATEGORY_MAP_DATA);
// console.log(SELECT_TYPE_CATEGORY_DATA);
// console.log(SELECT_CATEGORY_TYPE_MAP_DATA);
}
//校验付款明细表
function verifyBudgetPay(isApprove) {
// 时间必填校验
var timeValue = $(".input-changeable-pay-time");
var flag = true
var timeFlag = true
timeValue.each((index, element) => {
if ($(element).val().length != 10)
timeFlag = false
})
if (timeFlag == false) {
flag = false
layuiAlert('付款计划表中付款时间为必填')
}
// 采购成本与付款金额校验
if (isApprove) {
var payData = prepareAjaxDataVerify(collectData("am-modal-prompt-input-pay"), pay_DETAIL2, $("#id").val())
var costData = prepareAjaxDataVerify(collectData("am-modal-prompt-input-cost"), COST_DETAIL2, $("#id").val())
var payTotal_equipment = calculateTotal(payData, 1,'payProject','payAmount');
var payTotal_project = calculateTotal(payData, 2,'payProject','payAmount');
var payTotal_server = calculateTotal(payData, 3,'payProject','payAmount');
var payTotal_other = calculateTotal(payData, 4,'payProject','payAmount');
var costTotal_equipment = calculateTotal(costData, 1,'type','totalTaxInclude');
var costTotal_project = calculateTotal(costData, 2,'type','totalTaxInclude');
var costTotal_server = calculateTotal(costData, 3,'type','totalTaxInclude');
var costTotal_other = calculateTotal(costData, 4,'type','totalTaxInclude');
console.log(payTotal_equipment,payTotal_project,payTotal_server,payTotal_other,costTotal_equipment,costTotal_project,costTotal_server,costTotal_other)
if (f2Fixed(payTotal_equipment) != f2Fixed(costTotal_equipment)) {
flag = false
layuiAlert('[付款计划表中"设备"成本总金]额需要与[采购成本明细表中"设备"成本总金额]一致')
} else if (f2Fixed(payTotal_project) != f2Fixed(costTotal_project)) {
flag = false
layuiAlert('[付款计划表中"工程"成本总金]额需要与[采购成本明细表中"工程"成本总金额]一致')
} else if (f2Fixed(payTotal_server) != f2Fixed(costTotal_server)) {
flag = false
layuiAlert('[付款计划表中"服务"成本总金]额需要与[采购成本明细表中"服务"成本总金额]一致')
} else if (f2Fixed(payTotal_other) != f2Fixed(costTotal_other)) {
flag = false
layuiAlert('[付款计划表中"其他"成本总金]额需要与[采购成本明细表中"其他"成本总金额]一致')
}
}
return flag
}
function calculateTotal(payData, type,key,value) {
return payData.details.reduce((total, now) => {
return now[key] == type ? parseFloat(now[value]) + total : total;
}, 0);
}