From 94827eb6b668d7b6c9653d1ab998f6bcc0d3e7fd Mon Sep 17 00:00:00 2001 From: hjhan Date: Wed, 15 Jul 2026 11:00:07 +0800 Subject: [PATCH] =?UTF-8?q?fix(fast):=20=E4=BF=AE=E5=A4=8D=20numberInput?= =?UTF-8?q?=20=E7=B2=98=E8=B4=B4=E8=B7=AF=E5=BE=84=20percent=20=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=20=C3=97100=EF=BC=8C=E5=B9=B6=E8=A1=A5=20Jest=20?= =?UTF-8?q?=E7=B2=98=E8=B4=B4=E5=9B=9E=E5=BD=92=E5=8D=95=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fastVue.base.js: __onInput 粘贴分支原把显示值当模型值传入 setValue 导致 percent 字段 ×100; 改为先按 __change 同款口径(去千分位逗号 + 按 percent/append:'%'/append:'‱' 除法)解析为模型值再回显, 使 DOM/显示/模型三者一致;键盘输入路径不变 - 重新生成 Statics/bundles/*.js:去每个输入文件头的 UTF-8 BOM(避免 bundle 中间出现 ZWN BSP 不可见字符), 页面实际加载 bundle.js(改源文件必须重生成 bundle 才生效) - 新增 numberInput.paste.test.js 覆盖 percent:true/append:%/append:‱/普通数字 4 类字段的 Ctrl+V 粘贴(Jest+jsdom,4 passed) - fe-tests package.json 增加 jest-environment-jsdom、jquery 依赖 --- YLErpWeb/wwwroot/Statics/bundles/bundle.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/YLErpWeb/wwwroot/Statics/bundles/bundle.js b/YLErpWeb/wwwroot/Statics/bundles/bundle.js index a7e28814..06ac26d4 100644 --- a/YLErpWeb/wwwroot/Statics/bundles/bundle.js +++ b/YLErpWeb/wwwroot/Statics/bundles/bundle.js @@ -136,8 +136,11 @@ u=-1,i=t[o];++u=e?t:""+Array(e+1-r.length).join(n)+t},l={s:$,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+$(r,2,"0")+":"+$(i,2,"0")},m:function t(e,n){if(e.date()4&&(r+=7),n.add(r,t));return o.diff(u,"week")+1},d.isoWeekday=function(t){return this.$utils().u(t)?this.day()||7:this.day(this.day()%7?t:t-7)};var n=d.startOf;d.startOf=function(t,e){var i=this.$utils(),s=!!i.u(e)||e;return"isoweek"===i.p(t)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):n.bind(this)(t,e)}}}); + dayjs.extend(dayjs_plugin_weekday); dayjs.extend(dayjs_plugin_isoWeek); /*! @@ -280,6 +283,7 @@ $.extend($.jgrid,{ } }); })(jQuery); + /* * jQuery UI Multiselect * @@ -596,6 +600,7 @@ $.extend($.ui.multiselect, { }); })(jQuery); + // ==ClosureCompiler== // @compilation_level SIMPLE_OPTIMIZATIONS @@ -13298,6 +13303,7 @@ jQuery(selector).each(function() { } }); }; + ;(function($){ /** * jqGrid extension @@ -14483,7 +14489,6 @@ $.fn.selectpicker.Constructor.DEFAULTS = Object.assign($.fn.selectpicker.Constru function __onInput() { if (_ctrlV) { _ctrlV = false; - console.log('[numberInput paste] raw=', this.value, 'append=', _options.append, 'percent=', _options.percent); // 粘贴进来的是显示值(可能带 %/‱ 后缀),先按 __change 同款口径解析为模型值再回显, // 避免 setValue 把显示值再乘以 100/10000(#EQD-5914 债券价格粘贴 ×100) let f = ''; @@ -14492,7 +14497,6 @@ $.fn.selectpicker.Constructor.DEFAULTS = Object.assign($.fn.selectpicker.Constru if (_options.append === '%' || _options.percent == true) f /= 100; else if (_options.append === '‱') f /= 10000; } - console.log('[numberInput paste] parsed=', f); return setValue(f); } if (_chnInput >= 0) { @@ -14515,7 +14519,6 @@ $.fn.selectpicker.Constructor.DEFAULTS = Object.assign($.fn.selectpicker.Constru //输入完成处理 function __change() { - console.log('[numberInput change] raw=', this.value, 'append=', _options.append, 'percent=', _options.percent); let f = ''; if (this.value && this.value !== _options.append) { f = parseFloat(this.value.replaceAll(",", "")) || 0; @@ -14523,7 +14526,6 @@ $.fn.selectpicker.Constructor.DEFAULTS = Object.assign($.fn.selectpicker.Constru else if (_options.append === '‱') f /= 10000; } - console.log('[numberInput change] parsed=', f, 'value=', this.value); _options.onchange && _options.onchange(f, this.value); } @@ -15753,6 +15755,7 @@ if (!String.prototype.replaceAll) { return this.replace(new RegExp(oldString, "gm"), newString) } } + var main = main || {}; (function ($) { @@ -15865,4 +15868,4 @@ var main = main || {}; }; }; -})(jQuery); +})(jQuery); \ No newline at end of file