From 7c0572ade8e408c71ad2fa69559b4a2d40fafd55 Mon Sep 17 00:00:00 2001 From: hjhan Date: Wed, 29 Jul 2026 19:31:59 +0800 Subject: [PATCH] =?UTF-8?q?fix(EQD-6838):=20=E7=BA=A6=E5=AE=9A3=20?= =?UTF-8?q?=E6=8C=89=E9=94=AE=E6=B8=85=E6=A0=87=E8=AF=86=E5=8A=A0=E6=8E=92?= =?UTF-8?q?=E6=9F=A5=E6=97=A5=E5=BF=97+forceUpdate=E5=85=9C=E5=BA=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. syncBondFlags 改用新对象引用({} 字面量)确保 Vue 2 响应式触发 2. 加 \ 兜底,防止 \ 因相同值未触发更新 3. onBondPriceKeydown 加 console.log 排查日志,确认事件是否触发 用户反馈:版本标记 v20260729a 已加载、重算按钮已消失, 但约定3(删字符不消失标识)和约定2补充(计算错误不清零)仍未生效。 加日志确认 keydown 事件是否触发、状态值是否正确。 --- .../wwwroot/Scripts/app/swaptrade/swapTradeEdit.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeEdit.js b/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeEdit.js index 40042d79..61823707 100644 --- a/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeEdit.js +++ b/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeEdit.js @@ -367,16 +367,21 @@ const vue = new Vue({ if (kc === 9 || kc === 35 || kc === 36 || kc === 37 || kc === 39 || kc === 116) return; // Backspace/Delete 改变数值,需清标识 // 数字键/小键盘/小数点/减号 改变数值,需清标识 + console.log('[onBondPriceKeydown] type=' + type + ' kc=' + kc + ' before: driver=' + item.bondDriverType); SwapCalc.applyBondManualEdit(item, type); this.syncBondFlags(item); + console.log('[onBondPriceKeydown] after: driver=' + item.bondDriverType + ' rev=' + JSON.stringify(item.bondRev)); }, //确保 bondDriverType/bondAuto/bondRev 的变更触发 Vue 响应式更新。 //swapCalc.js 的纯函数直接对 state 赋值,但这些属性不在后端数据中(非响应式), - //直接赋值不触发视图更新。用 $set 强制触发,无论属性是否已存在都能正确工作。 + //直接赋值不触发视图更新。$set 设置相同值也不会触发更新,所以每次都创建新对象引用。 syncBondFlags(item) { - this.$set(item, 'bondDriverType', item.bondDriverType); - this.$set(item, 'bondAuto', item.bondAuto); - this.$set(item, 'bondRev', item.bondRev); + // 用全新对象引用强制触发 Vue 2 响应式更新(旧引用相等时 Vue 会跳过更新) + this.$set(item, 'bondDriverType', item.bondDriverType === undefined ? null : item.bondDriverType); + this.$set(item, 'bondAuto', { CP: !!item.bondAuto.CP, DP: !!item.bondAuto.DP, YD: !!item.bondAuto.YD }); + this.$set(item, 'bondRev', { CP: !!item.bondRev.CP, DP: !!item.bondRev.DP, YD: !!item.bondRev.YD }); + // $forceUpdate 确保视图刷新(兜底:即使 $set 因相同值未触发也能更新) + this.$forceUpdate(); }, //全价列:普通标的重算名义本金;债券标的按交互约定3 标 REV(不联动)。 // 回车计算由独立的 v-on:enter="onBondPriceEnter(item,'DP')" 负责。