From 6a80ae4316393dd78464a5293ccaa20e6beb1230 Mon Sep 17 00:00:00 2001 From: OathK1per <zhangypg@gmail.com> Date: Wed, 5 Jan 2022 22:07:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A6=82=E7=AE=97=E5=88=86=E9=9A=94=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/backend/ProjectController.java | 2 + .../static/assets/js/project_common.js | 54 +++++++++------ .../static/assets/js/project_estimate.js | 22 ++++++- .../templates/admin/project_estimate_add.ftl | 66 +++++++++---------- .../templates/admin/project_estimate_edit.ftl | 66 +++++++++---------- 5 files changed, 124 insertions(+), 86 deletions(-) diff --git a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java index b4eb2cf..c1bab59 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -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()); } /** diff --git a/src/main/resources/static/assets/js/project_common.js b/src/main/resources/static/assets/js/project_common.js index a848702..c61cd3c 100644 --- a/src/main/resources/static/assets/js/project_common.js +++ b/src/main/resources/static/assets/js/project_common.js @@ -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; } /** diff --git a/src/main/resources/static/assets/js/project_estimate.js b/src/main/resources/static/assets/js/project_estimate.js index b33e3a4..19af6c8 100644 --- a/src/main/resources/static/assets/js/project_estimate.js +++ b/src/main/resources/static/assets/js/project_estimate.js @@ -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(""); diff --git a/src/main/resources/templates/admin/project_estimate_add.ftl b/src/main/resources/templates/admin/project_estimate_add.ftl index 3b26a10..5f8a91a 100644 --- a/src/main/resources/templates/admin/project_estimate_add.ftl +++ b/src/main/resources/templates/admin/project_estimate_add.ftl @@ -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> diff --git a/src/main/resources/templates/admin/project_estimate_edit.ftl b/src/main/resources/templates/admin/project_estimate_edit.ftl index 00f5063..f80d8ab 100644 --- a/src/main/resources/templates/admin/project_estimate_edit.ftl +++ b/src/main/resources/templates/admin/project_estimate_edit.ftl @@ -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>