# 代码调整记录 - 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`