2024-10-18 09:01:41 +00:00
|
|
|
|
/**
|
|
|
|
|
|
* 一个收入详情的字段
|
|
|
|
|
|
*/
|
|
|
|
|
|
//INCOME_DETAIL_ARR=["type","name","unit","amount","price","taxRate","totalTaxInclude","totalTaxExclude"];
|
|
|
|
|
|
INCOME_DETAIL2={
|
|
|
|
|
|
"num":[false,"序号","string"],
|
|
|
|
|
|
"type":[false,"类别","string"],
|
|
|
|
|
|
"name":[false,"名称","string"],
|
|
|
|
|
|
"spec":[false,"规格类型","string"],
|
|
|
|
|
|
"param":[false,"参数","string"],
|
|
|
|
|
|
"unit":[false,"单位","string"],
|
|
|
|
|
|
"amount":[false,"数量","number"],
|
|
|
|
|
|
"price":[false,"单价","price"],
|
|
|
|
|
|
"taxRate":[false,"税率","number"],
|
|
|
|
|
|
"totalTaxInclude":[false,"含税总金额","number"],
|
|
|
|
|
|
"totalTaxExclude":[false,"不含税金额","number"],
|
|
|
|
|
|
"totalTax":[false,"税金","number"]
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
INCOME_DETAIL={
|
|
|
|
|
|
"num":[false,"序号","string"],
|
|
|
|
|
|
"type":[true,"类别","string"],
|
|
|
|
|
|
"name":[true,"名称","string"],
|
|
|
|
|
|
"spec":[true,"规格类型","string"],
|
|
|
|
|
|
"param":[true,"参数","string"],
|
|
|
|
|
|
"unit":[true,"单位","string"],
|
|
|
|
|
|
"amount":[true,"数量","number"],
|
|
|
|
|
|
"price":[true,"单价","price"],
|
|
|
|
|
|
"taxRate":[true,"税率","number"],
|
|
|
|
|
|
"totalTaxInclude":[true,"含税总金额","number"],
|
|
|
|
|
|
"totalTaxExclude":[true,"不含税金额","number"],
|
|
|
|
|
|
"totalTax":[true,"税金","number"]
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*$(function () {
|
|
|
|
|
|
$("#income-detail").click(function () {
|
|
|
|
|
|
$('#my-prompt-income-detail').modal({
|
|
|
|
|
|
relatedTarget: this,
|
|
|
|
|
|
closeOnConfirm:false,
|
|
|
|
|
|
onConfirm: function(e) {
|
|
|
|
|
|
//不能使用e.data,因为无法获取动态添加的
|
|
|
|
|
|
var data = collectData("am-modal-prompt-input-income");
|
|
|
|
|
|
//data = prepareAjaxData(data, INCOME_DETAIL_ARR, $("#id").val(),false);
|
|
|
|
|
|
data = prepareAjaxDataVerify(data, INCOME_DETAIL, $("#id").val());
|
|
|
|
|
|
if(data.details){
|
|
|
|
|
|
postAjax(base+"/project/budgetEditSaveIncomeDetail", data, updateIncomeData);
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
onCancel: function(e) {
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
$("#incomeAddBtn").click(function () {
|
|
|
|
|
|
appendTrIncome();
|
|
|
|
|
|
});
|
|
|
|
|
|
});*/
|
|
|
|
|
|
|
|
|
|
|
|
$(function () {
|
|
|
|
|
|
$("#income-detail").click(function () {
|
|
|
|
|
|
$('#my-prompt-income-detail').modal({
|
|
|
|
|
|
relatedTarget: this,
|
|
|
|
|
|
closeOnConfirm:false,
|
|
|
|
|
|
onConfirm: function(e) {
|
|
|
|
|
|
//不能使用e.data,因为无法获取动态添加的
|
|
|
|
|
|
var data = collectData("am-modal-prompt-input-income");
|
|
|
|
|
|
//data = prepareAjaxData(data, INCOME_DETAIL_ARR, $("#id").val(),false);
|
|
|
|
|
|
data = prepareAjaxDataVerify(data, INCOME_DETAIL2, $("#id").val());
|
|
|
|
|
|
if(data.details){
|
|
|
|
|
|
postAjax(base+"/project/budgetEditSaveIncomeDetail", data, updateIncomeData);
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
onCancel: function(e) {
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
//保存收入明细表
|
|
|
|
|
|
$(function () {
|
|
|
|
|
|
$("#incomeTableSave").click(function () {
|
|
|
|
|
|
var data = collectData("am-modal-prompt-input-income");
|
|
|
|
|
|
data = prepareAjaxDataVerify(data, INCOME_DETAIL2, $("#id").val());
|
|
|
|
|
|
if(data.details){
|
|
|
|
|
|
postAjax(base+"/project/budgetEditSaveIncomeDetail", data, updateIncomeData);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
$("#incomeAddBtn").click(function () {
|
|
|
|
|
|
appendTrIncome();
|
|
|
|
|
|
$("#incomeAddBtn").blur();
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 更新页面收入的数据【累加】
|
|
|
|
|
|
*/
|
|
|
|
|
|
function updateIncomeData(data,returnData) {
|
|
|
|
|
|
var incomeDetails = data.details;
|
|
|
|
|
|
var deviceTaxInclude = 0;
|
|
|
|
|
|
var deviceTaxExclude = 0;
|
|
|
|
|
|
var deviceTax = 0;
|
|
|
|
|
|
var engineerTaxInclude = 0;
|
|
|
|
|
|
var engineerTaxExclude = 0;
|
|
|
|
|
|
var engineerTax = 0;
|
|
|
|
|
|
var serviceTaxInclude = 0;
|
|
|
|
|
|
var serviceTaxExclude = 0;
|
|
|
|
|
|
var serviceTax = 0;
|
|
|
|
|
|
var incomeTaxRates = "";
|
|
|
|
|
|
var set = new Set();
|
|
|
|
|
|
incomeDetails.forEach(function (t, number, ts) {
|
|
|
|
|
|
console.log("income income " + t["type"] + ", " + t["taxRate"] + ", " + t["totalTaxInclude"] + ", " + t["totalTaxExclude"]);
|
|
|
|
|
|
|
|
|
|
|
|
if(t["type"] == "1"){
|
|
|
|
|
|
//设备类
|
|
|
|
|
|
deviceTaxInclude += f2(t["totalTaxInclude"]);
|
|
|
|
|
|
deviceTaxExclude += f2(t["totalTaxExclude"]);
|
|
|
|
|
|
deviceTax += f2(t["totalTax"]);
|
|
|
|
|
|
}else if(t["type"] == "2"){
|
|
|
|
|
|
//工程类
|
|
|
|
|
|
engineerTaxInclude += f2(t["totalTaxInclude"]);
|
|
|
|
|
|
engineerTaxExclude += f2(t["totalTaxExclude"]);
|
|
|
|
|
|
engineerTax += f2(t["totalTax"]);
|
|
|
|
|
|
}else if(t["type"] == "3"){
|
|
|
|
|
|
//服务类
|
|
|
|
|
|
serviceTaxInclude += f2(t["totalTaxInclude"]);
|
|
|
|
|
|
serviceTaxExclude += f2(t["totalTaxExclude"]);
|
|
|
|
|
|
serviceTax += f2(t["totalTax"]);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!set.has(t["taxRate"])) {
|
|
|
|
|
|
incomeTaxRates += f2Fixed(t["taxRate"]) + "%,";
|
|
|
|
|
|
set.add(t["taxRate"]);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
console.log("incomeTaxRates: " + incomeTaxRates);
|
|
|
|
|
|
$("input[name='incomeDeviceTaxInclude']").val(f2Fixed(deviceTaxInclude));
|
|
|
|
|
|
$("input[name='incomeDeviceTaxExclude']").val(f2Fixed(deviceTaxExclude));
|
|
|
|
|
|
$("input[name='incomeDeviceTax']").val(f2Fixed(deviceTax));
|
|
|
|
|
|
$("input[name='incomeEngineerTaxInclude']").val(f2Fixed(engineerTaxInclude));
|
|
|
|
|
|
$("input[name='incomeEngineerTaxExclude']").val(f2Fixed(engineerTaxExclude));
|
|
|
|
|
|
$("input[name='incomeEngineerTax']").val(f2Fixed(engineerTax));
|
|
|
|
|
|
$("input[name='incomeServiceTaxInclude']").val(f2Fixed(serviceTaxInclude));
|
|
|
|
|
|
$("input[name='incomeServiceTaxExclude']").val(f2Fixed(serviceTaxExclude));
|
|
|
|
|
|
$("input[name='incomeServiceTax']").val(f2Fixed(serviceTax));
|
|
|
|
|
|
|
|
|
|
|
|
$("input[name='incomeTotalTaxInclude']").val(f2Fixed(deviceTaxInclude+engineerTaxInclude+serviceTaxInclude));
|
|
|
|
|
|
$("input[name='incomeTotalTaxExclude']").val(f2Fixed(deviceTaxExclude+engineerTaxExclude+serviceTaxExclude));
|
|
|
|
|
|
$("input[name='incomeTotalTax']").val(f2Fixed(deviceTax+engineerTax+serviceTax));
|
|
|
|
|
|
$("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();
|
|
|
|
|
|
if (incomeTaxRates.length > 0) {
|
|
|
|
|
|
$(".incomeTaxRates").text(incomeTaxRates.substr(0, incomeTaxRates.length - 1));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
layuiAlert("保存成功");
|
|
|
|
|
|
$('#my-prompt-income-detail').modal('close');
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 收入明细增加一行
|
|
|
|
|
|
*/
|
|
|
|
|
|
function appendTrIncome() {
|
|
|
|
|
|
var template = '<tr>\n' +
|
|
|
|
|
|
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income input-budget-num" readonly></td>\n' +
|
|
|
|
|
|
' <td width="100px">\n' +
|
|
|
|
|
|
' <select style="float: left;" class="am-modal-prompt-input am-modal-prompt-input-income">\n' +
|
|
|
|
|
|
' <option value="1">设备类</option>\n' +
|
|
|
|
|
|
' <option value="2">工程类</option>\n' +
|
|
|
|
|
|
' <option value="3">服务类</option>\n' +
|
|
|
|
|
|
' </select>\n' +
|
|
|
|
|
|
' </td>\n' +
|
|
|
|
|
|
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income"></td>\n' +
|
|
|
|
|
|
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income"></td>\n' +
|
|
|
|
|
|
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income"></td>\n' +
|
|
|
|
|
|
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income"></td>\n' +
|
|
|
|
|
|
' <td><input type="text" maxlength="8" class="number am-modal-prompt-input am-modal-prompt-input-income input-changeable-amount input-changeable-amount-income"></td>\n' +
|
|
|
|
|
|
' <td><input type="text" min="0.00" max="9999999999.99" step="0.01" maxlength="19" class="price am-modal-prompt-input am-modal-prompt-input-income input-changeable-price input-changeable-price-income"></td>\n' +
|
|
|
|
|
|
' <td><input type="text" min="0.00" max="99.99" step="0.01" maxlength="5" class="number am-modal-prompt-input am-modal-prompt-input-income input-changeable-tax-rate input-changeable-tax-rate-income"></td>\n' +
|
|
|
|
|
|
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income input-changeable-total-tax-include input-changeable-total-tax-include-income" readonly></td>\n' +
|
|
|
|
|
|
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income input-changeable-total-tax-exclude input-changeable-total-tax-exclude-income" readonly></td>\n' +
|
|
|
|
|
|
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income input-changeable-total-tax input-changeable-total-tax-income" readonly></td>\n' +
|
|
|
|
|
|
' <td><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>\n' +
|
|
|
|
|
|
' </tr>';
|
|
|
|
|
|
$("#incomeTotal").before(template);
|
|
|
|
|
|
//重新绑定删除事件和input修改事件
|
|
|
|
|
|
bindDeleteBtnIncome();
|
|
|
|
|
|
bindNum();
|
|
|
|
|
|
bindChangeableInput();
|
|
|
|
|
|
bindIncomeTotal();
|
|
|
|
|
|
//绑定数字输入框保留两位小数
|
|
|
|
|
|
bindNumberInput();
|
|
|
|
|
|
|
|
|
|
|
|
if ($('#incomeTable').find('tbody') && $('#incomeTable').find('tbody')[0]) {
|
|
|
|
|
|
$('#incomeTable').find('tbody')[0].scrollTop = $('#incomeTable').find('tbody')[0].scrollHeight
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 绑定每一行的删除事件,删除当前的一行tr,修改总计值
|
|
|
|
|
|
*/
|
|
|
|
|
|
function bindDeleteBtnIncome() {
|
|
|
|
|
|
$(".am-modal-line-delete").click(function () {
|
|
|
|
|
|
//删除自己对应的tr
|
|
|
|
|
|
$(this).parent().parent().remove();
|
|
|
|
|
|
bindNum();
|
|
|
|
|
|
updateAmount("input-changeable-amount-income", "input-changeable-total-amount-income");
|
|
|
|
|
|
updateTotal("input-changeable-total-tax-include-income", "input-changeable-total-total-tax-include-income");
|
|
|
|
|
|
updateTotal("input-changeable-total-tax-exclude-income", "input-changeable-total-total-tax-exclude-income");
|
|
|
|
|
|
updateTotal("input-changeable-total-tax-income", "input-changeable-total-total-tax-income");
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 绑定每个可改变的输入框,修改后改变对应输入框的值
|
|
|
|
|
|
*/
|
|
|
|
|
|
function bindIncomeTotal() {
|
|
|
|
|
|
//数量改变
|
|
|
|
|
|
$(".input-changeable-amount-income").change(function () {
|
|
|
|
|
|
updateAmount("input-changeable-amount-income", "input-changeable-total-amount-income");
|
|
|
|
|
|
updateTotal("input-changeable-total-tax-include-income", "input-changeable-total-total-tax-include-income");
|
|
|
|
|
|
updateTotal("input-changeable-total-tax-exclude-income", "input-changeable-total-total-tax-exclude-income");
|
|
|
|
|
|
updateTotal("input-changeable-total-tax-income", "input-changeable-total-total-tax-income");
|
|
|
|
|
|
});
|
|
|
|
|
|
//单价改变
|
|
|
|
|
|
$(".input-changeable-price-income").change(function () {
|
|
|
|
|
|
updateTotal("input-changeable-total-tax-include-income", "input-changeable-total-total-tax-include-income");
|
|
|
|
|
|
updateTotal("input-changeable-total-tax-exclude-income", "input-changeable-total-total-tax-exclude-income");
|
|
|
|
|
|
updateTotal("input-changeable-total-tax-income", "input-changeable-total-total-tax-income");
|
|
|
|
|
|
});
|
|
|
|
|
|
//税率改变
|
|
|
|
|
|
$(".input-changeable-tax-rate-income").change(function () {
|
|
|
|
|
|
updateTotal("input-changeable-total-tax-exclude-income", "input-changeable-total-total-tax-exclude-income");
|
|
|
|
|
|
updateTotal("input-changeable-total-tax-income", "input-changeable-total-total-tax-income");
|
|
|
|
|
|
});
|
2021-11-03 09:53:27 +00:00
|
|
|
|
}
|