概要设计 · 产品布局

为盛新能源维修连锁平台 · 六端产品布局

500 家加盟门店、总部集中定价与集采、门店落地服务。这份文档先回答:每个端谁用、干什么、先看什么、导航几项、什么不该出现在里面。页面长什么样放在最后。
2026-11-08 · v0.1 6 个端 门店端 13 屏 / 技师端 4 项 待你拍板:5 项 状态:方案待确认,原型仅作验证件

01这是什么生意

先把赚钱的结构说清楚,端的分工才有依据。

总部不自己修车。总部提供三样东西,向门店收钱:品牌与获客、集中采购的价格、一套能管住人的系统。门店出场地、出人、出服务,赚修理费和配件差价。车主只面对门店,感受上是一家店,不是一家平台。

这意味着:系统的权威在总部,执行在门店,证据在单据。总部能下发规则、能看结果、能算钱,但不能替门店按鼠标;门店能操作一切现场的事,但改不动总部定死的价目和口径。这条边界决定了下面六个端的权限划分。

三条底线(这三条写死,不提供开关) 金额一律以「分」为单位存储和计算,界面显示到两位小数;一张接车单贯穿全流程,所有钱、料、工、照片都挂在它下面;已确认或已打印的单据不能再改,只能出变更单、增项单、减项单。

谁付钱、谁收钱

环节谁付谁收怎么算
车主修车车主门店四类承担方各自结算:自费 / 挂账 / 保险 / 三包,四项合计必须等于报价总额
总部服务费门店总部按单或按营业额抽成,比例后台可配
配件货款门店供应商集采价,按对账结果结算,账期可配
分销佣金门店(默认)推荐人按接车单归因,从门店毛利扣,平台不垫资

最后一行是待拍板项之一。四种钱分开记账,任何一笔都不能混进另一个口袋——这是财务页和供应商端能不能对上的前提。

02谁在用

六个端对应十二种人。同一个人可能在两三个端里出现,但每次关心的只有一件事。
技师和班组长拆成两行,是因为他们不是同一种用法:技师进「工作台」只看派给自己的活,组长进同一屏看到的是本组的活 + 我要派给谁——入口名一样,内容分成两套。
人在哪端一天里最关心的那件事最怕什么
店长E1 门店(主)今天在修几台、有没有要出事的、钱收回来了没有车压在工位上不动、账对不上、客户投诉没人管
服务顾问E1 门店这台车该报多少钱、客户什么时候确认报价改来改去、客户不认账、增项说不清
前台 / 收银E1 门店这单怎么结、谁来取车、签字了没有四类钱混着收、取车人不核验、事后追不回来
库管E1 门店料领走了没有、库存对不对得上技师直接动手拿件、退料不登记
技师E4 接单(主)今天派给我的是哪几台、几点要交、这单我挣多少油手上划半天屏、被要求自己报价、干完没人认、看到别人(别的工种)的活
班组长E4 接单(主)+ E1 车间本组几台、先派哪台、超领批了没有跨组的活混进来看不清、替技师代签派工单、钣喷质检自己签
总部运营E2 总部哪家店今天不对,我要打给谁看了一堆总数,落不到一个动作上
总部财务E2 总部该收的收了吗、该结的结了吗门店对账扯皮、发票开不出来
供应链E2 总部集中采购的价和量、断货预警门店私下拿货、集采承诺兑不了
车主E3 C 端报价确认了没有、车好了没有被临时加价、不知道进度、取车要跑两趟
推荐人E5 分销(内嵌 C 端)我这月能提多少带来的单不认账、提现拖着
供应商业务员E6 供应商我要发什么、什么时候能收到钱订单改来改去、对账拖着不结

03一台车的主线

所有端的价值都挂在同一条线上。线断了,哪个端做得再漂亮都没用。
  1. 约。车主在小程序选门店和时间,生成预约单,进门店预约池。— E3 录,E1 接
  2. 接。车到店,顾问拍照、登记车辆和里程、逐项检测,出报价。接车单号在此生成。— E1
  3. 认。车主在手机上逐项看报价,可以只做一部分。确认后报价锁定,此后只读。— E3 确认,E1 收到结果
  4. 派。店长派工到班组和工位。技师的手机上出现这台车。— E1 派,E4 收
  5. 领。先选车、再出件:清单按那台车的工种出,不是全店一份。机修领油水滤芯刹车片,钣金领钣金件与打底,喷漆领漆与辅料,三电领高压防护与密封件。用量按这台车的报价行核对;超出报价的部分挂「待组长批」,批了才补发。— E4 申请,E1 仓管确认,E6 供货
  6. 变。现场发现要加活,技师只提需求不定价;顾问报价、客户确认,出增项单,不动原单。— E4 → E1 → E3
  7. 完。技师报工、填工时、传四张照片。少一张,前台那边不亮「可交车」。— E4,E1 可见
  8. 结。前台按四类承担方分开结账,预收是负债,不能当收入。— E1 收,E3 付
  9. 交。核验取车人四要素、签字、放行,交车照片归档。— E1
  10. 分。平台服务费、门店货款、供应商货款、分销佣金各自入账,结果回到各端。— E2 算,回 E1 / E5 / E6
  11. 留。保养提醒、评价、推荐有礼,把这一单变成下一单。— E3 / E5
为什么主线要从「约」写到「留」

只写到「交」,做出来是一套收银系统;补上「分」和「留」,才知道总部后台要看什么、分销账挂在哪、供应商为什么需要一个端。六个端不是六个系统,是同一条线上六种人的视线。

这条线上每一段只有一个主人

门店 PC 的四屏(预约 / 接车 / 车间 / 交车)不是四个都能改的地方:接车页管到报价为止,生产段和交车段只放只读摘要 + 跳转;派工、领料、日报、完工、质检、置可交车只在车间页改;结算、取车人、放车只在交车页改。否则同一台车在四页里有四个状态、四个金额。车单主线规划(车单状态机 + 四页分工 + 六处数字矛盾)→

04六个端各自是什么

每个端写七件事:谁用、什么设备、一天怎么走、首屏先看什么、导航几项、什么不该出现、跟谁交接。
E1

门店管理 · PC

已出 13 屏
谁用

店长、服务顾问、前台收银、库管。同一个浏览器,按角色分权限,看得到的东西不一样。

一天怎么走

08:30 开门看工作台 → 客户到店接车开单 → 派工盯进度 → 交车核验放行 → 收工日结看单车毛利。

首屏先看什么

「今天要处理的事」——按「不处理会出事」排序,不是按金额排序。下面四个数:在修几台、今日产值、今日实收、应收未收。

导航(13 项,按一台车的过程分三段)
工位、会干的人、外协厂:产能是资源,不是常量

门店的场地和人都会变——添一间喷漆房、临时借隔壁的房、施工期间停一个钣金位、招一个会喷漆的人、带一个徒弟、有人请假、把做不完的送出去。所以「几间房、几个人能独立干」只能维护出来,不能写死在页面里。位置在员工与班组 → 班组与工位。

能改什么怎么改改完哪里跟着变
加工位选类型(喷漆 / 钣金 / 机修 / 三电 / 接待)、归属班组、名称(留空自动编号,如「喷漆房 B」)、来源(自有 / 借用隔壁 / 临时隔出)。工作台的工位占用多一行;车间看板能往里头排车;预约的可约时段按新容量算;接单端「还剩几间房」变数。
停用工位点「停用」,不删除。不再参与排产与预约容量;但它接过的单和工时还挂在名下,历史报表不会断。
加人 / 带徒填姓名、工种、班组、能独立上工还是带徒。能同时干几台立刻重算;派工下拉里多一个人。带徒不单独顶一台车,出师时改成「独立」产能才上来。
停用人(请假 / 离职)同工位一样是停用,不是删除。当天不再派活、不算产能;他干过的活和工时还挂在名下。
加外协厂填厂名、能接的活(喷漆 / 钣金 / 三电 / 机修)、结算口径(例:按面计价 ¥260/面)。「车间 → 委外送修」开单时可选;喷漆技师在单上能直接提「这台送外协」。

能同时干几台 = min(工位, 能独立上工的人)。多加一间房但只有一个人会喷,还是只能开一台——系统会直说「房够了,人不够」;反过来人多房少就说「人够了,房不够」。不让老板以为加了一头产量就上去了。三条解法都留着:加房、加人(招/借调/徒弟出师)、外协。

不该出现在这
全国门店排名供应商对账老板个人看板
跟谁交接

给 E3 报价待确认与进度;给 E4 派工单与领料申请;给 E6 采购单;收 E2 价目与分账结果。

E2

总部平台后台 · PC 宽屏

待做
谁用

总部运营(招商、门店成功)、财务、商品与价格、供应链、数据分析。每人只进自己那几组菜单。

一天怎么走

看异常门店榜 → 处理申请(加盟、开业审核、巡检、闭店)→ 下发价目与政策 → 对账与分账 → 供应链跟单。

首屏先看什么

异常门店榜,不是总营业额大屏。总部看的每个数都要能直接点到一个动作:今天没开单的门店、毛利为负的单、断货、证照快到期、客诉未处理。

导航(8 组)
不该出现在这
单台车的工单操作单笔收款替门店改价(只能审批)
跟谁交接

收 E1 按天汇总的经营数据(不看明细工单)、收 E6 供货与发票;给 E1 价目与政策,给 E3 活动与门店列表。

E3

车主 C 端 · 微信小程序

待做
谁用

车主本人;企业车队管理员(一个人管多台车)。

一天怎么走

想修车 → 约门店和时间 → 到店看检测与报价 → 等待时看进度 → 取车付款签字 → 之后保养提醒与评价。

首屏先看什么

我的车 + 一张「现在到哪一步」的卡 + 一个下一步按钮。任何时刻只突出一个动作:确认报价 / 去支付 / 预约取车。

导航(4 项)
不该出现在这
成本与毛利技师排班与内部备注库存与采购
跟谁交接

给 E1 预约、报价确认、支付结果、评价;收 E1 检测结果、进度、交车照片、结算金额;收 E2 活动与卡种。

E4

门店接单端 · 手机

已出 1 端 6 项 · 按身份分化
谁用

技师(机修、钣金、喷漆、三电)、班组长,八个账号、八张不同的屏。身份由登录账号决定,页面里不提供切换。手上有机油,一只手操作。

一天怎么走

上班打开工作台(只到手上这几台)→ 看已确认的报价知道干什么 → 领料 → 干活报工拍照 → 完工,前台亮「可交车」。班组长先派工、批超领、盯本组交车。

首屏先看什么

工作台——不是「本工种的活」,是派给这个人的活;同一工种的两个人看到的也不一样。组长进同一屏,看到的是本组待派、超领待批、组内工时率,入口名不随身份变,否则换个身份就得重新找菜单。同一屏上还有一句「今天最急的一件事」,这句话按身份写:技师写交车时间,喷漆写喷漆房和第几台,三电写报告几点出,组长写先派哪两台。

导航(4 项,八种身份都一样)

导航不变,变的是每一项里面的内容。原因很实在:车间里换个人用同一台备用机、或者新人第一次上手,位置不能变;不然「消息在第三个」这种肌肉记忆就废了。

领料:清单按工种出,用量按这台车算

领料页第一件事是选车,不是选件。选了车才知道这台车是哪个工种的活,才出得对这份清单——同一台车,机修看油水和滤芯,喷漆看漆和辅料,两人打开的根本不是一张单。

工种清单里有什么用量怎么算
机修机油、机油滤清器、空调滤芯、前刹车片、冷却液按报价行找对应件,只认材料行——「更换刹车片工时」那行名字里也带件名,算进去就多领一倍
钣金后保险杠总成等钣金件、原子灰、结构胶件按报价行;辅料按面算(本单几个喷漆/钣金行就是几个面)
喷漆砂纸、环氧底漆、色漆(按色号调)、清漆、遮蔽胶带漆与辅料按面算:一面 3 张砂纸、0.3 桶底漆、0.25 桶色漆、0.2 桶清漆、1 卷胶带
三电高压绝缘手套、电池包密封胶、绝缘检测耗材包按台算(整车一套),不按面

三条不能省的规则:① 没有在办的单就不出清单,提交按钮直接灰掉——否则领出来的料没有车可挂,仓管不知道发给谁;② 领料单上必须带车单号(车单号 + 车牌 + 领料人 + 工种),仓管照单发料,回头对不上账时这是唯一的凭据;③ 救援单不算在办——车不在店里,出车用料是回店补单,不是从库房扫码领。

超出报价用量怎么办:不另开一张单、也不弹「确认一下」糊弄过去。同一张领料单照常提交,报价内的量仓管直接发;超出的那部分在单上标「超领待批」,进本组组长的待批池,批了才补发。技师的活不用停,账也清楚。

八种身份,各自看到什么(这是本端最容易被做错的地方)
身份 / 账号工作台(只到这)提醒与消息(只收这些)多出来的能力
机修技师
王磊 A008·刘强 A010
只有派给本人的机修单。两人看到的不一样:王磊手上是那台常规保养,刘强手上是那台等前刹车片的。 派工单待本人确认;顾问确认的增项(哪个件、多少钱、哪台车);件已到(只推给等这台车的人);本人计的件被扣的申诉结果。 —
钣金技师
周涛 A012
只有派给本人的钣金单;能看到同台车「喷漆有没有开工」——钣金没交,喷漆不能上。 超领被驳回 → 生成退库待办(只有申请人收得到);前道件未到不能开工;返工驳回原因原文。 —
喷漆技师
刘洋 A009
只有派给本人的喷漆单;列表里排在前面的永远是「喷漆房空出来了没」。 喷漆房占用与排队(第几台在房、还要多久);色差 / 流挂类返工(返工只回到做这道工序的人);房数、能独立上漆的人数都从门店资源读——房多人少它会直说「房够了,人不够」,不只给个漂亮数字;房不够或排不下时,可在这台单上直接提「送外协」,选名录里的外协厂、开委外申请单,不用干等撞房。 —
三电技师
赵鹏 A011·周敏 A014
只有派给本人的三电单,且只派给持有效高压证的人;证过期当天,单子从列表里消失。 高压操作证到期预警(本人收,剩 ≤60 天就出现——续证要走体检和培训,30 天不够);三电检测 9 项要出的报告几点交;客户确认了哪几项检测。 —
机电组组长
张建国 A005
本组的活,不是全店的:机电组三台(含他兼的救援车)。钣喷组的单他看不见。 待派工几台;超领待批;组员的计件申诉待复核;组员证件到期(组员本人收一条,组长收一条「组员证件 · 周敏」——她一到期组里就只剩一个持证人);救援单押金是否收齐。 派工(三电单只列持证的人)、超领审批、组员工时查看、计件申诉复核。
钣喷组组长
李海 A003
本组钣金 + 喷漆的单。钣喷串行,所以他这屏天然要看「钣金交了几台、喷漆房还剩几个档」。 超领待批(钣喷组);钣金已完工 → 待质检,提示他转专职质检员而不是自己签;喷漆的房数与人数风险(房和人都能加,加完这行就变;人不加就得排外协)。 派工、超领审批、组员工时;但钣喷质检他不能代签——按设置页的质检分级规则,钣金/喷漆必须过专职质检员。

三条划分依据(不是拍脑袋加的字段):① 活按人分,不按工种分——同一工种两人手上不一样,否则「派给你的」这句就是假的;② 提醒按「谁要动手」分——返工回给做那道工序的人,退库回给申请人,件已到回给等这台车的人,证件到期回给本人;③ 组长只到本组,不到全店——跨组派工和跨组调人是店长的活(E1),放到技师端会让组长以为自己在管全店。

派工是两步,签收这一步不能代签

组长在手机上下派(只列本组的、三电单只列持有效高压证的人)→ 单子立刻进被派那个人的列表,标「派了未确认」→ 技师自己点开、自己确认,才算真接手。中间这一步不能省,也不能由组长代劳:

关键点为什么要这样
派出去就进对方列表如果等确认才写进去,技师手机上什么都没有,他既看不到、也没法确认,单子就卡死在「已派」这一步。所以派出的那一刻就落库,状态是「待接 · 未确认」。
组长不能代签派工单点确认时,系统拦一句「派工单要 X 本人确认,不能代签」。代签等于「我替你答应了这活」,出了工期问题责任说不清。
已派过的单再派同一个人要拦提示「这张单已经是 X 的,不用重派」,防止重复生成派工单、重复计件。
派错人能改本人还没确认时可以重派给别人,前一张派工单作废留痕;一旦本人确认,改派要走店长(E1)的调派,不能再从技师端改。
证件口径:未持证 ≠ 已过期

同一个位置一句话,三种情况三种说法。写错了技工会以为「我的证被吊销了」或者「我该去考但我不用考」:

情况「我的」页显示影响
从没考过高压证
机修、钣金、喷漆技师
高压(三电)操作证 · 未持证,不涉及三电不影响接活。绝不能显示「已过期」——那会让人以为被停了资格。
有证但已过期高压(三电)操作证 · 已过期,停派三电三电单从列表消失,也不出现在派工候选里。
有证且在有效期高压(三电)操作证 · 已持证,YYYY-MM-DD 到期剩 ≤60 天在「待你在办」里出现一条,只有本人看得到自己的。

组长看的是组员的证,不看自己的——三电组长自己持证 2028 年才到期,他真正要盯的是组里另一个人 12-31 到期;那个人一到期,组里就只剩他一个能接三电单。

几间房、几个人会:写成可维护的资源,不写死

喷漆这条最容易出错的地方,是把「只有一间喷漆房、只有一个人会喷漆」当成不会变的事实写进页面和文案里。门店是会变的:添房、借房、停位、招人、带徒、外协都是常态。所以技师这屏的数从门店资源维护里读,不硬编码:

技师看到的取自哪为什么不能写死
喷漆房 N 间员工与班组 → 班组与工位 → 工位表(启用的喷漆类)添 / 借 / 临时隔出一间,这里立刻变;停用一间也一样。
会喷漆 N 人同页「会干这个活的人」→ 能独立上工的人(带徒不算)招人、借调、徒弟出师、有人请假,人数都要能跟着变。
可并行 N 台min(房数,能独立上漆的人数)房多但只有一个人会,还是只能开一台——必须直说,别让老板以为加了房产量就上去。
可外协 N 家同一页维护的外协厂名录(能接喷漆的)送出去是正常经营手段,不是例外;名录为空时按钮置灰并提示去找店长加。
这道工序还能不能接单子上的「这台送外协」→ 委外申请单 → 店长开单让干活的技师自己提,比等前台想起来更快。客户看到的仍是原报价和原交车时间。

同一条规矩适用于所有工种:机修工位、钣金位、高压工位同理。全站术语统一叫喷漆房,不混用「油漆房」「烤漆房」。

不该出现在这
成本与毛利客户手机号全号改价 / 打折 / 收款别人的活(组长只到本组)
跟谁交接

给 E1 领料申请、增项申请、报工与照片、完工信号;收 E1 派工单与已锁定报价;备件到货间接经 E1 入库。派工单要技师本人在自己手机上确认,组长代签无效。

E5

分销 · 内嵌 C 端

待做
谁用

老客户、车队、门店员工、合作修理厂。不单独装 App,就住在 E3 里多一个入口。

一天怎么走

生成海报带自己的码 → 朋友下单到店 → 按接车单归因 → 佣金入账 → 提现。

首屏先看什么

可提现金额 + 本月带来几单。先说钱,再说怎么推。

导航(4 项)
不该出现在这
门店毛利与成本别人的客户内部价格政策
跟谁交接

归因写进 E1 接车单;佣金规则由 E2 算;提现结果回到 E5 自己。

E6

供应商工作台 · PC

待做
谁用

配件供应商的业务员(跟单)和财务(对账开票),两种角色两套菜单。

一天怎么走

收到门店采购单 → 确认价格库存交期 → 发货填物流 → 月度对账 → 开票。

首屏先看什么

待确认订单 + 逾期未发。供应商只关心两件事:我要发什么、我什么时候能收到钱。

导航(5 项)
不该出现在这
门店零售价车主信息其他供应商的报价
跟谁交接

收 E1 采购单;给 E1 发货与到货、发票;给 E2 对账与集采数据。

05端与端的分工

同一份数据,在不同端必须是不同的可见度。这张表就是权限设计的依据。
数据E1 门店E2 总部E3 车主E4 技师E5 分销E6 供应商
接车单录入汇总自己的只读归因—
报价与增项出监督确认只读——
成本与毛利限角色看无无无无
备件库存管集采无领无供
收款与分账收算付无佣金货款
客户资料全脱敏自己脱敏自己的无
技师工时审定口径无报无无
售后与三包受理审核看进度只读——
评价与推荐看统计提交无归因无

「限角色」的意思是同一个端里也要分人:技师和顾问看不到成本列,店长和老板看得到。这条必须在接口层就拦住,不能只靠前端藏起来。

两个最容易做错的地方

一是让技师端显示成本参加提成——技师一看到进价就会自己算毛利,价格体系立刻崩。
二是让总部后台能代替门店操作——总部一能改,责任就说不清,门店会拿「总部改的」当挡箭牌。

06信息层级怎么定

每个端都只有三层,不多不少。层数一多,用户就开始找东西。
第一层 · 今天的事
打开就看到,不需要点。只放「不处理会出事」的内容,数量控制在 5 条以内。
第二层 · 一类单据
接车单、采购单、对账单。列表 + 状态 + 一个主要动作。
第三层 · 一张单据
全部明细、附件、流转记录。这里是唯一能看到证据的地方。

对应的导航原则:一级导航不超过 12 项,超过就说明有一个模块该拆成独立端;二级导航不留空,点进去没内容是设计问题,不是数据问题;每个页面只有一个蓝色主按钮,两个就等于没有主次。

菜单怎么起名(六端同一套规矩)

同一样东西在六个端必须同一个词。同一个端的菜单、页标题、面包屑必须是同一个词——标签写「我的活」、进去标题写「派工看板」,等于让用户重新找一次。

规矩怎么用为什么
第一项永远是「工作台」E1 门店 PC、E2 总部、E4 技师手机、E6 供应商,第一项都叫工作台,且都是首屏默认「我的活」「首页」「看板」各叫一套,同一家店的人在四个端之间切换就要重新认一次路。工作台 = 今天要我出手的事,这个词在四个端含义完全一致。
C 端例外用「首页」E3 车主端第一项叫首页,不叫工作台车主不是来上班的。给他的词必须是「看看我的车、约个保养」,不是「待办」。
菜单名 = 页内标题 = 浏览器标题三项必须是同一个词。改了菜单就要同时改另外两处这是最常见的错位来源:标签改了、标题忘改,用户以为自己点错了。
不按角色改菜单名组长和技师都点「工作台」,进去内容不同——组长看到本组待派和超领审批,技师看到派给自己的单导航是肌肉记忆。变的只能是里面的内容,不是入口的名字;名字一改,组长换个身份就得重新数一遍菜单位置。
分组名用名词,不用句子「车辆作业 / 资料 / 收支 / 门店」,不写「按一台车走」分组名是路牌不是说明书。一句解释性的话放在这一组的第一页里,不挂在导航上。
不写口语「应收应付」不写「钱」;「采购与库存」不写「生意」;「待办」不写「我的活」口语词在门店内部能懂,但换一个人、换一家加盟店、或者给总部看,就得重新解释。系统是长期资产,用行业词。
同一件事只有一个词喷漆房(不叫油漆房/烤漆房)、接车单(不叫工单/维修单)、领料单(不叫出库单)、委外(不叫外协送修以外的新词)术语一散,搜索搜不到、报表对不上、培训要教两遍。
带数字的菜单才带角标角标 = 需要我处理的数量,不是记录总数。为 0 就不显示角标一律显示总数,用户会习惯性忽略它,等于没有提醒。

六个端统一后的菜单

端第一项各项菜单(分组用「·」隔开)
E1 门店 PC工作台车辆作业:预约 / 接车 / 车间 / 交车 · 资料:客户 / 库存 · 收支:财务 / 定价 · 门店:会员卡 / 员工与班组 / 绩效提成 / 设置
E2 总部工作台总览:工作台 · 业务:门店 / 商品与价格 / 供应链 / 财务 / 会员与营销 · 平台:数据 / 系统
E3 车主(C 端)首页首页 / 服务 / 订单 / 我的
E4 技师手机工作台工作台 / 领料 / 消息 / 我的
E6 供应商工作台订单 / 商品与价格 / 发货 / 对账与发票 / 账户

E4 组长身份进「工作台」看到的是本组待派与超领审批,技师看到的是派给自己的单——入口名不变,内容变。E5 分销内嵌在 E3 的「我的」里,不单独占端。

状态怎么表达

状态颜色含义
进行中 / 待接 / 待发货黄需要人动手,超时会出问题
已确认 / 已完工 / 已结算绿这一段走完了,可以往下走
已取消 / 已拒绝 / 已关闭红结束了,不再参与流程
已发货 / 已派工 / 处理中蓝在别人手上,等你这边
挂起 / 等件 / 争议灰卡住了,需要有人拍板

颜色含义全局统一,六个端不许各定一套。用户跨端使用时不需要重新学一遍。

07界面长什么样

这一节是给开发看的。六个端共用一套色值、字号、圆角、按钮和表格,谁都不许自己定一套。规范落在 store/ui.css 一个文件里,改一处全站生效。
先回答一个问题:之前的方案里有没有 UI 规范? 没有。之前只有上一节那张「状态怎么表达」的五色表,管的是「什么状态用什么颜色」,不管字体多大、按钮几个层级、卡片多少圆角、打印出来是什么样。那一节保留不动,这一节补的是它下面缺的那一层。两张表不冲突:状态色是业务语义,设计 token 是视觉实现,后者必须服从前者。

选的是哪一套,为什么是它

参照 D:\项目\style-gallery 里的样式库,选 Stripe 那一套(靛蓝体系),不是因为它好看,是因为我们现有的界面有三个真实缺陷,只有这一套能同时修掉:

现有缺陷具体表现这套怎么解决
品牌蓝和状态蓝撞色旧品牌色 #1677ff 与「在别人手上 / 处理中」的状态蓝几乎同色。用户分不清「这是个按钮」还是「这是个状态」。品牌换成靛蓝 #533afd(色相 249°),状态蓝移到 #1a56b3(色相 218°)。相差 30° 以上,一眼可分。
C 端绿色既是品牌又是状态车主端旧品牌色 #0a9e63 和「已完成」的成功绿几乎一样。同一个绿既表示「这是为盛」又表示「这单完成了」。全平台品牌统一靛蓝;绿色只表示成功,不再承担品牌职能。车主端也跟着变成靛蓝。
侧栏和正文不同源,整屏发灰旧侧栏 #001529 是纯冷黑,正文是中性灰 #1f2329,两者不在一个色系,看久了整屏灰扑扑。侧栏改为深靛 #1c1e54,与正文同属蓝族。视觉上是一整块,不是两块拼起来。

另有一条硬指标:旧的浅灰正文 #8f959e 在白底上对比度只有 3.02:1,达不到无障碍 AA(要求 4.5:1)——车间有顶灯反光、屏幕又常调暗,11.5px 的提示字直接看不清。新 #6b7688 是 4.59:1,过 AA。

颜色:一套 token,只认这十几个

表单里的值就是写进 store/ui.css 的值。页面里不许出现十六进制色值,一律写 var(--ui-…)。

品牌与文字

--ui-primary品牌色。主按钮底、选中的导航、链接、进度条。#533afd
--ui-primary-hover主按钮悬停。#4b34e4
--ui-primary-soft选中项的浅底、图标底盘。#eeebff
--ui-text-1正文与标题。深海军蓝,不是纯黑。#061b31
--ui-text-2次要文字、表单标签、说明。#4d5f78
--ui-text-3辅助提示、时间戳、占位。对比度 4.59:1。#6b7688

背景与描边

--ui-bg页面底色。带一点蓝,不是纯灰。#f6f9fc
--ui-surface卡片、表格、弹窗的底。#ffffff
--ui-surface-2表头、只读字段、tab 条。#fafbfc
--ui-border卡片与表格的分隔线。带蓝色调,不是中性灰。#e5edf5
--ui-border-2输入框描边、可交互元素的边界。#d3dfec

状态五色(对应上一节那张表)

已完工已取消已派工等件中 黄 = 要我动手 · 绿 = 这段走完 · 红 = 已结束 · 蓝 = 在别人手上 · 灰 = 卡住了

每组状态色有三个值,不能混用:-bg 是浅底、-text 是深字(放在浅底上)、-bd 是描边。直接拿 --ui-success(饱和绿)当文字色写在小字上,白底对比度不够。

--ui-warning黄:进行中 / 待接 / 待发货 / 待确认。要人动手,超时会出事。#e0a02a
--ui-success绿:已确认 / 已完工 / 已结算。这段走完了,可以往下走。#24b47e
--ui-danger红:已取消 / 已拒绝 / 已关闭。结束了,不再参与流程。#dc2626
--ui-info蓝:已发货 / 已派工 / 处理中。在别人手上,等你这边。#1a56b3
--ui-neutral-bg灰:挂起 / 等件 / 争议。卡住了,需要有人拍板。#eef2f7

字号:九个档,不许自己造第十个

工作台h1 · 19px 本月经营h2 · 17px 单车明细h3 · 15px 粤B·12345title · 14px 常规正文body · 13px 表单标签small · 12px 补充说明caption · 11.5px 3,800.00stat-lg · 26px

正文 13px 是桌面端的底。手机端(E3 / E4)用系统字号,正文字号下限 13px、点击热区下限 44px——技师戴手套操作,热区小了按不准。金额一律等宽数字(font-variant-numeric: tabular-nums),上下对齐才对得上账。

圆角与阴影:克制,只有四档

档位值用在哪
--ui-r-xs3px小徽标、勾选框、细分隔块
--ui-r-sm4px按钮、输入框、小的可点区块
--ui-r-md / lg5 / 8pxKPI 卡、表格容器、筛选条、toast
--ui-r-xl10px只有弹窗。别的地方不用

阴影同理三档:--ui-shadow-sm 给主按钮(轻微浮起)、-md 给可交互卡片悬停、-lg 只给弹窗和 toast。静态卡片不加阴影,加了就到处在飘,用户不知道哪个能点。这一套的阴影带蓝调(rgba(50,50,93,…)),和底色同族,不会出现脏灰边。

骨架:页头、列表、详情

颜色和字号只解决「看起来像一套」,翻页面时还是会觉得「这不是一个系统」。真正的割裂感来自骨架:同一个位置的页头,在 A 页 34px、B 页 26px;同一张列表,A 页一条搜索框、B 页两条叠在一起;同一排卡片,左边那张比右边高 40px。这些都不显眼,但一页一页翻就露馅。下面五条是量出来的,不是审美判断,每条都有一个可跑的检查。

骨架规则不对的时候会怎样怎么写
页头定高 页头里有没有放按钮,决定了标题基线差 8px。12 个页面来回翻,标题像在跳。 .pt{min-height:var(--ui-btn-h);align-items:flex-end}——不管有没有按钮,标题一律贴底对齐,翻页时页头不动。
一张表一条筛选条 页面自己手写了一条筛选栏,注入的列表工具条又插一条,上下两排搜索框,用户不知道哪个管用。 列表页不写静态筛选栏。搜索 / 分组 / 状态 chip / 条数 / 翻页全部交给 store/list.js 往 table[data-list] 上挂。页面上只保留「只看未转车单」这类单个开关,放进卡片标题条里。
列表卡必须有标题条 没有标题条,工具条失去锚点,插上去悬在表上方,和表格读起来像两个东西。 每张列表卡都写 .card-h:左边标题(这张表是什么)、一句灰色说明(怎么读它),需要时右边放一个汇总标签。工具条固定插在标题条下沿。
网格列宽写 minmax(0,1fr) 裸 1fr 的下限是 min-content,哪一列装了个长金额或长占位文字,它就把自己撑胖,隔壁列被挤窄 2px。看不出来,但输入框右边缘一行对不齐一行。 所有 grid-template-columns 一律 repeat(n,minmax(0,1fr))。只有故意不等宽的布局(流程泳道的标签列、地图的 1.05fr、工作台的 1.35fr)才写固定值或不等分。
同排卡片等高 卡片自带 margin-bottom,网格的 stretch 就被这个外边距吃掉,同一排卡片下边缘参差。 网格容器统一 align-items:stretch,并加一条 .grid > *{margin-bottom:0},间距只由网格的 gap 出。

这几条不是写在纸上靠人记的:gate.mjs 逐页扫 CSS,发现裸 1fr 直接判失败;verify-ui.mjs 用无头浏览器点完每个 tab,量每张列表的筛选条数量、卡片标题条、页头高度和详情页两栏的实际像素。原型改坏了,这两条命令会红。规范里写「不许」,检查里就必须有一条能变红的断言——否则规范只是愿望。

详情页:左「核对」,右「决策」

交车结算是全系统最重的一屏。过去的做法是从上往下摞一整列全宽卡片,收银员要滚到页面最底部才看到「还差什么才能放车」和「钱怎么收」——而这两件才是他打开这一页要办的事。

现在拆成两栏:左栏是核对(这笔钱谁出、保险定损与差额、交车单与照片),右栏是决策(放车前的门禁在最上,收款单在其下)。右栏把门禁放第一个,是因为收银员在这一页最常问的不是「收了多少」,而是「还差什么才能放车」。窄于 1180px 退回单栏,顺序不变。

右栏不做固定定位(sticky)。量过:1440×1000 下右栏 1078px、可视 940px,比一屏高 138px。钉住后滚到底 railTop=-118——门禁卡(右栏第一块、这一页最该被完整看到的判断依据)上沿被切掉 118px;不钉则 railTop=-352,两张卡各自在滚动过程中都有完整出现的一刻。两卡不可能整屏放下时,宁可选「各自能被看全」,不选「第一张永远缺一截」。

第二条已经落地的详情页是车间工单:左栏「施工进度」(干到哪了),右栏「填生产日报」(技师点开这一单唯一必做的事)。技师在车间平板上看,所以断点放在 900px,低于 900 就退回单栏;收银台是 1100 以上的笔记本,断点放在 1180。断点按这台设备的最小宽度定,不按「大屏 / 小屏」拍脑袋定。其余详情页(客户、会员卡)沿用同一条原则:把「用户在这一页必须做的判断」放右边或最上,把「用来核对的资料」放左边。这不是给所有页面套同一个模板——是决定信息先后顺序的规则。

组件规矩

按钮:一个屏幕只能有一个主按钮

结算交车 取消 查看明细 作废 提交中…
层级长什么样什么时候用
主按钮靛蓝实心 + 白字这一屏用户最该做的那一件事。一屏只能有一个,两个就等于没有主次。
次按钮白底 + 描边 + 深色字和主按钮并列的第二选择(取消、暂存、返回)。
文字按钮无边框,悬停才出浅底行内的「查看 / 编辑 / 诊断」。表格里全用这个,不用实心按钮。
危险按钮浅红底 + 深红字作废、驳回、删除。不做红实心——红实心看起来太像主按钮,会误点。

所有会提交的按钮:点下去变「提交中…」并禁用,成功给 toast,失败给红色 toast 并说明原因。不许点了没反应——那是让用户重复点、重复提交的开始。

表格:门店端的主战场

  • 表头 12px 深灰、底色 --ui-surface-2;表体 13px、行高够一拇指点准
  • 数字列右对齐 + 等宽;状态列用彩色标签,不用纯文字
  • 操作列右对齐,用文字按钮;一行的主要动作放最左
  • 长文本省略号截断,鼠标悬停出全称;不要靠换行把行撑高
  • 空表格必须写清楚为什么空(「本周没有待接车的车」),不能只显示「暂无数据」

表单

  • 标签在输入框上方,13px 灰色;必填项标签后加红色星号
  • 错误提示显示在字段正下方,12px 红字,写明怎么改(「车牌号应为 7 位,现在是 6 位」)
  • 只读字段用浅灰底 + 无边框,让人一眼看出「这个不能改」
  • 输入框聚焦有蓝色描边 + 3px 浅晕,键盘用户要知道焦点在哪

反馈四件套

动作表现
成功深底 toast,3 秒自动消失,写清做了什么(「已派给王磊 · 待他确认」)
失败红底 toast,不自动消失,必须写原因(「库存不足:只剩 0.5L」)
要确认的弹窗,标题写动作名,正文写后果(「作废后该单报价不再生效,已领的料需退库」),按钮写动词不写「确定」
加载中按钮转圈并禁用;页面级超过 300ms 用骨架屏,不用居中转圈

两条不能破的硬约束

无障碍(不是可选项)
  • 正文与背景对比度 ≥ 4.5:1;大字号 ≥ 3:1
  • 键盘能走到每一个可点元素,焦点框 2px 靛蓝实线,不许 outline:none
  • 状态不能只靠颜色区分——色盲用户分不出红绿。标签里必须带文字(「已完工」不能只给个绿点)
  • 系统开了「减少动态效果」时,所有动画关掉
打印(7 类单据要真出纸)
  • 打印时所有彩色一律转白底黑字,靛蓝和小字灰在纸上全是糊的
  • 状态色带不出纸面,改由文字 + 边框承担(「已完工」变成带框的字)
  • 去掉所有阴影和圆角;侧栏、顶栏、筛选条、toast 不打印
  • 页边距留够,签字栏不能被裁掉

怎么落到代码里

只有一个文件定颜色:store/ui.css。它是全站颜色的唯一来源,24 个页面都引它,页面自己的 <style> 里不许再写 :root。改一个 token,六个端一起变。

层文件管什么
token 层store/ui.css全部颜色 / 字号 / 圆角 / 阴影;全局基线;无障碍;打印规则
桌面组件层store/proto.css侧栏、顶栏、按钮、表格、卡片、弹窗、toast 的结构与尺寸。只消费 token,不定义颜色
手机组件层store/mobile.css车主端与接单端的手机壳:44px 热区、16px 输入框(低于 16 iOS 会放大整页)、底部 tab。两个手机端共用这一份,不各写一套
行为层store/list.js · print.js列表工具条(搜索 / 分组 / 状态 / 翻页)与打印排版。页面只给表加 data-list,不再手写第二套
页面层各 *.html只写这一页特有的布局。要新颜色 → 先加 token,再引用

另外保留了旧变量名的兼容别名(--p、--t1、--okbg 等),全部指回新 token。这样老页面不改一行也能吃到新视觉,改造可以一页一页做,不会因为改色把功能改坏。

08一期做什么

一期的目标是让一台车从预约到分账完整跑通,六个端都能参与进来,不是把每个端都做满。
做
  • E1 门店端全流程:接车、报价、派工、领料、完工、结算、交车
  • E4 技师端四项:工作台、领料、报工、我的
  • E2 总部端:门店档案、总部价目与改价审批、分账与对账
  • E3 车主端:预约、报价确认、进度、支付
  • E6 供应商端:订单、发货、月度对账
  • E5 分销:只做归因和佣金明细,提现走线下
不做
  • 多级分销、团队裂变、等级体系
  • 跨区域调拨与门店间借件
  • 自营商城、车主商城、卖周边
  • 深度经营 BI、报表自定义
  • 技师排班优化算法、智能派工
  • 保险直赔接口、厂家三包在线申报

不做的部分不是不重要,是没有真实流程支撑就只能凭空设计。比如厂家三包在线申报,各家厂的接口和单据要求完全不同,现在做一定是假的,不如一期先用手工登记加附件,跑三个月再定。

做的顺序

顺序端 / 模块为什么这个顺序
01E1 门店端所有数据的源头,其他端都在读它产出的单据
02E4 技师端门店端做完才能派工,是最短的一条闭环
03E2 总部端要有门店数据才有得看,先做门店档案与价目下发
04E6 供应商端依赖门店采购单,接在 E1 的库存之后
05E3 + E5 车主端放最后,因为它读的东西全在前面,改一次要牵动四个端

09要你拍板的五件事(另四件已拍板)

这五件是业务事实,不是设计选择,我不能替你定。每件我都先按默认做了,你改一句话我就改。
下面第二节那四件 2026-11-09 已经拍板,写在这里是为了后面不再翻案。
事项影响什么我按这个先做
1. 分账规则
总部怎么向门店收钱
E2 财务、门店财务页、加盟商最关心的那张单 按单抽平台服务费(比例后台配),供应商货款账期可配,先按记账不碰真资金流
2. 分销佣金谁出
总部还是门店
E5 的账挂在哪、门店毛利怎么算 门店出,从门店毛利扣,平台不垫资;佣金在结算时分账,不在支付时扣
3. 三包索赔谁报
门店自己报还是总部统一报
E2 要不要做工单、E1 四类承担方怎么走 门店报、总部审、钱归门店;E1 先做手工登记加附件,不做厂家接口
4. 技师计件口径
按工时、按项目还是按产值
E4「我的」显示什么数、员工页的参与产值怎么算 按完工工时 × 岗位系数,返工不计件;成本不参与提成计算
5. 返佣按什么算、多久发一次
计提基数与结算周期
E1 门店财务返佣结算、E2 总部返佣批次、E5 车主端佣金明细 只按实际到账计提(开单不算、报价不算);周期后台可配半个月(1 日 / 16 日)或一个月(次月 1 日)出一次批次,已发放的批次不追溯;介绍奖励按受益人选形式(卡余额 / 积分 / 下次折扣 / 现金),改形式只对下一单生效

这五项每项都只影响局部,不阻塞别的开发。我按默认往下做,你哪天改,改的是配置和两三个页面的显示,不动数据结构。

另外四件已在 2026-11-09 拍板(车单主线)

这四件决定的是「同一台车在几个页面里谁说了算」,细则和落地位置见 车单主线规划 第 08、09 节。

已定口径具体怎么落
A. 检测和报价保留两段,不合并 检测段只出「结论 + 建议项」,不出现金额;报价段才出单价、数量、承担方。「客户暂不处理」的项自动进沟通单,沟通单必须客户签字,否则报价不能锁定。检测可中途停下、下次接着做。
B. 质检按服务类别分级 小事故单(单工种、非钣喷)由本班组班组长自检;钣金 / 喷漆 / 大修 / 三电 / 涉保险定损的结构件必须过专职质检,班组长不能代签,质检照片留档。类别由报价行的服务类别自动判定,顾问不能手改。
C. 保险单能「车先走、钱后到」 客户/取车人签的是「认可维修金额,并认可未付部分向保险公司索赔、由门店代收」,签完即可放车;缺口挂财务保险应收台账,超期亮红。签字单上禁止出现「已结清 / 已付清 / 无欠款」。自费部分例外:自费没结清,放车按钮就是灰的,不因老客户放宽。
D. 取车人身份证全号加密存,界面只显示后 6 位 录入收 18 位全号,入库即加密,接口只回「后 6 位 + 调阅凭据」。门店端页面、交车单打印、导出表、消息推送一律只出现 ************011234 这种形态。要看全号须点「申请查看」并填理由,每次查看写操作日志。保存期限:交车满 2 年打码归档,满 5 年删除全号。

10这份方案怎么验

方案不能只靠读起来顺。每个端定完后,用能点的原型去撞一遍,撞出问题改方案,不是改原型去迁就方案。
验什么怎么验过不了怎么办
首屏是否真的是「今天的事」打开第一屏,能不能 10 秒内说出今天最急的一件事改首屏,不是加引导文案
导航项够不够、多不多把一天的活在里面走一遍,有没有要绕路的地方多了合并,少了拆端
不该出现的有没有漏进来逐页搜「成本」「毛利」「进价」「手机号全号」接口层就不下发
主线断没断从预约走到分账,每一步都能在某个端找到入口补交接,不改主线
同一个数据对不对得上同一台车、同一个金额,四个端显示一致改数据源,不做多套

目前的状态:六端都已出可点原型——E1 门店管理 13 屏(逐屏入口)、E2 总部后台(hq-app.html)、E3 车主端 + E5 分销(c-app.html)、E4 门店接单端(store-app.html)、E6 供应商工作台(supplier-app.html)。用 角色演练 按真实场景走了两遍,第一遍挖出 12 个漏洞,全部修完并留了对照表;单据确认方式 说明七类单据的线上签 / 打印签两种做法;业务流审计 说明哪一步在手机上上传、哪一步在 PC 上打印;字段与控件口径 规定每个字段是下拉还是填写,并把「标签说要日期、控件却给文本框」做成门禁检查。

本轮细节补齐包括:七类单据可真的调起浏览器打印(A4 纵向,出纸只有那一张)、列表页统一有搜索 / 状态筛选 / 分组 / 空状态 / 分页、全站不再有「原型:xxx 未做」的占位提示。

钱这条线已经打通到底:接车开单时把车怎么来的(直接进店 / 预约转入 / 救援拖回 / 平台派单 / 同行送来 / 连锁内转)和这单谁带来的(自然进店 / 老客 / 转介绍 / 分销 / 平台导流 / 保险 / 合作单位 / 同行转介)分成两个字段,凭证不填齐不让进检测;财务页按实际到账出返佣台账,钱没到的单进「不计佣」表、永远不进批次;周期开关一拨,台账和批次表同时按半个月 / 一个月重排,已发放的批次不动;同行转厂按「客户报价 − 同行结算价 − 介绍费」算我方毛利、连锁内转按内部结算价认收入并把差价留给转出门店,两处都堵了「客户报价当成自己产值」的重复计算。