Files
hzdyjs/docs/变更管理/code-adjust-record-2025-07-17-wuzilong-option-duplicate-submit.md
T

2.3 KiB
Raw Blame History

代码调整记录 - 2025-07-17

基本信息

  • 日期:2025-07-17 16:30:45
  • 操作人:wuzilong
  • 模块:后勤满意度调查系统
  • 功能点:题目选项保存功能
  • 调整类型:功能修复

问题描述

在满意度调查系统的题目管理页面中,当通过"设置选项"弹窗保存选项数据时,如果用户快速连续点击保存按钮,会触发服务端的幂等性控制,导致出现"不允许重复提交,请稍候再试"的错误提示,影响用户体验。

修复内容

修改了 web/src/views/hq/satQuestion/index.vue 文件,为选项保存功能添加前端防重复提交机制:

  1. 在 optionDialog 对象中添加 saveLoading 状态变量
  2. 在 saveOptions 函数开始处添加状态检查,防止重复调用
  3. 为保存按钮添加 :loading="optionDialog.saveLoading" 绑定,在处理中禁用按钮
  4. 在请求完成后(无论成功或失败)重置 saveLoading 状态

技术说明

这是一个前端防重复提交的典型实现方式,具体流程如下:

1. 用户点击保存按钮 -> 检查saveLoading状态
2. 如果saveLoading为true,直接返回不执行任何操作
3. 如果saveLoading为false,设置为true并禁用按钮
4. 执行保存操作
5. 操作完成后(无论成功或失败)重置saveLoading为false

此修复与前一次选项排序更新显示功能的修复配合,提供了更完整的用户体验:

  1. 防止重复提交错误
  2. 保存操作加载状态可视化
  3. 保存后立即显示更新的排序结果

测试方法

  1. 进入后勤满意度调查系统 -> 题库管理
  2. 选择一个单选或多选题,点击"设置选项"按钮
  3. 修改选项内容或排序值
  4. 快速连续多次点击"保存"按钮
  5. 验证按钮是否显示loading状态,且不会出现重复提交错误
  6. 验证数据保存成功后,排序值正确更新

相关日志

后端日志显示在修复前存在多个重复的PUT请求,导致幂等性控制触发:

2025-07-17 21:37:58 [XNIO-1 task-2] ERROR o.d.c.w.h.GlobalExceptionHandler
 - 不允许重复提交,请稍候再试
2025-07-17 21:37:58 [XNIO-1 task-7] ERROR o.d.c.w.h.GlobalExceptionHandler
 - 不允许重复提交,请稍候再试

相关API文档

该功能的API文档位于:docs/开发文档/API/后勤满意度调查API.md