# 订单详情保险保障卡片补「退保」按钮 **日期**: 2026-04-24 **Issue**: #1384 **类型**: ui (前端改动, 后端零改动) --- ## 摘要 用户截图反馈订单详情 → 合同保险 tab → 保险保障卡片 (状态「已承保」) **只有「查看保单」按钮, 没有退保入口**。后端 `POST /admin/insurance/cancel/{id}` 历史已就位 (保游网 `/Insurance/CancelIns` 封装完整, 状态机 INSURED→CANCELLED 已跑通, 该订单历史也有 CANCELLED 记录), 独立「保险订单列表」页据说已有退保按钮, 仅是**订单详情嵌入的保险卡片组件漏了**。 ## 后端接口 已有 (无需改动): ``` POST /admin/insurance/cancel/{insuranceOrderId} → Result 业务规则: - 仅允许 status == INSURED 的保险订单调用 - 调保游网 /Insurance/CancelIns 后, 成功或返回「正在退保中」都把 DB status 改为 CANCELLED - 其他失败抛 BusinessException 带保游网错误文案 ``` ## 前端改动 订单详情页合同保险 tab → 保险保障卡片组件, 右下角「查看保单」旁加一个「退保」按钮: ```vue ``` ## 显示规则 | 保险 status | 显示「查看保单」 | 显示「退保」 | |---|---|---| | PENDING | ❌ (无保单) | ❌ | | INSURING | ❌ | ❌ | | INSURED | ✅ | ✅ | | CANCELLED | ✅ (可下载历史保单) | ❌ | | FAILED | ❌ | ❌ | ## 验收点 - [ ] 订单 `2047252402389598209` 详情 → 合同保险 tab → 保险保障卡片右下角出现「退保」按钮 - [ ] 点击弹二次确认, 确认后调 `POST /admin/insurance/cancel/2047591721386098690` - [ ] 响应成功 → 卡片状态角标由「已承保」变「已退保」, 自动刷新 - [ ] 响应失败 (保游网错误) → toast 显示错误原因, 状态不变 - [ ] CANCELLED / FAILED / PENDING 状态不显示退保按钮