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

4.8 KiB
Raw Blame History

添加分值占比总和校验功能

日期: 2025-08-01
问题: 点击下一步或保存草稿时没有校验分值占比总和是否为100% 解决方案: 在步骤切换和保存草稿时添加校验逻辑

🚨 用户反馈问题

  • 在绩效指标步骤点击"下一步"时没有校验分值占比总和
  • 保存草稿时也没有提醒分值占比是否正确
  • 需要确保分值占比总和等于100%才能进入下一步

🔧 添加的校验功能

校验1: 下一步时强制校验

在 handleNextStep 方法中添加校验:

// 如果是绩效指标步骤(第3步),额外校验分值占比总和
if (currentStep.value === 3) {
  const validationResult = validatePerformanceIndicators()
  if (!validationResult.valid) {
    ElMessage.error(validationResult.message)
    return  // 阻止进入下一步
  }
}

校验时机: 从绩效指标步骤(第3步)进入确认提交步骤(第4步)时 校验结果: 如果分值占比总和不等于100%,显示错误信息并阻止前进

校验2: 保存草稿时友好提醒

在 handleSaveDraft 方法中添加提醒:

// 如果当前在绩效指标步骤(第3步),校验分值占比总和
if (currentStep.value === 3 && form.performanceIndicators && form.performanceIndicators.length > 0) {
  const validationResult = validatePerformanceIndicators()
  if (!validationResult.valid) {
    ElMessage.warning(`保存提醒:${validationResult.message}`)
    // 注意:这里只是警告,不阻止保存草稿
  }
}

校验时机: 在绩效指标步骤保存草稿时 校验结果: 如果分值占比总和不等于100%,显示警告信息但不阻止保存

校验3: 核心校验方法

新增 validatePerformanceIndicators 方法:

const validatePerformanceIndicators = () => {
  if (!form.performanceIndicators || form.performanceIndicators.length === 0) {
    return { valid: false, message: '请至少填写一个绩效指标' }
  }

  let totalWeight = 0
  
  // 计算所有绩效指标的分值占比总和
  form.performanceIndicators.forEach(item => {
    if (item.weightPercentage && Number(item.weightPercentage) > 0) {
      totalWeight += Number(item.weightPercentage)
    }
  })
  
  // 检查总和是否为100%
  if (Math.abs(totalWeight - 100) > 0.1) {
    return { 
      valid: false, 
      message: `绩效指标分值占比总和必须等于100%,当前为${totalWeight}%` 
    }
  }
  
  return { valid: true }
}

校验逻辑:

  1. 检查是否至少有一个绩效指标
  2. 计算所有绩效指标的分值占比总和
  3. 检查总和是否在100% ± 0.1%的范围内

🎯 校验策略

严格校验(下一步)

  • 时机: 从绩效指标步骤进入下一步时
  • 策略: 严格校验,不通过则阻止前进
  • 用户体验: 确保用户在进入最终确认步骤前已完成正确的分值占比设置

友好提醒(保存草稿)

  • 时机: 在绩效指标步骤保存草稿时
  • 策略: 友好提醒,不阻止保存
  • 用户体验: 允许用户保存未完成的草稿,但提醒注意分值占比

智能判断

  • 只在相关步骤进行校验,避免不必要的干扰
  • 区分强制校验和友好提醒,提升用户体验
  • 提供具体的分值占比数据,便于用户调整

🧪 测试验证

下一步校验测试

  1. 进入绩效指标步骤(第3步)
  2. 填写分值占比总和不等于100%:
    • 数量指标:30%
    • 质量指标:30%
    • 时效指标:30%
    • 总和:90%
  3. 点击下一步
  4. 预期结果:显示错误信息"绩效指标分值占比总和必须等于100%,当前为90%",不进入下一步

保存草稿提醒测试

  1. 在绩效指标步骤
  2. 填写分值占比总和不等于100%
  3. 点击保存草稿
  4. 预期结果:显示警告信息,但成功保存草稿

正确分值占比测试

  1. 填写分值占比总和等于100%:
    • 数量指标:25%
    • 质量指标:25%
    • 时效指标:25%
    • 成本指标:25%
  2. 点击下一步
  3. 预期结果:成功进入确认提交步骤

📋 错误信息示例

缺少绩效指标

请至少填写一个绩效指标

分值占比总和不正确

绩效指标分值占比总和必须等于100%,当前为90%

保存草稿时的友好提醒

保存提醒:绩效指标分值占比总和必须等于100%,当前为90%

🎉 预期效果

校验功能添加后:

  • ✅ 用户在点击下一步时会被强制校验分值占比
  • ✅ 保存草稿时会收到友好的提醒信息
  • ✅ 确保最终提交的数据分值占比总和为100%
  • ✅ 提升数据质量和用户体验

请立即测试校验功能是否正常工作!