21 KiB
Client 界面样式规范
范围与验收状态
- 本文是客户端样式的现行维护正文,按新增页面和列表分别定义规则。后续客户端的新增、新建、下单操作统一采用下文“新增页面”的风格;列表沿用列表章节,不把两者的控件尺寸和间距混用。
- 新增页以“海外采购下单”和“美国本土卡车下单”在当前对话确认的外观与布局为样板:满宽、无阴影、精简说明、12px 模块间距、浅色 placeholder 和字段右上角校验提示。两页的不同字段排列见下文,不按整页截图机械复制。规范确定不等于所有新增页已改造或通过视觉验收。列表首个验收样板为“头程物流 → 订单列表”(
/orders/first-leg),其验收状态见文末。 - 只维护
apps/client-web/内的样式和公共组件,不与 Admin 跨应用链接依赖。 - 左侧菜单背景保持现状,不修改
shell.css中的导航背景,也不通过全局品牌变量间接改变导航。 - 标准通过正文容器
.client-ui接入;新增页在本页或新增表单容器内覆盖对应令牌,不将新增页尺寸写入全局默认值。创建、详情与其他模块需分别核对承载方式和字段,不以某个样板通过代替整模块验收。 - 按 1920×1080、浏览器缩放 100% 验收,保留现有窄屏能力。
公共入口与职责
按任务阅读:新增、新建、下单读“新增页面”;列表读“尺寸与布局”“颜色与按钮”及适用的列表样板条款。视觉核对方法只维护在 Admin / Client 前端原型还原验收规则。
| 入口(相对 apps/client-web) | 职责 |
|---|---|
src/styles/client-ui.css |
--client-* 颜色、尺寸、间距;正文按钮和状态外观 |
src/components/common/QueryToolbar.vue |
搜索栏;layout="grid" 为四列筛选布局 |
src/components/common/DataTable.vue |
表格、工具栏、行操作、分页;工具栏内容用插槽提供 |
src/components/common/tableActions.ts |
三个操作以内全部展示,超过三个折叠;禁用和加载状态执行保护 |
src/modules/first-leg/utils/firstLegOrder.ts |
头程状态码 → 语义色,不在公共样式中判断业务状态码 |
src/modules/cross-border/views/ProcurementView.vue 的新增分支 |
新增页外观样板;只参考当前新增分支,不跨模块导入该业务页面 |
src/modules/cross-border/components/BusinessOrdersView.vue 与 TransportDemandForm.vue 的新增分支 |
本土卡与散板共用新增外观;参考三列短字段、两列详细地址和右上角校验。编辑分支及各业务的视觉验收分别核对,不从共用组件推定已通过 |
页面只提供字段、操作、业务状态与权限,不再覆盖公共工具栏 padding、表格行高及分页 padding。确有业务差异时增加明确的组件能力,避免重复页面 CSS。
新增页面
适用范围与设计依据
- 后续客户端新增、新建、下单操作按本章实施。既有页面在对应任务触及时按授权范围调整,不因规范更新批量改造其他页面。
- 本章替代最初海外采购 HTML / UI Redesign Spec 中的 1240px 内容宽度上限、26px 模块间距、24px 表单卡片内边距及重复说明文字;不采用带阴影的大圆角截图版本。桌面导出文件是参考材料,后续规则统一更新本文,不要求开发者依赖个人桌面文件或设计工具链接。
- 统一外观不统一业务表单:字段、顺序、分组、必填条件、默认值、权限、计算口径和提交行为仍按各业务契约及已确认原型。海外采购的采购方向、币种、收件资料等不自动成为其他新增页的字段。
- 独立页面、居中弹框、抽屉仍按对应操作的已确认承载方式;本规范不将所有新增操作改成独立页面。后续用户明确确认的外观例外优先于本章,其余通用外观不回退到旧原型的大留白、阴影或说明堆叠。
- 本章只约束新增内容区。复用现有侧边栏、顶栏、页签和面包屑,不复制设计稿中的静态用户名、菜单或页签,不因新增页改造修改公共外框。
页面组织与信息密度
- 独立新增页使用一个清晰标题,右侧按现有列表访问权限提供返回入口;默认不增加标题下的解释性段落。
- 摘要区按业务需要使用,展示数量、预算等真实表单派生值。已有三项摘要时等宽三列;没有必要摘要的表单直接进入业务区,不为套用样板硬凑三个指标。
- 表单按业务分组呈现为独立白色卡片,标题位于卡片上方,以小圆点区分分组。常规短字段使用三列等宽网格;成对详细地址可使用两列,单个长地址、链接、长备注可占满整行。具体排列按下文样板及业务确认,不把所有区域强制设成相同列数。既有明确分组和摆放不得因凑满网格擅自重排。
- 独立页底部操作靠右,返回列表在前、主提交按钮在后;返回资格沿用现有权限。弹框或抽屉保留其已确认的取消、关闭和提交语义,不硬加“返回列表”。
- 内容填满所在容器的可用宽度,使用
width: 100%、min-width: 0;独立页不设置 1240px 等固定内容上限造成右侧空白。弹框和抽屉中的满宽指其正文容器,不是铺满浏览器视口;保留应用壳层或容器已有边距,不重复包一层大 padding。 - 在 1920×1080、100% 缩放下优先减少无效留白和重复文案,使主要填写内容更集中。长表单允许正常滚动,不通过隐藏必要字段、缩小字号、裁切内容或未经确认拆步骤强行塞进一屏;一屏效果以人工截图为准。
字段列数与宽度
“内容区满宽”“字段单独一行”和“控件占满整行”是三个不同要求,实施前按下表区分。
| 场景 | 当前标准 | 样板 |
|---|---|---|
| 页面、表单卡片 | 铺满可用正文宽度,不留下固定宽度上限造成的右侧空白 | 两个新增页 |
| 常规短字段 | 一行三列等宽,横向间距 20px;输入框填满所在列 | 采购品类/商品名称/商品规格;本土卡取货地/联系人/电话 |
| 前置选择项独立一行 | 单独占一行位置,控件只占三列中的一列,与下一行第一列对齐,右侧留空 | 采购方向、车辆类型 |
| 成对详细地址 | 同一行两列等宽,分别放取货地址、送达地址 | 本土卡运输信息 |
| 单个长字段 | 按已确认分组占满该行,例如商品链接、完整收货地址、备注 | 海外采购及本土卡备注 |
- 前置选择项的一列宽度按正文网格计算:
calc((100% - 40px) / 3),其中 40px 是两个 20px 列间距。不得改成任意固定的 280px,也不得把“独立一行”理解成下拉框横跨整张卡片。 - 混合三列短字段与两列地址时,可以使用六列基础网格,短字段跨两格、详细地址跨三格;这只是实现方式,用户看到的仍是三列或两列。前置项独占整行位置,再将自身宽度限制为标准一列。
- 字段按实际阅读顺序写入模板,键盘 Tab 顺序与视觉顺序一致;不只用 CSS
order把同一组联系人拆散重排。
两个样板的具体排列
以下是后续页面可对照的布局依据,不是要求其他业务复制相同字段、默认值或摘要指标。
| 页面/区域 | 已确认排列 |
|---|---|
| 海外采购/摘要 | 数量、预算单价、币种三张等宽卡片,数值与当前表单联动 |
| 海外采购/商品与预算 | 采购方向独立一行、控件一列宽;其后采购品类/商品名称/商品规格三列,采购数量/预算单价/预算币种三列;商品链接整行,预算总上限用普通文本 |
| 海外采购/收件资料 | 收件人、联系电话各占三列网格的一列,第三列留空;完整收货地址、采购要求各占整行 |
| 本土卡/运输信息 | 车辆类型独立一行、控件一列宽;取货地/取货联系人/取货联系电话一行三列;送达地/送达联系人/送达联系电话一行三列;取货地址/送达地址一行两列 |
| 本土卡/货物信息 | 托数/总重量/总体积一行三列 |
| 本土卡/费用与时效 | 预算总价与币种组成同一字段,占两列网格的左列,右列留空;取货时间/送达时间一行两列;备注整行 |
代码参考:海外采购新增分支、本土卡页面外框、本土卡表单。新业务先确定字段分组与承载方式,再使用通用外观;若要调整上述排列或推广到其他共用分支,须在对应任务中明确范围,不顺手扩展。
尺寸与间距
以下数值分别适用,不将所有间距一律改为 12px。
| 元素 | 新增页标准 |
|---|---|
| 页头、摘要区、表单模块底部间距 | margin-bottom: 12px |
| 摘要卡之间 | 横向 gap 16px |
| 摘要卡内部 | padding 12px 16px;纵向 gap 8px |
| 摘要标题行 | 图标与标题 gap 12px;图标底块 44×44px,圆角 8px;线性图标 20px |
| 表单卡片 | padding 16px;1px 边框;圆角 10px |
| 摘要卡片 | 1px 边框;圆角 10px |
| 分组标题 | 下方 margin 10px;圆点 9px;圆点与标题 gap 10px |
| 表单网格 | 常规三列等宽,两列/整行区域按上文布局;纵向 gap 12px、横向 gap 20px;单项不另叠加底部 margin |
| 标签与控件 | 间距 6px;标签行高 20px |
| 字段校验提示 | 字段右上角、标签同行,12px 字号、20px 行高;不增加底部占位和字段高度 |
| 输入框、选择框 | 最小高 44px;圆角 6px;padding 10px 14px |
| 多行输入 | 最小高 110px;padding 11px 14px;允许纵向调整;字数计数在下方右侧,间距 4px |
| 预算等必要汇总值 | 上方 margin 10px;字号 13px、行高 20px;普通文本,不做说明横幅 |
| 底部按钮间距 | gap 12px |
| 次按钮 | 最小高 44px;padding 10px 18px;圆角 6px |
| 主按钮 | 最小高 44px;padding 12px 28px;圆角 6px |
字体、颜色与状态
字体沿用中文无衬线栈:"PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif。
| 用途 | 标准 |
|---|---|
| 独立页标题 | 26px / 700;margin 0 |
| 分组标题 | 18px / 700 |
| 正文、输入内容 | 14px / 400 |
| 字段标签 | 14px / 600 |
| 摘要标题、数值、单位 | 15px / 600;30px / 700;14px / 500 |
| 内容底色、卡片及控件底色 | #F4F7FC、#FFFFFF |
| 主文字、标签、次要文字 | #1F2937、#374151、#6B7280 |
| 占位文字 placeholder | #B0B7C3;输入框、多行输入和选择框的未填写提示统一使用,已填写内容保持正文色 |
| 卡片边框、控件及次按钮边框 | #E3E8F0、#D5DCE8 |
| 主按钮 | #2F7BFF 背景、白字 |
| 次按钮、摘要数值 | #1D5FE0;次按钮白底描边 |
| 必填星号 | #E5484D |
| 焦点 | 2px #2F7BFF outline;无发光阴影 |
- 卡片、输入框、选择框及其弹出层、按钮均不使用装饰阴影、渐变、毛玻璃或位移动效;分隔依靠边框与底色。
- 主要操作以蓝色为强调色,其他颜色仅用于必要的业务状态、错误反馈和小面积分组标记。样板图标底块可使用蓝
#EAF2FF / #2F7BFF、绿#E8F8F0 / #16A34A、橙#FFF5E0 / #D97706;分组圆点使用蓝色或青色#0EA5A4,不把整块表单染成状态色。 - 已确认的原型图标沿用对应资源;未定义的图标使用项目既有图标库,不引入第二套组件库或表情图标。无需要时不添加装饰图标。
- 保留清晰的禁用、提交中、焦点和错误状态,状态不只依赖颜色表达;不得为了“干净”删去校验、失败重试或权限说明。
文案与数据绑定
- 删除重复解释性提示:不恢复页头“一单一个商品及规格……”、摘要卡下的说明行,也不新增类似的常驻说明段落或黄色提示横幅。
- 字段标签与简短占位提示负责说明输入用途;校验错误、提交失败、无权限及必要业务提示按实际状态就近出现。保留影响客户正确操作的必要信息,不将“去提示”理解为关闭验证或隐藏错误。
- 未填写字段应提供简短 placeholder,例如“请选择车辆类型”“请输入取货联系人姓名”“请选择取货日期和时间”;不要通过
placeholder=""将必要输入提示清空。按字段性质标明选填,不使用整段业务说明代替占位文字;已存在默认值时显示真实值,不为显示 placeholder 清除默认值,尤其不得把有效的0当作空值。 - 保留真实汇总数据,例如货款预算总上限;摘要和汇总跟随当前表单实时更新,不能保留设计稿中的静态
1、USD或0 / 1000。 - 空值显示“—”,合法零值按零展示;金额沿用现有精度处理,不因样式调整改变校验或金额口径。支持多个币种或方向的业务继续联动展示,不用原型示例缩减现有能力。
必填校验与稳定布局
- 字段错误提示统一放在输入框右上方,与字段标签同行、靠右对齐;保留必填星号与错误边框。提示出现、纠正或清空时,后续字段和整张卡片不得上下跳动。
- 错误不参与正常文档流,不在控件下面额外预留 16px 空行;标签区应能同时容纳标签与简短错误文案。对当前明确的单行标签,可相对
.el-form-item__content使用bottom: calc(100% + 6px)、right: 0定位,宽度避开标签。更长标签或提示须单独核对,不截断必要错误或覆盖标签、输入内容。 - 必填星号必须配套字段级校验:Element Plus 表单绑定
ref、model、rules,校验项绑定对应prop;文本失焦、选项变化时校验当前字段,提交时校验全部必填项。未通过时不发送创建请求,不用整页错误代替缺失字段提示。 - 填写正确并再次触发校验后清除该字段错误;重置表单时清除校验状态;提交中防重复点击,失败保留填写内容。采购预算单价
0是有效值,不得误报必填。 - 已有金额、格式、权限和服务端校验继续保留;非字段级请求失败仍按原有页面错误反馈处理。本规范不改变业务规则,也不将两页未统一的所有校验逻辑推定为已统一。
接入与核对
- 使用现有 Vue、Element Plus 和
.client-ui;新增页所需 44px 控件、14px 字号、配色等在新增内容容器内覆盖。列表仍使用下文的 32px 控件,不修改全局:root使其他页面跟随变化。 - 同一组件同时承载列表、新增和详情时,新增样式必须限制在新增分支;不得扩大到列表、详情或侧边导航。跨模块稳定复用时按应用指引抽取通用能力,不跨模块导入采购页,也不复制设计工具的 React 运行时。
- 新增或整体重排页面时,按前端验收规则核对该操作的承载方式、满宽、字段分组和按钮;重点检查前置选择项是否与三列网格对齐、短字段和成对地址列数、placeholder、长值、摘要联动、空值与零值、校验出现/消失时的位置稳定及正常滚动。纯文案或小间距调整只核对差异,不重复建立完整矩阵。
- 自动检查按实际变更选择;文案和纯样式不自动升级为全量测试、类型检查或构建。真实视觉由人工提供截图确认,部署成功或静态资源命中不等于一屏布局通过;不开展当前阶段未要求的窄屏验收。
尺寸与布局
本节用于列表、查询栏和表格工具栏;新增表单使用上文“新增页面”的尺寸。
| 项目 | 标准 |
|---|---|
| 正文、表格、按钮字号 | 13px |
| 次要说明、状态字号 | 12px |
| 普通按钮、输入框 | 高 32px |
| 表格行操作按钮 | 高 28px,左右 padding 8px |
| 按钮间距 | 8px |
| 搜索栏 | padding 16px;四列;字段间距纵向 12px、横向 16px |
| 搜索操作区 | 顶部 margin 12px、padding 12px,分隔线与字段区区分 |
| 表格工具栏 | 最小高 48px;padding 8px 16px;实际高度随操作换行增长 |
| 表头 | 高 44px,浅灰底,600 字重 |
| 数据行 | 高 48px;白底与浅灰交替,悬停浅蓝 |
| 单元格 | 左右 padding 12px,行高 20px |
| 分页 | 最小高 58px;padding 12px 16px;页码按钮 32px |
| 内容分区间距、圆角 | 16px、6px |
长编号保持可辨认,普通长文本省略并提供完整内容提示;金额右对齐,状态居中。操作列在业务列最左侧并固定,批量选择框在其前方。列设置、排序与选择行为保持原有业务逻辑。
颜色与按钮
本节用于列表操作和状态语义;新增表单按钮的外观使用上文“新增页面”,业务危险语义和权限要求仍须保留。
| 用途 | 文字色 | 背景色 |
|---|---|---|
| 默认操作 | #1777ff |
白色 |
| 主要操作 | 白色 | #1777ff |
| 处理中 | #175cd3 |
#eff8ff |
| 成功 | #067647 |
#ecfdf3 |
| 待处理、提醒 | #b54708 |
#fffaeb |
| 失败、危险 | #b42318 |
#fef3f2 |
| 草稿、中性 | #475467 |
#f2f4f7 |
| 禁用按钮 | #98a2b3 |
#f9fafb |
- 查询、创建等主要操作使用实心蓝色;行内详情、编辑等使用白底描边蓝字,统一使用纯文字,不显示装饰图标。加载中的进度指示保留。
- 行操作先按权限及业务条件过滤,再计算数量;1–3 个全部展示,4 个及以上显示前两个和
…。入口保留“更多操作”的可访问名称。 - 禁用操作不被隐藏,不因禁用改变位置;加载中不可重复执行。
- 表格顶部批量操作不套用行操作的三个阈值,保留明确的批量入口和创建入口。
- 危险操作仍需原有业务确认;样式不改变权限和提交条件。
头程状态映射
| 状态码 | 文案 | 语义色 |
|---|---|---|
| DRAFT | 草稿 | 中性灰 |
| PENDING_REVIEW | 待审核 | 提醒橙 |
| WAIT_MEASURE | 待测量数据 | 处理中蓝 |
| WAIT_PALLETIZE | 待组托 | 处理中蓝 |
| WAIT_SPLIT | 待分柜 | 处理中蓝 |
| LOADING | 装柜中 | 处理中蓝 |
| LOADED | 装柜完成 | 成功绿 |
| DELIVERED | 派送完成 | 成功绿 |
| COMPLETED | 已完成 | 成功绿 |
测试环境复验补充:服务端统一订单已正式返回 COMPLETED,列表、筛选和详情沿用该状态,不能再显示英文或映射成“装柜完成”。订单号列宽 240px,入仓码列宽 230px,状态默认紧随入仓码,保证首屏可识别。
标签包含状态文字,颜色为辅助识别。其他模块需按业务阶段单独列出状态映射,不以中文模糊匹配统一推断;未知状态不得伪装为处理中或完成。
样板逐操作验收矩阵
| 检查对象 | 首版目标 | 验收方式 |
|---|---|---|
| 左侧菜单 | 背景与修改前一致 | 同视口截图对照 |
| 列表首屏 | 筛选、工具栏、表格、分页层次一致 | 有数据的完整页面截图 |
| 搜索 | 查询和重置有效;输入框不遮挡、字段标签完整 | 查询前后、重置后 |
| 工具栏 | 列设置、下载、导出、批量提交、批量导入、创建入口保留 | 未选择/已选择/无写权限 |
| 行操作 | 1、2、3 个不折叠;4 个时前两个加省略入口 | 按权限与业务条件验证,不修改真实订单来凑状态 |
| 状态 | 草稿、待审核、处理中、装柜完成的语义颜色不同 | 对照多状态列表 |
| 表格 | 横向滚动时选择、操作、订单号可用;完整值可查看 | 长编号、长渠道、空值、列重排 |
| 分页 | 条数和页码完整;更换条数回到第 1 页 | 10/20/50 条、首尾页 |
| 加载/失败/空态 | 失败保留重试和工具栏;不把失败显示为无订单 | 加载、失败重试、空结果 |
| 关联操作 | 详情、费用、编辑、报关入口保持原有行为 | 只读打开核对;写入另按授权执行 |
自动化检查不代替真实页面截图。列表样板确认前,不将其他 21 个菜单标记为已统一或已验收。
2026-09-15 经用户明确授权完成内置浏览器验收:测试部署 client-web-test #282、提交 7068f49 成功;1920×1080、100% 缩放下检查首屏、筛选重置、全选、列设置、10/20/50 分页、横向固定列、详情入口以及灰/橙/蓝/绿状态。实测工具栏 padding 为 8px 16px,分页为 12px 16px,表头/行高为 44px/48px,行按钮 28px、#1777ff;菜单背景与部署前一致。四操作折叠分支仅自动化覆盖,缺少真实四操作数据;用户对视觉标准的最终确认待完成。