fix(EQD-6838): 约定3 按键清标识加排查日志+forceUpdate兜底

1. syncBondFlags 改用新对象引用({} 字面量)确保 Vue 2 响应式触发
2. 加 \ 兜底,防止 \ 因相同值未触发更新
3. onBondPriceKeydown 加 console.log 排查日志,确认事件是否触发

用户反馈:版本标记 v20260729a 已加载、重算按钮已消失,
但约定3(删字符不消失标识)和约定2补充(计算错误不清零)仍未生效。
加日志确认 keydown 事件是否触发、状态值是否正确。
This commit is contained in:
hjhan
2026-07-29 19:31:59 +08:00
parent 8124bb46bb
commit 7c0572ade8
@@ -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')" 负责。