Files
OneOS1.2/docs/superpowers/specs/2026-07-22-vehicle-purchase-inspection-linear-ui-design.md

7.7 KiB
Raw Permalink Blame History

车辆采购合同 + 验车入库 · UI 对齐 Linear产品浅色设计规格

日期: 2026-07-22
状态: 规格已确认 · UI 已按本规格落地2026-07-22
范围决议: 全链路PC 两端 + 外勤三端)· 一波交付 · 列表壳 vm-page · 设计基底 Linear 产品浅色


1. 背景与目标

现有 vehicle-purchase-contractvehicle-inspection 及根下迁入的外勤三端(vehicle-inspection-{web,miniprogram,app})功能已通,但视觉与交互未对齐项目标准主题与列表壳规范:硬编码 Ant Design #10b981、自定义 vpc-/vi- 页头与筛选条、与车辆管理 / 保险采购等业务页不一致。

目标:不改业务规则的前提下,按 Linear 产品浅色 token + vm-page 壳层,一波重做 PC 列表/表单/详情与外勤三端视觉与布局,使采购→验车→外勤→入库链路观感统一、可验收。

非目标: 不改审批阈值、VIN 校验、拒收重交、入库桥、分期付款逻辑;不上 Linear 营销深色 + 薰衣草主色;不单独进导航的外勤页仍从验车详情链出。


2. 设计事实源(优先级)

优先级 来源 用途
1 src/themes/linear/DESIGN.md 品牌与组件原则事实源(标准参考主题)
2 src/prototypes/vehicle-management/style.css--ln-* / --vm-* 产品浅色落地inverse 白底 + 主色 #32a06e
3 src/prototypes/vm-shared/DESIGN.md 列表壳结构:筛选卡、工具栏、分页、禁止重复大标题等
4 既有参考页 保险采购 / 租赁合同列表与详情分区习惯

明确采用的 Linear 落地方式(已确认):
选项 1 — Linear 产品浅色,与车辆管理一致;采用官网深色 #010102 + #5e6ad2

ConfigProvider colorPrimary: '#32a06e'(或读 CSS 变量等价),字体栈对齐 --vm-fontInter + 系统/苹方)。


3. 信息架构与页面结构

3.1 车辆采购合同(vehicle-purchase-contract

列表(默认)

vm-page vpc-page
├── 筛选卡(「筛选条件」):关键词、状态、审批类型;查询 / 重置
├── KPI 行(可选可点筛选):草稿 / 待审或审批中 / 已通过 / 已生成验车
└── vm-table-section
    ├── 工具栏右对齐:新建合同
    ├── 表格 + OperationActions查看 / 编辑 / 提交审批 / 发起工单等既有动作)
    └── TablePagination
  • 列表页禁止独立 h1 大标题 + 功能说明副标题(侧栏已标明模块名)。
  • 金额、数量列使用 tabular-nums / ln-numeric 既有约定。

创建 / 编辑 / 查看

顶栏:返回列表 + 标题(新建/编辑/查看 + 合同编号)+ 主操作(保存草稿 / 提交 / 关闭)
主体白底分区hairline + radius-card
  1. 合同主体(买/卖/丙方与角色)
  2. 车型与价格(型号编码、产地、单价数量、实时总价与审批类型提示条)
  3. 分期付款计划
  4. 交付与验车约定
  5. 质保 / 关联协议 / 附件
  • ≥500 万自动「非正常审批」提示条保留,样式用 --ln-primary-soft / success 语义,不用另套色板。
  • 查看态只读;草稿可编辑;状态驱动操作按钮与现逻辑一致。

3.2 验车入库(vehicle-inspection

列表

vm-page vi-page
├── 筛选卡:关键词、任务状态;查询 / 重置
├── KPI待验车 / 验车中 / 已完成
└── 表格 + 操作(进入详情 / 结案等)+ TablePagination

详情

顶栏:返回 + 任务编号/车型摘要 + 结案、入库等主操作
├── 任务摘要Descriptions / 分区字段,对齐交接验收表语境)
├── 外勤入口Web / 小程序 / APP点击绑定 activeInspectionId 并打开 /prototypes/.../index.html
└── 车辆明细表VIN、里程、电机号、状态、拒收原因、重交操作

3.3 外勤三端(同波)

原型路径
src/prototypes/vehicle-inspection-web/ Web 外勤
src/prototypes/vehicle-inspection-miniprogram/ 小程序壳
src/prototypes/vehicle-inspection-app/ APP 壳
  • 视觉Linear 浅色语义(主色绿、白/浅灰 canvas、hairline 卡片);字号 ≥16px触控目标 ≥44pxcursor-pointer;尊重 prefers-reduced-motion
  • 逻辑:继续共用 field-core.js;《车辆交接验收表》图例 √/N/×/O、双签、双角度照片、拒收重交行为不变
  • 三端仅外框/底栏差异,表单与列表结构对齐,避免三套互不相干的样式常量。

4. 视觉与组件规则(摘要)

约定
主色 #32a06e--ln-primary
画布 --ln-canvas-parchment / --vm-bg
卡片面 --ln-surface-card + --ln-hairline + radius 8/12
正文/次要 --ln-ink / --ln-muted
成功/警告/错误 --ln-success / --ln-warning / --ln-error
焦点 控件边框改主色vm-focus-border 模式),避免装饰性外发光
图标 Lucide/SVG不用 emoji 作图标
列表操作列 OperationActions + 既有 vm-operation-actions

5. 业务规则(本轮冻结,仅 UI

以下保持现有实现与 .spec 文档,本轮不改判定

  • 合同金额 ≥ 500 万 → 非正常审批,否则正常
  • 1 合同 → 1 验车任务;明细按到车追加
  • VIN 17 位;交接验收表通过条件;拒收 → 重交 → 重验
  • localStorage 桥:oneos.vp.*(含 activeInspectionId

若 UI 改动导致文案/验收描述变化,同轮按 oneos-autoprd 与业务逻辑文档化规则更新 PRD / annotation纯样式可跳过全量重写分区标题、状态文案有语义变化则更新


6. 文件与依赖(实现边界)

预期修改

  • src/prototypes/vehicle-purchase-contract/VehiclePurchaseContractApp.tsx + styles/index.css(收敛到 vm-/ln- 类,去掉重复页头)
  • src/prototypes/vehicle-inspection/VehicleInspectionApp.tsx + styles/index.css
  • 外勤三端 index.html / 内联或共享样式(可抽公共 CSS 片段到三端复制或单文件引用,以静态可访问为准)
  • 可选:各原型补 DESIGN.md 一页,声明「基底 = linear 产品浅色 + vm-shared」

预期不改(除非发现硬编码色破坏一致性)

  • src/common/vehicle-purchase/* 业务逻辑
  • 审批 mock、工单预填、入库桥算法

依赖: 继续 import '../vehicle-management/style.css'TablePaginationOperationActionsPrototypeAnnotationHost


7. 验收要点

  1. 两列表页:无重复大标题;筛选卡 +KPI + 底部分页;主色为 #32a06e
  2. 合同表单/详情:分区清晰;审批提示条可见且色板正确。
  3. 验车详情:外勤三按钮可打开 /prototypes/vehicle-inspection-*/index.html 且绑定当前任务。
  4. 外勤三端:交接验收表可填报;与 PC 同域 localStorage 互通。
  5. 对照车辆管理列表:间距、圆角、边框、字体观感一致(允许业务字段不同)。
  6. 对比度正文 ≥ 4.5:1可点击元素有 pointer外勤触控区达标。

8. 决议记录

选择
优化深度 C 全链路(含外勤)
排期 一波做完
PC 路线 A 严格对齐 vm-page
Linear 落地 1 产品浅色(--ln-* / #32a06e
产品确认草案 2026-07-22 认可

9. 自我检查(写规格时)

  • 无 TBD 占位关键路径
  • 未混用深色薰衣草与浅色绿主色
  • 业务规则与 UI 边界写清
  • 外勤 URL 与同波交付写清
  • 与用户确认的 C / 一波 / A / Linear-1 一致