4.8 KiB
4.8 KiB
添加分值占比总和校验功能
日期: 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 }
}
校验逻辑:
- 检查是否至少有一个绩效指标
- 计算所有绩效指标的分值占比总和
- 检查总和是否在100% ± 0.1%的范围内
🎯 校验策略
严格校验(下一步)
- 时机: 从绩效指标步骤进入下一步时
- 策略: 严格校验,不通过则阻止前进
- 用户体验: 确保用户在进入最终确认步骤前已完成正确的分值占比设置
友好提醒(保存草稿)
- 时机: 在绩效指标步骤保存草稿时
- 策略: 友好提醒,不阻止保存
- 用户体验: 允许用户保存未完成的草稿,但提醒注意分值占比
智能判断
- 只在相关步骤进行校验,避免不必要的干扰
- 区分强制校验和友好提醒,提升用户体验
- 提供具体的分值占比数据,便于用户调整
🧪 测试验证
下一步校验测试
- 进入绩效指标步骤(第3步)
- 填写分值占比总和不等于100%:
- 数量指标:30%
- 质量指标:30%
- 时效指标:30%
- 总和:90%
- 点击下一步
- 预期结果:显示错误信息"绩效指标分值占比总和必须等于100%,当前为90%",不进入下一步
保存草稿提醒测试
- 在绩效指标步骤
- 填写分值占比总和不等于100%
- 点击保存草稿
- 预期结果:显示警告信息,但成功保存草稿
正确分值占比测试
- 填写分值占比总和等于100%:
- 数量指标:25%
- 质量指标:25%
- 时效指标:25%
- 成本指标:25%
- 点击下一步
- 预期结果:成功进入确认提交步骤
📋 错误信息示例
缺少绩效指标
请至少填写一个绩效指标
分值占比总和不正确
绩效指标分值占比总和必须等于100%,当前为90%
保存草稿时的友好提醒
保存提醒:绩效指标分值占比总和必须等于100%,当前为90%
🎉 预期效果
校验功能添加后:
- ✅ 用户在点击下一步时会被强制校验分值占比
- ✅ 保存草稿时会收到友好的提醒信息
- ✅ 确保最终提交的数据分值占比总和为100%
- ✅ 提升数据质量和用户体验
请立即测试校验功能是否正常工作!