# P07 发货表单 · 设计说明（shipping.vue）

> 单元：`shipping` ｜ group=orders（辅助）｜ P07 ｜ 依据：pages.json unit#9 + 规格表 P07「卖家＝去发货（填单号/选无需物流）」+ 执行方案 §5.9
> 实现：`vue/src/pages/shipping.vue` ｜ 页面形态：**overlay**（App 注册 overlay:true）——背景为压暗的订单上下文示意，Sheet(lockMask=true)=弹层本体=验收主体 ｜ fixtures：`design/fixtures/orders.states.json`

## 1. 区块与密度对照

| 区块 | 实现落点 | 密度 | 达成 |
|---|---|---|---|
| ① 订单摘要行 | A1002（mock 唯一 unsent 单）图+标题+订单号+实付款 | — | ✓ |
| ② 物流公司选择 | 常用 4 家 chips（单选）+「其他物流公司可手动输入」文本框；选中=樱粉描边+文字双通道 | **4+手动** | ✓ |
| ③ 运单号 | FormField（必填星标）+15–30 位上限；number 键盘示意（inputmode=numeric） | 字段 | ✓ |
| ④ 无需物流开关 | 开关（面交场景）；开启时运单号非必填+输入禁用+公司 chips 禁用 | — | ✓ |
| ⑤ 确认发货主按钮 | AppButton block；submitting=loading 锁 | — | ✓ |

## 2. 九维度 A–I

| 维 | 本页取值 |
|---|---|
| A 状态 | 5 帧（normal/submitting/error/validation/done）；guest **N/A**（na_reason：入口仅订单卖家可见，非卖家不可达——pages.json 原文） |
| B 交互反馈 | 提交 loading 锁防连点；提交中 × 关闭被拦截（toast「提交中，请稍候」）；error 保留表单可重试；done=成功提示行成帧后回详情刷新 |
| C 表单键盘 | 运单号：规格表要求 number 键盘，本稿 inputmode=numeric 示意；**设计登记项：运单号常含字母前缀（SF…），正式实现建议 text 键盘，请开发确认**（17px 输入、confirm=提交语义）；校验时机（**验收修复**）：normal 初态零报错；红字仅出现在 ①validation 帧（静态演示）②用户尝试提交后（attempted 标记）仍不合法——空→「请输入运单号」、<15 位→「请输入正确的运单号（15-30 位）」（输入框下方红字+控件描边红）；无需物流时单号非必填 |
| D 文本展示 | 订单号等宽；金额 fmtMoney；按 §0.3 |
| E 弹层导航 | 本页即半屏弹层（lockMask=true：遮罩点击不关闭，防表单误触——与 publish-sheet 可点遮罩形成对照差异）；×/取消→order-detail |
| F 平台设备 | 按 §0.5；安全区由 Sheet 继承 env(safe-area-inset-bottom) |
| G 性能 | **N/A：轻表单**（na_reason：无大资源，仅缩略图一张——pages.json dims 原文） |
| H 无障碍 | 校验红字 --price-deep 6.32:1；开关 aria-pressed；错误=「!」图标+红字双通道；**命中区 ≥44pt（验收修复）**：物流公司 chip 视觉 32px+命中扩展 ±6px、确认发货主按钮升 AppButton size=lg（48px）；**遗留登记：弹层「×」关闭钮为共享 Sheet 组件（视觉 28px），本组无权改共享层，需底座扩展其命中区** |
| I 数据接口 | `POST /order/{id}/ship`（原型为 notify 演示）；物流公司字典=后台配置语义【占位】 |

## 3. 状态帧（5 帧，板数 2）

normal（表单可交互，**初态零报错——校验红字仅在尝试提交后出现**）/ submitting（按钮 loading+关闭拦截；**预填合法单号 SF0001112223334（15 位演示输入）**——验收修复：空值+红字+提交中三者并存不自洽）/ error（黄条+表单保留）/ validation（演示输入 SF123→红字「请输入正确的运单号（15-30 位）」；演示输入非业务数据）/ done（「已发货，订单状态已更新为「待收货」」成帧+无需物流开关 on 演示面交变体；**验收修复：实现语义括注「（原型帧停留…）」移出界面文案**，原型语义留在本文与本注释）。

## 4. 决策触点 ↔ 字段/组件

| 决策点 | 支撑 |
|---|---|
| 有物流/无物流两式发货 | 「无需物流」开关联动单号必填性+输入禁用，一条开关切换两种发货语义 |

## 5. 占位与缺口

- 物流公司 4 家（顺丰速运/京东物流/中通快递/圆通速递）＝常用字典示意【占位·后台字典】，正式端由后台配置下发。
- validation 帧的 SF123 为演示输入（非业务数据）。
- done 帧后返回详情的状态刷新为原型语义（内存演示，不回写 mock）。
