# P12 发布信息 · 设计说明（publish-info.vue）

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

## 1. 字段与密度对照（9 字段，类型联动）

| # | 字段 | 实现落点 | 联动/校验 |
|---|---|---|---|
| ① | 类型三选一 | 三卡选择器（图标+label+desc）；资讯=后台开关关闭→禁用灰显+「权限未开放」+点击 toast 说明 | 决定以下全部字段形态 |
| ② | 标题 30 | FormField+input maxlength=30+计数 | 必填；超长拦截 |
| ③ | 描述 500+计数 | FormField+textarea | 必填；计数显隐 |
| ④ | 图 ≤9 | 四列宫格：已选图（assets 键/.ph 占位，点击→image-preview）+添加格（x/9） | 满 9 提示 |
| ⑤ | 价格 | 出物=「售价」必填（helper：平台不担保成交）；求购=「预算」可空，留空展示为面议 | 失焦「请输入正确的金额」 |
| ⑥ | 成色 | conds 5 档胶囊单选 | **仅出物显示** |
| ⑦ | 交易方式多选+城市 | 邮寄/面交多选胶囊；勾选面交→城市输入显现 | 面交必填城市 |
| ⑧ | 联系电话 | number 键盘（inputmode=numeric, maxlength=11） | 失焦「手机号格式不正确」（规格表 C 文案） |
| ⑨ | 联系方式可见性三选 | 行选择器→ActionSheet（公开/登录可见/仅私信+desc，默认登录可见） | E 维 action-sheet |
| ⑩ | 提交审核 | AppButton block+loading 锁+协议勾选行+「免费发布；审核通过后展示」 | 查重示意（infos 同名提示） |

## 2. 状态帧（6 帧）

| 帧 | 渲染 |
|---|---|
| normal | 预填示意草稿（fixtures publishInfoDraft：出物·挂件·59）+交互校验真实可触发 |
| submitting | 主按钮 loading 锁（防连点成帧） |
| success | 「已提交 · 审核通过后展示（示意）」结果帧+返回信息广场→info |
| error | ErrorRetry「提交失败，内容已保留，请重试」+表单数据保留 |
| guest | 表单照常渲染+登录引导 Sheet（发布必登录→login，登录后回跳本页） |
| extreme | 500 字顶格/标题 30 字顶格（计数 30/30）/9 图满/金额顶格 999999 |

empty 不单列（pages.json na_reason）：表单页无列表空态。

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

- **类型决定字段形态**：出物→售价必填+成色显示；求购→预算可空=面议；资讯→禁用（权限开关）。
- **联系方式给谁看**：⑨ 可见性 ActionSheet 三选，默认登录可见，选择即 toast 确认。

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

| 维 | 取值 |
|---|---|
| A | 提交状态机 normal→submitting→success/error；类型联动字段（售价/预算/面议、成色仅出物、城市仅面交） |
| B | 提交 loading 锁；图片满额/资讯禁用均 toast 说明；success 帧不自动跳转（按钮回 info） |
| C | 联系电话 number 键盘+失焦「手机号格式不正确」；价格 decimal 失焦「请输入正确的金额」；标题/描述计数器；必填 `*` 标识；面交城市条件必填 |
| D | 金额走 fmtMoney 语义（输入框为裸数字，列表态经 PriceText 红字）；计数器常显 |
| E | 可见性=ActionSheet（pages.json 口径）；图片点击→image-preview；返回=NavBar back→info |
| F | 按 §0.5：无支付语义；免费发布明示 |
| G | 图片压缩上传语义（原型为示意占位；选图即提交语义，不真实上传） |
| H | 必填标识=红色 `*`+label 文字（非单靠颜色）；禁用类型卡图标+「权限未开放」文字双通道 |
| I | `POST /infos`（占位，不接生产）；查重示意=infos 同名提醒；字段映射 title/desc/price/cond/trade/city/phone/visibility |

## 5. 数据一致性说明

- 草稿样例价格 59（fixtures），为全新独立示意值，与既有列表无冲突；提交成功回 info 列表（列表数据不含未过审新帖，符合审核语义）。
- 资讯禁用与 info 页资讯 tab 空态「官方发布后展示」闭环一致（无用户资讯入口=无假入口）。

## 6. 占位与缺口

- 「提交审核」不真实提交（notify 明示原型示意，不接生产接口）；协议《信息发布规范》为示意条款行（未做半屏弹层——规格表未定义该页协议弹层，勾选行为为演示语义，已如实标注）。
- 9 图宫格中 4 格为 `.ph` 示意占位（素材缺口，带角标）。
