diff --git a/changelogs-v2/2026-07/16_4732_房务详情询房复制失败-前端修复-管理后台.md b/changelogs-v2/2026-07/16_房务详情询房提示已复制但剪贴板为空-前端待处理-管理后台.md similarity index 50% rename from changelogs-v2/2026-07/16_4732_房务详情询房复制失败-前端修复-管理后台.md rename to changelogs-v2/2026-07/16_房务详情询房提示已复制但剪贴板为空-前端待处理-管理后台.md index 9be376d..cf1b6da 100644 --- a/changelogs-v2/2026-07/16_4732_房务详情询房复制失败-前端修复-管理后台.md +++ b/changelogs-v2/2026-07/16_房务详情询房提示已复制但剪贴板为空-前端待处理-管理后台.md @@ -1,10 +1,9 @@ -# 房务详情「询房」按钮复制失败 +# 房务详情「询房」提示已复制但剪贴板为空 > 模块:管理后台 · 房务工作台 `/housekeeper/orders` -> 类型:**前端修复(复制降级修正,无需新增后端接口)** +> 类型:**前端待处理(后端无接口变更)** > 日期:2026-07-03 -> 关联工单:#4732 -> 背景:房务详情弹窗中,房务点击每日行程右侧「询房」按钮后,页面提示「复制失败,请手动选中复制」。当前业务口径是“询房=复制话术”,不恢复记录式询房。 +> 说明:仅通知前端处理;本问题不需要后端新增接口,也不需要恢复记录式询房。 ## 问题现象 @@ -14,11 +13,12 @@ - 弹窗:房务订单详情 - 订单示例:`HL20260702232103376` - 操作:点击某天行程右侧「询房」 -- 当前结果:右上角 toast 提示「复制失败,请手动选中复制」 +- 当前结果:右上角 toast 提示「已复制询房话术,去微信粘贴发给酒店」 +- 实际结果:系统剪贴板为空,去微信粘贴没有内容 ## 后端当前口径 -后端不需要新增接口。 +后端不需要新增接口、不改字段。 询房话术仍使用既有 preview 能力: @@ -32,28 +32,34 @@ POST /v3/admin/order/inquiry/preview - 不恢复记录式询房、询房历史、发起询房记录等已删除能力。 - 前端点击「询房」时,应先拿 preview 返回的话术,再完成复制。 -## 【前端 · 管理后台】需改动 +## 【前端 · 管理后台】处理要求 -### 1. 复制逻辑需兼容 HTTP 测试环境 +### 1. 不要在复制未可信成功时提示“已复制” -当前测试前端是 `http://192.168.100.160:9527`,属于非安全源。浏览器可能拒绝 `navigator.clipboard.writeText`,导致自动复制失败。 +当前现象说明前端复制链路存在误判:页面提示已复制,但系统剪贴板实际为空。 -前端需要在 Clipboard API 不可用或被拒绝时,提供可靠降级,例如: +请前端检查复制实现,不要只根据 `document.execCommand('copy')` 返回值、按钮点击成功、或接口成功就展示“已复制”。 -- 优先使用 `navigator.clipboard.writeText` -- 失败后降级到临时 `textarea` + `document.execCommand('copy')` -- 降级仍失败时,再提示用户手动复制,并展示可选中的话术内容 +### 2. 复制逻辑需兼容 HTTP 测试环境 -### 2. 不要把 Clipboard API 权限失败当成接口失败 +当前测试前端是 `http://192.168.100.160:9527`,属于非安全源。浏览器可能拒绝或限制 `navigator.clipboard.writeText`。 + +建议处理口径: + +- 安全源且 Clipboard API 可用时,优先使用 `navigator.clipboard.writeText`。 +- Clipboard API 不可用或被拒绝时,再降级到临时 `textarea` + `document.execCommand('copy')`。 +- 降级复制无法确认写入成功时,不要提示“已复制”,应展示可选中的询房话术并提示用户手动复制。 + +### 3. 区分接口失败和复制失败 需要区分两类错误: | 场景 | 期望提示 | |------|----------| | `/inquiry/preview` 接口失败或返回空话术 | 提示“生成询房话术失败”或等价接口错误 | -| preview 成功但浏览器拒绝复制 | 尝试降级复制;降级失败后提示“复制失败,请手动复制” | +| preview 成功但浏览器拒绝复制 | 尝试降级复制;无法确认成功时提示手动复制 | -### 3. 复制内容为空要阻断 +### 4. 复制内容为空要阻断 如果 preview 返回的文本为空、只有空白字符,前端不要执行复制,应提示话术为空或生成失败,避免误报“已复制”。 @@ -61,11 +67,11 @@ POST /v3/admin/order/inquiry/preview | 场景 | 期望 | |------|------| -| `http://192.168.100.160:9527/housekeeper/orders` 点击「询房」 | 能复制 preview 话术,不再误报复制失败 | -| Clipboard API 被浏览器拒绝 | 自动走降级复制 | +| `http://192.168.100.160:9527/housekeeper/orders` 点击「询房」 | 复制成功时剪贴板实际有 preview 话术 | +| 浏览器限制 Clipboard API | 不误报“已复制”,提供可手动选中的话术 | | preview 接口失败 | 显示接口/生成失败,不显示复制成功 | | preview 返回空文本 | 不复制,提示话术为空或生成失败 | -| 降级复制仍失败 | 弹出或展示可手动选中的询房话术 | +| 去微信粘贴 | 内容应与 preview 话术一致 | ## 影响范围