feat: 合同方案附件/导游 UI 入口形态由前端自由选择

@mmg
- UI 形态不限于 Tab, 按方案编辑弹窗的整体复杂度自由选择
- 后端 API 早已就绪 (PR #1592), 调用示例见 changelog 正文
- 关联工单 wx/HL #1637 已按规则关闭(前端任务不建工单)
这个提交包含在:
API Changelog Bot 2026-05-05 16:55:57 +08:00
父节点 c622e46adc
当前提交 10834cbc8c

查看文件

@ -0,0 +1,54 @@
# feat(前端): 合同方案附件管理 + 导游管理 UI 入口由前端自由选择
**日期**: 2026-05-05
**通知对象**: @mmg (前端)
**后端改动**: 0 (本条为 UI 形态澄清, 后端 API 早在 PR #1592 已就绪)
---
## 背景
`合同方案`(ContractScheme) 已支持「附件管理」+「导游管理」两个子资源的 CRUD 接口, 但前端编辑合同方案的弹窗里目前没有这两个入口。
之前的 changelog (`01_feat_contract_scheme_attachments_tab.md` / `01_feat_contract_scheme_tour_guides_tab.md`) 里建议用 Tab 形式集成, **但 UI 形态不限于 Tab**, 由你按实际编辑场景选择最合适的形式Tab / 弹窗 / 抽屉 / 子页面 任选)。
## 后端 API (已就绪, 测试服可调)
### 附件 CRUD
- `GET /admin/contract/scheme/{schemeId}/attachments` — 列表 (含排序)
- `POST /admin/contract/scheme/{schemeId}/attachments` — 上传 (multipart/form-data, file + name + sortOrder)
- `PUT /admin/contract/scheme/{schemeId}/attachments/{id}` — 改名/排序
- `DELETE /admin/contract/scheme/{schemeId}/attachments/{id}` — 删除
### 导游 CRUD
- `GET /admin/contract/scheme/{schemeId}/tour-guides` — 列表
- `POST /admin/contract/scheme/{schemeId}/tour-guides` — 新增 (name + phone + licenseNumber)
- `PUT /admin/contract/scheme/{schemeId}/tour-guides/{id}` — 编辑
- `DELETE /admin/contract/scheme/{schemeId}/tour-guides/{id}` — 删除
字段定义、入参示例详见之前的 changelog (`01_feat_contract_scheme_attachments_tab.md` + `01_feat_contract_scheme_tour_guides_tab.md`)。
## curl 验证示例
```bash
# 列表
curl -sk "https://api.test.1814.love:9443/admin/contract/scheme/3/attachments" \
-H "Authorization: Bearer <TK>"
curl -sk "https://api.test.1814.love:9443/admin/contract/scheme/3/tour-guides" \
-H "Authorization: Bearer <TK>"
```
## UI 建议
按方案编辑现有弹窗的整体复杂度自行决定:
- 弹窗内 Tab — 适合方案数据量大场景
- 子弹窗 / 嵌入面板 — 适合附件/导游条目少
- 独立侧抽屉 — 适合需要专注上传/批量管理
无强制要求, 自由发挥。
## 关联
- 后端 PR: #1592 (2026-05-01)
- 已关闭工单: wx/HL #1637 (前端任务不建工单, 改走本条 changelog)