Files
hzdyjs/docs/变更管理/code-adjust-record-2025-08-01-total-weight-reactive-fix.md
T
2025-08-01 08:35:47 +08:00

2.1 KiB
Raw Blame History

总分值占比实时更新问题专项修复

日期: 2025-08-01
问题: 绩效指标分值占比输入后,页面上的"总分值占比"不能实时更新显示

🔍 问题根本原因

Vue的响应式系统没有正确追踪到深层嵌套对象属性的变化:

  • this.outputIndicators.quantity[0].weightPercentage 的变化
  • this.effectIndicators.economic[0].weightPercentage 的变化
  • 等等...

🔧 已实施的修复方案

方案1: 专门的分值占比变化处理方法

  • 添加了 handleWeightPercentageChange(item, value) 方法
  • 使用直接赋值 + $forceUpdate() + $nextTick()
  • 已应用到第一个分值占比输入框

方案2: 增强handleInputChange方法

  • 添加了 $forceUpdate() 强制触发视图更新
  • 使用 $nextTick() 确保DOM更新时序

🧪 立即验证步骤

基础测试

  1. 刷新前端页面(重要!)
  2. 进入绩效指标步骤
  3. 测试第一个输入框:
    • 点击数量指标的分值占比输入框
    • 输入25
    • 观察页面上"总分值占比:25%"是否立即显示

如果第一个输入框工作正常

说明 handleWeightPercentageChange 方法有效,需要将其他7个分值占比输入框也改为使用这个方法

如果第一个输入框仍然不更新

说明需要更深层的Vue响应式修复

📋 下一步计划

如果测试成功

  • 批量修改其他7个分值占比输入框
  • 将 @change="handleInputChange" 改为 @change="handleWeightPercentageChange(item, $event)"

如果测试失败

需要更激进的修复方案:

  1. 在totalWeight计算属性中添加强制依赖追踪
  2. 使用watch监听器监控所有相关数据变化
  3. 考虑使用ref()和reactive()重构数据结构

🎯 预期结果

修复成功后应该能看到:

  • ✅ 输入分值占比后立即看到总分值占比更新
  • ✅ 总分值达到100%时显示绿色"分值占比正确"
  • ✅ 总分值非100%时显示黄色警告

请立即测试第一个分值占比输入框,并反馈结果!