# P05 发布拍品 · 设计说明（publish-item.vue）

> 单元：`publish-item` ｜ group=core ★★★ ｜ P05 ｜ 依据：pages.json unit#5 + 规格表 P05 + 执行方案 §5.5
> 实现：`vue/src/pages/publish-item.vue` ｜ 状态帧 fixtures：`design/fixtures/publish-item.states.json`

## 1. 12 字段表单（密度硬指标：字段 12 ≥12；逐字段校验文案）

| # | 字段 | 控件/键盘 | 校验与文案（落点） |
|---|---|---|---|
| 1 | 标题 | 文本 maxlength 30 | 计数 titleCount=n/30；error 帧空值「请输入标题」 |
| 2 | 品类 | 级联选择行→全屏抽屉语义（notify） | loading 帧=骨架；提交必选语义 |
| 3 | 成色 | conds 5 档单选胶囊 | **默认无预选，提交必选**（规格表 P05 口径，验收修复项；原误预选「全新未拆」） |
| 4 | 描述 | textarea 500 字 | 计数 n/500；违禁词预检 computed（命中词库样例标红「描述含违禁词…」，error 帧有命中演示） |
| 5 | 图片 | 九宫格 3–9 张，首图角标「主图」 | error 帧「至少 3 张图」；删除=二次确认入口（delImg toast）；上限 9 |
| 6 | 起拍价 | 金额键盘 | ≤999999 计数标注 |
| 7 | 加价幅度 | 金额键盘 | 默认 10（data：items[0].increment） |
| 8 | 截拍时间 | 24h/48h/72h/自定义 chips | 默认 48h；自定义 1–72h 校验为提交语义 |
| 9 | 一口价 | 开关+金额 | buyoutErr computed「一口价应高于起拍价（≥起拍价×1.1）」 |
| 10 | 保证金 | 开关 | 默认关【占位】 |
| 11 | 交易方式 | 多选 邮寄包邮/邮寄到付/面交+城市 | 面交选中显示城市输入 |
| 12 | 协议 | 勾选《竞拍服务协议》《费用说明》 | 半屏弹层（正文【占位】）；「我已阅读并同意」联动勾选 |

## 2. 费用试算卡 + 草稿

- `.feecard`（天蓝洗底）单列布局——「费用试算」标签 nowrap，比例整段入说明行自然换行（**修复验收项「费用试/算」「实时读/取」断词**）：「成交后按成交价收取服务费 {feeNote.rate}；未成交免费」——决策触点「费用预期透明」。
- 草稿自动保存提示行（每字段失焦存本地语义）；初值取 drafts.title。

## 3. 状态帧

| 帧 | 渲染 |
|---|---|
| normal | 12 字段满表单+费用卡+草稿行+提交栏 |
| success | 结果态：绿勾+「已提交审核」+「审核中，通常 2 小时内完成【占位时限】」+我的发布(mine)/去逛逛(home) |
| loading | 局部：品类字段骨架+图片上传进度条 60%（分片上传不阻塞表单语义）+提交按钮 loading 锁 |
| error | 多重校验演示（自洽）：**图片 1/9**（与「至少 3 张图」拦截自洽，验收修复项——原 3/9 与拦截语同屏矛盾）+**描述命中违禁词标红**（预检视觉证据）+协议未勾红字+黄条「其余内容已保留」 |
| guest | 实名引导帧：EmptyState+说明卡（实名开关语义/资料仅核验示意声明）→去实名(realname) |
| extreme | 标题顶格 30/30（drafts.title+压测后缀 slice 30）+起拍价 999999+**一口价开关开启且金额填 1099999（≥999999×1.1，开关位与字段显隐自洽，验收修复项）**+含「成交均价参考=后台开关默认关」标注行 |
| empty | N/A（表单页无列表空态，pages.json na） |

## 4. 维度差异

- B：提交防连点（loading 帧）；图片删除二次确认（入口 toast 语义）。
- C：逐字段见 §1；金额 inputmode=decimal；计数器显隐随上限字段。
- D：违禁词预检标红；计数器。
- E：协议=半屏 Sheet；品类级联=全屏抽屉语义。
- F：图片上传白名单+魔数校验语义；实名开关校验→realname（guest 帧承载）。
- G：分片上传不阻塞表单（loading 帧进度条语义）。
- H：必填 * 号+「必填」语义非单靠颜色。
- I：POST /items(status=待审核)、GET /categories/tree、GET /config/fees。

## 5. 占位与缺口

- 协议正文【占位】；费用比例 5%【占位】；审核时限 2 小时【占位】；成交均价参考=后台开关默认关（extreme 标注行说明，不启用）。
- 图片九宫格 3 格为 `.ph` 示意占位（草稿无图数据=素材缺口，语义正确：上传位）。
- 违禁词词库样例=['代拍','包中']为演示词表（正式以后台词库为准）。

## 6. 压测样值声明

extreme：startPrice='999999'（fmtMoney 呈现 ¥999,999.00 语义）、title 30/30、一口价开启且输入值 1099999（≥起拍价×1.1 推导值）。
