概算分隔符

master
OathK1per 2022-01-05 22:07:33 +08:00
parent 33636f811c
commit 6a80ae4316
5 changed files with 124 additions and 86 deletions

View File

@ -17,6 +17,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.datetime.DateFormatter;
import org.springframework.format.number.NumberStyleFormatter;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
@ -551,6 +552,7 @@ public class ProjectController extends BaseController {
@InitBinder
public void initBinder(WebDataBinder webDataBinder) {
webDataBinder.addCustomFormatter(new DateFormatter("yyyy-MM-dd"));
webDataBinder.addCustomFormatter(new NumberStyleFormatter());
}
/**

View File

@ -9,7 +9,6 @@ var layuiAlert = function(msg) {
});
};
/**
* parse float保留两位小数四舍五入
* 空格或者非数字认为是0
@ -20,6 +19,10 @@ function f2(x) {
if(!x){
return 0;
}
if(typeof x === 'string'){
//这一步因为数字格式化为了包含分隔符,获取的时候就去掉这个分隔符
x = x.replaceAll(",","");
}
var f = parseFloat(x);
if (isNaN(f)) {
return 0;
@ -28,17 +31,24 @@ function f2(x) {
}
/**
* 给定一个数字保留两位小数输出
* 给定一个数字保留两位小数输出格式化为包含分隔符
* @param f
* @returns {string}
*/
function f2Fixed(f) {
return Number(f).toFixed(2);
//格式化413,423,423.24,数字类型的输入框填入这样的有问题
//return Number(f).toLocaleString('zh',{minimumFractionDigits: 2, maximumFractionDigits: 2, useGrouping: true});
//return Number(f).toFixed(2);
//格式化413,423,423.24
f = Number(f).toLocaleString('en-US',{minimumFractionDigits: 2, maximumFractionDigits: 2, useGrouping: true});
return f;
}
function digitalSelf(name, action) {
var self = inputVal(name);
var $action = $(action);
$action.val(f2Fixed(f2(self)));
}
/**
* 计算利润率
@ -56,32 +66,37 @@ function rate(r1,r2) {
/**
* 保留两位小数
* 保留数字两位小数
*/
function bindNumberInput() {
//所有的数字输入框
var $inputs = $("input[type='number']");
//所有的数字类型输入框
var $numberTypeInputs = $("input[type='number']");
inputKeepDigital($numberTypeInputs);
//所有的number类的输入框
var $numberClassInputs = $("input.number");
inputKeepDigital($numberClassInputs);
}
function inputKeepDigital($inputs) {
//键盘键弹起的时候
$inputs.keyup(function () {
keepDigital($(this));
});
//失去焦点时再校验一遍
$inputs.blur(function() {
/*var reg = new RegExp("^(\-)?[0-9]+(.[0-9]{1,2})?$");
if (reg.test(value)) {
//是数字就是数字,可以两位或者不带小数
$(this).val(value);
} else {
$(this).val("");
}*/
keepDigital($(this));
});
}
function keepDigital($input) {
var value = $input.val();
$input.val(keepDigitalVal($input.val()));
}
/**
* 只保留数字
*/
function keepDigitalVal(value) {
value = value.replace(/[^\-\d.]/g, ""); //清除“-”、“数字”和“.”以外的字符
value = value.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的
value = value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
@ -90,7 +105,8 @@ function keepDigital($input) {
//以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
value = parseFloat(value);
}
$input.val(value);
return value;
}
/**

View File

@ -4,30 +4,36 @@ function calIncomeAndCost() {
calIncomeCost();
calIncomeDeviceTaxExclude();
digitalSelf("incomeDeviceTaxInclude", "input[name='incomeDeviceTaxInclude']");
});
$("input[name='incomeEngineerTaxInclude']").change(function () {
calIncomeInclude();
calIncomeCost();
calIncomeEngineerTaxExclude();
digitalSelf("incomeEngineerTaxInclude", "input[name='incomeEngineerTaxInclude']");
});
$("input[name='incomeServiceTaxInclude']").change(function () {
calIncomeInclude();
calIncomeCost();
calIncomeServiceTaxExclude();
digitalSelf("incomeServiceTaxInclude", "input[name='incomeServiceTaxInclude']");
});
$("input[name='incomeDeviceTaxExclude']").change(function () {
calIncomeExclude();
calIncomeCost();
digitalSelf("incomeDeviceTaxExclude", "input[name='incomeDeviceTaxExclude']");
});
$("input[name='incomeEngineerTaxExclude']").change(function () {
calIncomeExclude();
calIncomeCost();
digitalSelf("incomeEngineerTaxExclude", "input[name='incomeEngineerTaxExclude']");
});
$("input[name='incomeServiceTaxExclude']").change(function () {
calIncomeExclude();
calIncomeCost();
digitalSelf("incomeServiceTaxExclude", "input[name='incomeServiceTaxExclude']");
});
@ -38,24 +44,28 @@ function calIncomeAndCost() {
calIncomeCost();
calCostPurchaseDeviceTaxInclude();
digitalSelf("costPurchaseDeviceTaxInclude", "input[name='costPurchaseDeviceTaxInclude']");
});
$("input[name='costPurchaseBuildTaxInclude']").change(function () {
calCostInclude();
calIncomeCost();
calCostPurchaseBuildTaxInclude();
digitalSelf("costPurchaseBuildTaxInclude", "input[name='costPurchaseBuildTaxInclude']");
});
$("input[name='costPurchaseServiceTaxInclude']").change(function () {
calCostInclude();
calIncomeCost();
calCostPurchaseServiceTaxInclude();
digitalSelf("costPurchaseServiceTaxInclude", "input[name='costPurchaseServiceTaxInclude']");
});
$("input[name='costPurchaseOtherTaxInclude']").change(function () {
calCostInclude();
calIncomeCost();
calCostPurchaseOtherTaxInclude();
digitalSelf("costPurchaseOtherTaxInclude", "input[name='costPurchaseOtherTaxInclude']");
});
/*$("input[name='costProjectManageTaxInclude']").change(function () {
calCostInclude();
@ -66,23 +76,28 @@ function calIncomeAndCost() {
calIncomeCost();
calCostOtherOtherTaxInclude();
digitalSelf("costOtherOtherTaxInclude", "input[name='costOtherOtherTaxInclude']");
});
$("input[name='costPurchaseDeviceTaxExclude']").change(function () {
calCostExclude();
calIncomeCost();
digitalSelf("costPurchaseDeviceTaxExclude", "input[name='costPurchaseDeviceTaxExclude']");
});
$("input[name='costPurchaseBuildTaxExclude']").change(function () {
calCostExclude();
calIncomeCost();
digitalSelf("costPurchaseBuildTaxExclude", "input[name='costPurchaseBuildTaxExclude']");
});
$("input[name='costPurchaseServiceTaxExclude']").change(function () {
calCostExclude();
calIncomeCost();
digitalSelf("costPurchaseServiceTaxExclude", "input[name='costPurchaseServiceTaxExclude']");
});
$("input[name='costPurchaseOtherTaxExclude']").change(function () {
calCostExclude();
calIncomeCost();
digitalSelf("costPurchaseOtherTaxExclude", "input[name='costPurchaseOtherTaxExclude']");
});
$("input[name='costProjectManageTaxExclude']").change(function () {
calCostExclude();
@ -93,17 +108,22 @@ function calIncomeAndCost() {
calCostInclude();
calIncomeCost();
digitalSelf("costProjectManageTaxExclude", "input[name='costProjectManageTaxExclude']");
digitalSelf("costProjectManageTaxInclude", "input[name='costProjectManageTaxInclude']");
});
$("input[name='costOtherOtherTaxExclude']").change(function () {
calCostExclude();
calIncomeCost();
digitalSelf("costOtherOtherTaxExclude", "input[name='costOtherOtherTaxExclude']");
});
$("input[name='costExpropriationTaxExclude']").change(function () {
calIncomeCost();
digitalSelf("costExpropriationTaxExclude", "input[name='costExpropriationTaxExclude']");
});
$("input[name='costCompanyManageTaxExclude']").change(function () {
calIncomeCost();
digitalSelf("costCompanyManageTaxExclude", "input[name='costCompanyManageTaxExclude']");
});
//设备类收入
@ -421,7 +441,7 @@ function calIncomeCost() {
}
if ($projectGrossProfit.val()) {
$projectContributionProfit.val(f2(f2Fixed($projectGrossProfit.val()) - f2(costCompanyManageTaxExclude)));
$projectContributionProfit.val(f2Fixed(f2($projectGrossProfit.val()) - f2(costCompanyManageTaxExclude)));
$projectContributionProfitRate.val(f2Fixed(f2($projectContributionProfit.val()) * 100 / f2(incomeTotalTaxExclude)))
} else {
$projectContributionProfit.val("");

View File

@ -113,7 +113,7 @@
<#-- <div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>垫资利息</div>-->
<#-- <div class="am-u-sm-6 am-u-md-6">-->
<#-- <input type="number" class="am-input" data-validate-async data-validation-message="请输入垫资利息"-->
<#-- name="advanceInterestAmount" placeholder="单位(元)" min="0.00" max="9999999999.99" step="0.01" maxlength="13"-->
<#-- name="advanceInterestAmount" placeholder="单位(元)" maxlength="16"-->
<#-- value="" required />-->
<#-- </div>-->
<#-- <div class="am-u-sm-2 am-u-md-4 input-msg"></div>-->
@ -122,7 +122,7 @@
<#-- <div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>垫资峰值</div>-->
<#-- <div class="am-u-sm-6 am-u-md-6">-->
<#-- <input type="number" class="am-input" data-validate-async data-validation-message="请输入垫资峰值"-->
<#-- name="advancePeakAmount" placeholder="单位(元)" min="0.00" max="9999999999.99" step="0.01" maxlength="13"-->
<#-- name="advancePeakAmount" placeholder="单位(元)" maxlength="16"-->
<#-- value="" required />-->
<#-- </div>-->
<#-- <div class="am-u-sm-2 am-u-md-4 input-msg"></div>-->
@ -131,7 +131,7 @@
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>合同金额</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="number" class="am-input" data-validate-async data-validation-message="请输入合同金额"
name="contractAmount" placeholder="单位(元)" min="0.00" max="9999999999.99" step="0.01" maxlength="13"
name="contractAmount" placeholder="单位(元)" maxlength="16"
value="" required />
</div>
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
@ -149,7 +149,7 @@
<div class="am-u-sm-4 am-u-md-2 am-text-right">华智产品金额</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="number" class="am-input" data-validation-message="华智产品金额"
name="huazhiProductAmount" placeholder="单位(元)" min="0.00" max="9999999999.99" step="0.01" maxlength="13" value="" />
name="huazhiProductAmount" placeholder="单位(元)" maxlength="16" value="" />
</div>
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
</div>
@ -157,7 +157,7 @@
<div class="am-u-sm-4 am-u-md-2 am-text-right">其他产品金额</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="number" class="am-input" data-validation-message="请输入其他产品金额"
name="ziguangOtherAmount" placeholder="单位(元)" min="0.00" max="9999999999.99" step="0.01" maxlength="13" value="" />
name="ziguangOtherAmount" placeholder="单位(元)" maxlength="16" value="" />
</div>
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
</div>
@ -199,8 +199,8 @@
<tr>
<td>收入</td>
<td>设备类</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="incomeDeviceTaxInclude" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="incomeDeviceTaxExclude" readonly required></td>
<td><input type="text" class="number" maxlength="16" name="incomeDeviceTaxInclude" required></td>
<td><input type="text" class="number" maxlength="16" name="incomeDeviceTaxExclude" readonly required></td>
<td>
<select data-am-selected name="incomeDeviceSelect" id="incomeDeviceSelect">
<option value="请选择税率">请选择税率</option>
@ -217,8 +217,8 @@
<tr>
<td>收入</td>
<td>工程类</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="incomeEngineerTaxInclude" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="incomeEngineerTaxExclude" readonly required></td>
<td><input type="text" class="number" maxlength="16" name="incomeEngineerTaxInclude" required></td>
<td><input type="text" class="number" maxlength="16" name="incomeEngineerTaxExclude" readonly required></td>
<td>
<select data-am-selected name="incomeEngineerSelect" id="incomeEngineerSelect">
<option value="请选择税率">请选择税率</option>
@ -235,8 +235,8 @@
<tr>
<td>收入</td>
<td>服务类</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="incomeServiceTaxInclude" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="incomeServiceTaxExclude" readonly required></td>
<td><input type="text" class="number" maxlength="16" name="incomeServiceTaxInclude" required></td>
<td><input type="text" class="number" maxlength="16" name="incomeServiceTaxExclude" readonly required></td>
<td>
<select data-am-selected name="incomeServiceSelect" id="incomeServiceSelect">
<option value="请选择税率">请选择税率</option>
@ -253,8 +253,8 @@
<tr>
<td>合计</td>
<td></td>
<td><input type="number" name="incomeTotalTaxInclude" readonly title="此列累计"></td>
<td><input type="number" name="incomeTotalTaxExclude" readonly title="此列累计"></td>
<td><input type="text" class="number" name="incomeTotalTaxInclude" readonly title="此列累计"></td>
<td><input type="text" class="number" name="incomeTotalTaxExclude" readonly title="此列累计"></td>
<td>/</td>
</tr>
</tbody>
@ -274,8 +274,8 @@
<td>成本</td>
<td>采购成本</td>
<td>设备</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseDeviceTaxInclude" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseDeviceTaxExclude" readonly required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseDeviceTaxInclude" required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseDeviceTaxExclude" readonly required></td>
<td>
<select data-am-selected name="costPurchaseDeviceSelect" id="costPurchaseDeviceSelect">
<option value="请选择税率">请选择税率</option>
@ -293,8 +293,8 @@
<td>成本</td>
<td>采购成本</td>
<td>施工</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseBuildTaxInclude" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseBuildTaxExclude" readonly required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseBuildTaxInclude" required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseBuildTaxExclude" readonly required></td>
<td>
<select data-am-selected name="costPurchaseBuildSelect" id="costPurchaseBuildSelect">
<option value="请选择税率">请选择税率</option>
@ -312,8 +312,8 @@
<td>成本</td>
<td>采购成本</td>
<td>服务</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseServiceTaxInclude" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseServiceTaxExclude" readonly required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseServiceTaxInclude" required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseServiceTaxExclude" readonly required></td>
<td>
<select data-am-selected name="costPurchaseServiceSelect" id="costPurchaseServiceSelect">
<option value="请选择税率">请选择税率</option>
@ -331,8 +331,8 @@
<td>成本</td>
<td>采购成本</td>
<td>其他</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseOtherTaxInclude" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseOtherTaxExclude" readonly required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseOtherTaxInclude" required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseOtherTaxExclude" readonly required></td>
<td>
<select data-am-selected name="costPurchaseOtherSelect" id="costPurchaseOtherSelect">
<option value="请选择税率">请选择税率</option>
@ -350,8 +350,8 @@
<td>成本</td>
<td>项目管理成本</td>
<td>项目管理成本</td>
<td><input type="number" name="costProjectManageTaxInclude" required readonly></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costProjectManageTaxExclude" required></td>
<td><input type="text" class="number" name="costProjectManageTaxInclude" required readonly></td>
<td><input type="text" class="number" maxlength="16" name="costProjectManageTaxExclude" required></td>
<td>/</td>
</tr>
<tr>
@ -359,8 +359,8 @@
<td>其他</td>
<td><input type="text" id="otherName" maxlength="10" data-validate-async data-validation-message="请输入其他类的名称10字符以内"
value="" name="otherName" placeholder="请输入其他类的名称10字符以内" required/> </td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costOtherOtherTaxInclude" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costOtherOtherTaxExclude" readonly required></td>
<td><input type="text" class="number" maxlength="16" name="costOtherOtherTaxInclude" required></td>
<td><input type="text" class="number" maxlength="16" name="costOtherOtherTaxExclude" readonly required></td>
<td>
<select data-am-selected name="costOtherOtherSelect" id="costOtherOtherSelect">
<option value="请选择税率">请选择税率</option>
@ -378,8 +378,8 @@
<td>合计</td>
<td></td>
<td></td>
<td><input type="number" name="costTotalTaxInclude" readonly title="此列累计"></td>
<td><input type="number" name="costTotalTaxExclude" readonly title="此列累计"></td>
<td><input type="text" class="number" name="costTotalTaxInclude" readonly title="此列累计"></td>
<td><input type="text" class="number" name="costTotalTaxExclude" readonly title="此列累计"></td>
<td>/</td>
</tr>
</tbody>
@ -395,12 +395,12 @@
<tr>
<td>财务费用</td>
<td>资金占用成本</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costExpropriationTaxExclude" required></td>
<td><input type="text" class="number" maxlength="16" name="costExpropriationTaxExclude" required></td>
</tr>
<tr>
<td>公司管理费用</td>
<td></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costCompanyManageTaxExclude" required></td>
<td><input type="text" class="number" maxlength="16" name="costCompanyManageTaxExclude" required></td>
</tr>
</tbody>
</table>
@ -414,19 +414,19 @@
</tr>
<tr>
<td>项目毛利(元)</td>
<td><input type="number" name="projectGrossProfit" readonly title="收入总计(不含税)-成本总计(不含税)-财务费用总计(不含税)"></td>
<td><input type="text" class="number" name="projectGrossProfit" readonly title="收入总计(不含税)-成本总计(不含税)-财务费用总计(不含税)"></td>
</tr>
<tr>
<td>项目毛利率(%</td>
<td><input type="number" name="projectGrossProfitRate" readonly title="毛利(不含税)/收入总计(不含税)"></td>
<td><input type="text" class="number" name="projectGrossProfitRate" readonly title="毛利(不含税)/收入总计(不含税)"></td>
</tr>
<tr>
<td>项目贡献利润(元)</td>
<td><input type="number" name="projectContributionProfit" readonly title="项目毛利(不含税)-公司管理费用总计(不含税)"></td>
<td><input type="text" class="number" name="projectContributionProfit" readonly title="项目毛利(不含税)-公司管理费用总计(不含税)"></td>
</tr>
<tr>
<td>项目贡献利润率(%</td>
<td><input type="number" name="projectContributionProfitRate" readonly title="贡献利润(不含税)/收入总计(不含税)"></td>
<td><input type="text" class="number" name="projectContributionProfitRate" readonly title="贡献利润(不含税)/收入总计(不含税)"></td>
</tr>
</tbody>
</table>

View File

@ -120,7 +120,7 @@
<#-- <div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>垫资利息</div>-->
<#-- <div class="am-u-sm-6 am-u-md-6">-->
<#-- <input type="number" class="am-input" data-validate-async data-validation-message="请输入垫资利息"-->
<#-- name="advanceInterestAmount" placeholder="单位(元)" min="0.00" max="9999999999.99" step="0.01" maxlength="13"-->
<#-- name="advanceInterestAmount" placeholder="单位(元)" maxlength="16"-->
<#-- value="${Utils.format(project.advanceInterestAmount)}" required />-->
<#-- </div>-->
<#-- <div class="am-u-sm-2 am-u-md-4 input-msg"></div>-->
@ -129,7 +129,7 @@
<#-- <div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>垫资峰值</div>-->
<#-- <div class="am-u-sm-6 am-u-md-6">-->
<#-- <input type="number" class="am-input" data-validate-async data-validation-message="请输入垫资峰值"-->
<#-- name="advancePeakAmount" placeholder="单位(元)" min="0.00" max="9999999999.99" step="0.01" maxlength="13"-->
<#-- name="advancePeakAmount" placeholder="单位(元)" maxlength="16"-->
<#-- value="${Utils.format(project.advancePeakAmount)}" required />-->
<#-- </div>-->
<#-- <div class="am-u-sm-2 am-u-md-4 input-msg"></div>-->
@ -138,7 +138,7 @@
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>合同金额</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="number" class="am-input" data-validate-async data-validation-message="请输入合同金额"
name="contractAmount" placeholder="单位(元)" min="0.00" max="9999999999.99" step="0.01" maxlength="13"
name="contractAmount" placeholder="单位(元)" maxlength="16"
value="${Utils.format(project.contractAmount)}" required />
</div>
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
@ -156,7 +156,7 @@
<div class="am-u-sm-4 am-u-md-2 am-text-right"><#--<span style="color: red;">*</span>-->华智产品金额</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="number" class="am-input" data-validation-message="华智产品金额"
name="huazhiProductAmount" placeholder="单位(元)" min="0.00" max="9999999999.99" step="0.01" maxlength="13" value="${Utils.format(project.huazhiProductAmount)}" />
name="huazhiProductAmount" placeholder="单位(元)" maxlength="16" value="${Utils.format(project.huazhiProductAmount)}" />
</div>
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
</div>
@ -164,7 +164,7 @@
<div class="am-u-sm-4 am-u-md-2 am-text-right"><#--<span style="color: red;">*</span>-->其他产品金额</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="number" class="am-input" data-validation-message="请输入其他产品金额"
name="ziguangOtherAmount" placeholder="单位(元)" min="0.00" max="9999999999.99" step="0.01" maxlength="13" value="${Utils.format(project.ziguangOtherAmount)}" />
name="ziguangOtherAmount" placeholder="单位(元)" maxlength="16" value="${Utils.format(project.ziguangOtherAmount)}" />
</div>
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
</div>
@ -206,8 +206,8 @@
<tr>
<td>收入</td>
<td>设备类</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="incomeDeviceTaxInclude" value="${Utils.format(estimateBean.incomeDeviceTaxInclude)}" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="incomeDeviceTaxExclude" value="${Utils.format(estimateBean.incomeDeviceTaxExclude)}" <#if estimateBean.incomeDeviceSelect! !="自定义">readonly</#if> required></td>
<td><input type="text" class="number" maxlength="16" name="incomeDeviceTaxInclude" value="${Utils.format(estimateBean.incomeDeviceTaxInclude)}" required></td>
<td><input type="text" class="number" maxlength="16" name="incomeDeviceTaxExclude" value="${Utils.format(estimateBean.incomeDeviceTaxExclude)}" <#if estimateBean.incomeDeviceSelect! !="自定义">readonly</#if> required></td>
<td>
<select data-am-selected name="incomeDeviceSelect" id="incomeDeviceSelect">
<option value="请选择税率">请选择税率</option>
@ -224,8 +224,8 @@
<tr>
<td>收入</td>
<td>工程类</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="incomeEngineerTaxInclude" value="${Utils.format(estimateBean.incomeEngineerTaxInclude)}" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="incomeEngineerTaxExclude" value="${Utils.format(estimateBean.incomeEngineerTaxExclude)}" <#if estimateBean.incomeEngineerSelect! !="自定义">readonly</#if> required></td>
<td><input type="text" class="number" maxlength="16" name="incomeEngineerTaxInclude" value="${Utils.format(estimateBean.incomeEngineerTaxInclude)}" required></td>
<td><input type="text" class="number" maxlength="16" name="incomeEngineerTaxExclude" value="${Utils.format(estimateBean.incomeEngineerTaxExclude)}" <#if estimateBean.incomeEngineerSelect! !="自定义">readonly</#if> required></td>
<td>
<select data-am-selected name="incomeEngineerSelect" id="incomeEngineerSelect">
<option value="请选择税率">请选择税率</option>
@ -242,8 +242,8 @@
<tr>
<td>收入</td>
<td>服务类</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="incomeServiceTaxInclude" value="${Utils.format(estimateBean.incomeServiceTaxInclude)}" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="incomeServiceTaxExclude" value="${Utils.format(estimateBean.incomeServiceTaxExclude)}" <#if estimateBean.incomeServiceSelect! !="自定义">readonly</#if> required></td>
<td><input type="text" class="number" maxlength="16" name="incomeServiceTaxInclude" value="${Utils.format(estimateBean.incomeServiceTaxInclude)}" required></td>
<td><input type="text" class="number" maxlength="16" name="incomeServiceTaxExclude" value="${Utils.format(estimateBean.incomeServiceTaxExclude)}" <#if estimateBean.incomeServiceSelect! !="自定义">readonly</#if> required></td>
<td>
<select data-am-selected name="incomeServiceSelect" id="incomeServiceSelect">
<option value="请选择税率">请选择税率</option>
@ -260,8 +260,8 @@
<tr>
<td>合计</td>
<td></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="incomeTotalTaxInclude" value="${Utils.format(estimateBean.incomeTotalTaxInclude)}" readonly title="此列累计"></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="incomeTotalTaxExclude" value="${Utils.format(estimateBean.incomeTotalTaxExclude)}" readonly title="此列累计"></td>
<td><input type="text" class="number" maxlength="16" name="incomeTotalTaxInclude" value="${Utils.format(estimateBean.incomeTotalTaxInclude)}" readonly title="此列累计"></td>
<td><input type="text" class="number" maxlength="16" name="incomeTotalTaxExclude" value="${Utils.format(estimateBean.incomeTotalTaxExclude)}" readonly title="此列累计"></td>
<td>/</td>
</tr>
</tbody>
@ -281,8 +281,8 @@
<td>成本</td>
<td>采购成本</td>
<td>设备</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseDeviceTaxInclude" value="${Utils.format(estimateBean.costPurchaseDeviceTaxInclude)}" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseDeviceTaxExclude" value="${Utils.format(estimateBean.costPurchaseDeviceTaxExclude)}" <#if estimateBean.costPurchaseDeviceSelect! !="自定义">readonly</#if> required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseDeviceTaxInclude" value="${Utils.format(estimateBean.costPurchaseDeviceTaxInclude)}" required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseDeviceTaxExclude" value="${Utils.format(estimateBean.costPurchaseDeviceTaxExclude)}" <#if estimateBean.costPurchaseDeviceSelect! !="自定义">readonly</#if> required></td>
<td>
<select data-am-selected name="costPurchaseDeviceSelect" id="costPurchaseDeviceSelect">
<option value="请选择税率">请选择税率</option>
@ -300,8 +300,8 @@
<td>成本</td>
<td>采购成本</td>
<td>施工</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseBuildTaxInclude" value="${Utils.format(estimateBean.costPurchaseBuildTaxInclude)}" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseBuildTaxExclude" value="${Utils.format(estimateBean.costPurchaseBuildTaxExclude)}" <#if estimateBean.costPurchaseBuildSelect! !="自定义">readonly</#if> required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseBuildTaxInclude" value="${Utils.format(estimateBean.costPurchaseBuildTaxInclude)}" required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseBuildTaxExclude" value="${Utils.format(estimateBean.costPurchaseBuildTaxExclude)}" <#if estimateBean.costPurchaseBuildSelect! !="自定义">readonly</#if> required></td>
<td>
<select data-am-selected name="costPurchaseBuildSelect" id="costPurchaseBuildSelect">
<option value="请选择税率">请选择税率</option>
@ -319,8 +319,8 @@
<td>成本</td>
<td>采购成本</td>
<td>服务</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseServiceTaxInclude" value="${Utils.format(estimateBean.costPurchaseServiceTaxInclude)}" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseServiceTaxExclude" value="${Utils.format(estimateBean.costPurchaseServiceTaxExclude)}" <#if estimateBean.costPurchaseServiceSelect! !="自定义">readonly</#if> required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseServiceTaxInclude" value="${Utils.format(estimateBean.costPurchaseServiceTaxInclude)}" required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseServiceTaxExclude" value="${Utils.format(estimateBean.costPurchaseServiceTaxExclude)}" <#if estimateBean.costPurchaseServiceSelect! !="自定义">readonly</#if> required></td>
<td>
<select data-am-selected name="costPurchaseServiceSelect" id="costPurchaseServiceSelect">
<option value="请选择税率">请选择税率</option>
@ -338,8 +338,8 @@
<td>成本</td>
<td>采购成本</td>
<td>其他</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseOtherTaxInclude" value="${Utils.format(estimateBean.costPurchaseOtherTaxInclude)}" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costPurchaseOtherTaxExclude" value="${Utils.format(estimateBean.costPurchaseOtherTaxExclude)}" <#if estimateBean.costPurchaseOtherSelect! !="自定义">readonly</#if> required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseOtherTaxInclude" value="${Utils.format(estimateBean.costPurchaseOtherTaxInclude)}" required></td>
<td><input type="text" class="number" maxlength="16" name="costPurchaseOtherTaxExclude" value="${Utils.format(estimateBean.costPurchaseOtherTaxExclude)}" <#if estimateBean.costPurchaseOtherSelect! !="自定义">readonly</#if> required></td>
<td>
<select data-am-selected name="costPurchaseOtherSelect" id="costPurchaseOtherSelect">
<option value="请选择税率">请选择税率</option>
@ -357,16 +357,16 @@
<td>成本</td>
<td>项目管理成本</td>
<td>项目管理成本</td>
<td><input type="number" name="costProjectManageTaxInclude" value="${Utils.format(estimateBean.costProjectManageTaxInclude)}" required readonly></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costProjectManageTaxExclude" value="${Utils.format(estimateBean.costProjectManageTaxExclude)}" required></td>
<td><input type="text" class="number" name="costProjectManageTaxInclude" value="${Utils.format(estimateBean.costProjectManageTaxInclude)}" required readonly></td>
<td><input type="text" class="number" maxlength="16" name="costProjectManageTaxExclude" value="${Utils.format(estimateBean.costProjectManageTaxExclude)}" required></td>
</tr>
<tr>
<td>成本</td>
<td>其他</td>
<td><input type="text" id="otherName" maxlength="10" data-validate-async data-validation-message="请输入其他类的名称10字符以内"
value="${project.otherName!}" name="otherName" placeholder="请输入其他类的名称10字符以内" required/> </td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costOtherOtherTaxInclude" value="${Utils.format(estimateBean.costOtherOtherTaxInclude)}" required></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costOtherOtherTaxExclude" value="${Utils.format(estimateBean.costOtherOtherTaxExclude)}" <#if estimateBean.costOtherOtherSelect! !="自定义">readonly</#if> required></td>
<td><input type="text" class="number" maxlength="16" name="costOtherOtherTaxInclude" value="${Utils.format(estimateBean.costOtherOtherTaxInclude)}" required></td>
<td><input type="text" class="number" maxlength="16" name="costOtherOtherTaxExclude" value="${Utils.format(estimateBean.costOtherOtherTaxExclude)}" <#if estimateBean.costOtherOtherSelect! !="自定义">readonly</#if> required></td>
<td>
<select data-am-selected name="costOtherOtherSelect" id="costOtherOtherSelect">
<option value="请选择税率">请选择税率</option>
@ -384,8 +384,8 @@
<td>合计</td>
<td></td>
<td></td>
<td><input type="number" name="costTotalTaxInclude" value="${Utils.format(estimateBean.costTotalTaxInclude)}" readonly title="此列累计"></td>
<td><input type="number" name="costTotalTaxExclude" value="${Utils.format(estimateBean.costTotalTaxExclude)}" readonly title="此列累计"></td>
<td><input type="text" class="number" name="costTotalTaxInclude" value="${Utils.format(estimateBean.costTotalTaxInclude)}" readonly title="此列累计"></td>
<td><input type="text" class="number" name="costTotalTaxExclude" value="${Utils.format(estimateBean.costTotalTaxExclude)}" readonly title="此列累计"></td>
<td>/</td>
</tr>
</tbody>
@ -401,12 +401,12 @@
<tr>
<td>财务费用</td>
<td>资金占用成本</td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costExpropriationTaxExclude" value="${Utils.format(estimateBean.costExpropriationTaxExclude)}" required></td>
<td><input type="text" class="number" maxlength="16" name="costExpropriationTaxExclude" value="${Utils.format(estimateBean.costExpropriationTaxExclude)}" required></td>
</tr>
<tr>
<td>公司管理费用</td>
<td></td>
<td><input type="number" min="0.00" max="9999999999.99" step="0.01" maxlength="13" name="costCompanyManageTaxExclude" value="${Utils.format(estimateBean.costCompanyManageTaxExclude)}" required></td>
<td><input type="text" class="number" maxlength="16" name="costCompanyManageTaxExclude" value="${Utils.format(estimateBean.costCompanyManageTaxExclude)}" required></td>
</tr>
</tbody>
</table>
@ -420,19 +420,19 @@
</tr>
<tr>
<td>项目毛利(元)</td>
<td><input type="number" name="projectGrossProfit" value="${Utils.format(estimateBean.projectGrossProfit)}" readonly title="收入总计(不含税)-成本总计(不含税)-财务费用总计(不含税)"></td>
<td><input type="text" class="number" name="projectGrossProfit" value="${Utils.format(estimateBean.projectGrossProfit)}" readonly title="收入总计(不含税)-成本总计(不含税)-财务费用总计(不含税)"></td>
</tr>
<tr>
<td>项目毛利率(%</td>
<td><input type="number" name="projectGrossProfitRate" value="${Utils.format(estimateBean.projectGrossProfitRate)}" readonly title="毛利(不含税)/收入总计(不含税)"></td>
<td><input type="text" class="number" name="projectGrossProfitRate" value="${Utils.format(estimateBean.projectGrossProfitRate)}" readonly title="毛利(不含税)/收入总计(不含税)"></td>
</tr>
<tr>
<td>项目贡献利润(元)</td>
<td><input type="number" name="projectContributionProfit" value="${Utils.format(estimateBean.projectContributionProfit)}" readonly title="项目毛利(不含税)-公司管理费用总计(不含税)"></td>
<td><input type="text" class="number" name="projectContributionProfit" value="${Utils.format(estimateBean.projectContributionProfit)}" readonly title="项目毛利(不含税)-公司管理费用总计(不含税)"></td>
</tr>
<tr>
<td>项目贡献利润率(%</td>
<td><input type="number" name="projectContributionProfitRate" value="${Utils.format(estimateBean.projectContributionProfitRate)}" readonly title="贡献利润(不含税)/收入总计(不含税)"></td>
<td><input type="text" class="number" name="projectContributionProfitRate" value="${Utils.format(estimateBean.projectContributionProfitRate)}" readonly title="贡献利润(不含税)/收入总计(不含税)"></td>
</tr>
</tbody>
</table>