# 内容举报 · 设计说明（report.vue）

> 单元：`report` ｜ group=information ｜ P03/P09/P12 ｜ 依据：pages.json unit#21 + 规格表 P03-B/P12 + 执行方案 §5.21
> 实现：`vue/src/pages/report.vue` ｜ 状态帧 fixtures（全组单文件）：`design/fixtures/information.states.json`

## 1. 区块与密度对照

| 区块 | 实现落点 | 密度 | 达成 |
|---|---|---|---|
| ① 举报对象行 | 浅粉洗底卡：「举报对象」+类型 Pill（拍品/帖子/信息按来源）+标题（mock `reportTargets[0]`） | — | ✓ |
| ② 理由单选 5 | fixtures `reportReasons`：违规违禁/侵权/虚假信息/色情低俗/其他；行高 ≥44、圆形选中点+对勾双通道 | **5** | ✓ |
| ③ 描述 200 字+计数 | FormField+textarea maxlength=200+计数 | — | ✓ |
| ④ 凭证图 ≤3 | 宫格：已选（assets 键/`.ph` 占位，点击→image-preview）+添加格（x/3） | ≤3 | ✓ |
| ⑤ 处理说明 | 天蓝洗底说明框「平台将尽快核实处理，结果将通过消息中心通知；恶意举报将被扣信用分（示意）」 | — | ✓ |
| ⑥ 提交 | AppButton block+loading 锁；理由必选校验（未选→红字「请选择举报理由」+toast） | — | ✓ |

## 2. 状态帧（5 帧）

| 帧 | 渲染 |
|---|---|
| normal | 对象行+理由 5+描述+凭证 1（示意）+说明+提交；交互校验真实可触发 |
| submitting | 提交按钮 loading 锁（成帧） |
| success | 「已收到举报 · 平台将尽快核实处理（示意）」+返回→info |
| error | ErrorRetry「提交失败，举报内容已保留」+表单保留 |
| guest | 表单照常渲染+登录引导 Sheet（举报需登录→login，登录后回跳本页） |

empty/extreme 不单列（pages.json na_reason）：表单页无列表空态；凭证 3 张满并入 normal 提示（添加格消失+toast）。

## 3. 决策触点与字段/组件对应

- **选对理由+留证**：理由 5 项单选（必选校验）+凭证 ≤3（点击放大 image-preview）+处理预期说明。

## 4. 九维度（A–I）本页取值

| 维 | 取值 |
|---|---|
| A | 提交状态机 normal→submitting→success/error；guest 引导帧 |
| B | 提交 loading 锁；理由未选提交拦截（红字+toast 双通道）；凭证满 3 提示 |
| C | 理由必选；描述 200 字+计数；凭证 ≤3 |
| D | 计数器常显；对象标题单行截断不换行溢出 |
| E | 凭证查看复用 image-preview（pages.json links.to 唯一目标）；success 返回→info（原型统一回信息广场，规格表语义为「回来源页」，原型无法携带来源栈，已如实记录） |
| F | 按 §0.5：无分享语义 |
| G | 凭证压缩上传语义（原型示意占位） |
| H | 必填标识 `*`+label；选中态=填充圆点+对勾（非单靠颜色）；行高 ≥44 |
| I | `POST /report {target_type,target_id,reason,desc,imgs}`（占位）；对象数据=mock reportTargets |

## 5. 数据一致性说明

- 举报对象=「星轨少女·白鹭 1/7 涂装完成品 未开封」（mock reportTargets[0]，与 item/items[0] 同名同源）。
- 入口复用：P03 拍品/P09 帖子/P12 信息详情共用本表单，类型 Pill 按来源切换（item/post/info）。

## 6. 占位与缺口

- 「提交举报」不真实提交（notify 明示原型示意）；处理时限未承诺具体天数（避免占位冒充承诺）。
