# Plan C: 客户端 uni-app 集成 > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. **父计划:** `docs/superpowers/plans/2026-06-17-moderation-report-feedback-system.md` **Goal:** 在 uni-app 客户端集成举报与反馈入口,使用户可对藏品/用户/描述词举报,提交反馈,查看自己的工单 **Architecture:** - 8 个 API 方法追加到 `frontend/utils/api.js`(不新建文件) - 通用 `ReportModal.vue` 弹窗(uView 2.x) - 我的页面菜单追加"我的举报"/"我的反馈" - 复用 evidence 上传(`type=report` / `type=feedback`,spec §9.1) **Tech Stack:** uni-app + uView 2.x + Vue3 **仓库:** `/Users/liulujian/Documents/code/TopFansByGithub/frontend` **前置:** Plan A 阶段 A.9 Gateway 路由已注册 --- ## 阶段 C.1:API 方法追加 ### Task C.1.1: 在 api.js 末尾追加 8 个方法 **Files:** - Modify: `frontend/utils/api.js` ```javascript // 在文件末尾追加(不覆盖现有内容): export function getReportCategoriesApi() { return request.get('/api/v1/moderation/report-categories') } export function submitReportApi(payload) { return request.post('/api/v1/moderation/reports', payload) } export function getMyReportsApi(params) { return request.get('/api/v1/moderation/reports', { params }) } export function getMyReportDetailApi(id) { return request.get(`/api/v1/moderation/reports/${id}`) } export function getFeedbackCategoriesApi() { return request.get('/api/v1/moderation/feedback-categories') } export function submitFeedbackApi(payload) { return request.post('/api/v1/moderation/feedbacks', payload) } export function getMyFeedbacksApi(params) { return request.get('/api/v1/moderation/feedbacks', { params }) } export function getMyFeedbackDetailApi(id) { return request.get(`/api/v1/moderation/feedbacks/${id}`) } ``` --- ## 阶段 C.2:ReportModal 通用举报弹窗 ### Task C.2.1: 创建组件 **Files:** - Create: `frontend/components/ReportModal.vue` **关键实现**(uView 2.x): ```vue ``` --- ## 阶段 C.3:接入到各入口 ### Task C.3.1: 藏品详情页 **Files:** - Modify: `frontend/components/NftDetailModal.vue`(或具体藏品详情组件) 在 "..." 菜单中加"举报"项,点击弹出 ReportModal。 ### Task C.3.2: 用户主页 **Files:** - Modify: `frontend/pages/user/userProfile.vue` 粉丝身份下的 "..." 菜单加"举报用户"。 ### Task C.3.3: 描述词展示组件 (如有)在 "..." 菜单加"举报"项。 --- ## 阶段 C.4:意见反馈页 ### Task C.4.1: 创建意见反馈页 **Files:** - Create: `frontend/pages/profile/feedback.vue` 表单:分类下拉 + 标题 + 内容 + 联系方式 + 截图(最多 5 张)+ 匿名开关 + 提交。 ### Task C.4.2: 我的举报列表 **Files:** - Create: `frontend/pages/profile/myReports.vue` 调用 `getMyReportsApi` 渲染列表,点击详情跳转 `myReportDetail`。 ### Task C.4.3: 我的反馈列表 **Files:** - Create: `frontend/pages/profile/myFeedbacks.vue` 同模式。 ### Task C.4.4: 我的页面菜单追加 **Files:** - Modify: `frontend/pages/profile/profile.vue` 加"我的举报"和"我的反馈"菜单项。 --- ## 自审检查清单(Plan C) - [ ] 8 个 API 方法追加完整 - [ ] ReportModal 双分支 toast 正确(target_hidden true/false) - [ ] 错误码处理(50004/50011/50012 等) - [ ] evidence 上传用 `type=report` / `type=feedback` - [ ] uView 2.x UI 组件一致性 - [ ] 我的页面菜单项接入