运营中心 · 小改版设计规范
基于 master 分支,新增「商品」和「计价」两个原型模块(共 9 个页面), 主题色由橙 #FF921C 切换为蓝 #4362FF(与其他蓝色产品对齐), 统一侧栏图标风格(codesign → 恐龙图标库 duotone), 对齐公司设计规范的色彩 Token 体系。本页用于前端交接,记录所有改动点。
色彩规范
全局色彩通过 config/theme.ts 注入 AntD ConfigProvider,
以 CSS 变量形式输出(前缀 --alaya-*),全项目共享。
主题色 · Primary
品牌主色 #4362FF,按钮、链接、选中态、菜单激活态。本次改版从橙 #FF921C 切换到蓝色,与其他蓝色产品对齐。
中性色 · Gray
10 阶灰色,全部文字色、边框色、填充色、背景色都从此推导。
辅助色 · Orange 原主色 · 保留供 warning 状态色使用
原主色橙色降级为辅助色。状态色(待审核、待支付等)若需暖色调从此选取,不要新增其他色族。
文字层级
文字色严格使用 语义层变量(如 colorText、colorTextSecondary),
而不是直接引用 gray-10、gray-8 等调色板层级。
语义变量
边框、填充、背景的语义层级映射,确保改版时能从单一来源调整。
边框 · Border
填充 · Fill
背景 · Background
间距 Spacing
全部使用 AntD 标准 token(与 Figma 设计稿一致)。
基础尺寸 sizeUnit: 4 + sizeStep: 4,输出 11 档 Size.Base 阶梯。
Padding / Margin 都是 Base 的别名引用,外加 Content Padding / Control Padding 两组语义专用。
不要自己造 spacing* 自定义 token,组件直接消费 AntD CSS 变量。
Size.Base · 基础阶梯(11 档)
所有 Padding/Margin 都引用此层数值。CSS 变量 --alaya-size-*。
--alaya-size-xxs--alaya-size-xs--alaya-size-sm--alaya-size--alaya-size-md--alaya-size-lg--alaya-size-xl--alaya-size-xxl--alaya-size-xxxl--alaya-size-xxxxl--alaya-size-xxxxxlPadding / Margin(Base 别名)
| Token | 值 | 引用 | 用途 |
|---|---|---|---|
paddingXXS / marginXXS | 4 | sizeXXS | 极小间距 |
paddingXS / marginXS | 8 | sizeXS | 按钮 icon-文字、Space size 默认 |
paddingSM / marginSM | 12 | sizeSM | 表格单元格垂直、小尺寸 padding |
padding / margin | 16 | size | 卡片内边距、表单项间距、模块之间 |
paddingMD / marginMD | 20 | sizeMD | — |
paddingLG / marginLG | 24 | sizeLG | 大尺寸内边距 |
paddingXL / marginXL | 32 | sizeXL | — |
paddingXL2 / marginXXL | 40 | sizeXXL | 大块内容间距 |
paddingXL3 / marginXXXL | 80 | sizeXXXXL | 章节级间距 |
paddingXL4 | 120 | sizeXXXXXL | — |
Content Padding(内容专用)
内容区域专用 padding,页面水平内边距用 paddingContentHorizontalLG,标题区垂直用 paddingContentVertical。
| Token | 值 | 用途 |
|---|---|---|
paddingContentHorizontal | 16 | 内容水平 padding |
paddingContentHorizontalLG | 24 | 页面水平内边距 |
paddingContentHorizontalSM | 16 | 内容水平 SM |
paddingContentVertical | 12 | 标题区垂直 padding |
paddingContentVerticalLG | 16 | 内容垂直 LG |
paddingContentVerticalSM | 8 | 内容垂直 SM |
Control Padding(控件专用)
| Token | 值 | 用途 |
|---|---|---|
controlPaddingHorizontal | 12 | 输入框/按钮内水平 padding |
controlPaddingHorizontalSM | 8 | 小尺寸控件水平 |
使用示例
// ✅ 推荐:直接用 AntD 标准 CSS 变量(与 Figma 一致) .my-page { padding: 0 var(--alaya-padding-content-horizontal-lg); /* 24 */ } .my-section + .my-section { margin-top: var(--alaya-margin); /* 16 */ } .my-table-cell { padding: var(--alaya-padding-sm) var(--alaya-padding); /* 12 16 */ } // ❌ 禁止:硬编码像素 .my-page { padding: 0 24px; } // ❌ 禁止:自造 spacing* 语义 token // 不要在 theme.ts 里加 spacingPagePaddingX 之类的,AntD 标准命名已经有对应 token
paddingContentHorizontalLG(24)
③ 标题区垂直 → paddingContentVertical(12)
④ 模块之间垂直间距 → margin(16)
⑤ 永远不要硬编码像素
DinoIcons · 恐龙图标库
24 个 duotone(双色)风格 SVG 图标,统一替换原 codesign iconfont 实现侧栏图标风格。
通过 { ReactComponent } inline SVG 方式渲染,颜色跟随 currentColor,
默认 colorTextTertiary,菜单选中/hover 跟随 colorPrimary。
默认状态 · gray-6
使用方式
// 1. 在 route config 中使用 dino-* 字符串 { name: '商品', icon: 'dino-bag-shopping', path: '/ops/misc/commodity', } // 2. app.tsx 的 menuDataRender 自动转换为 React 组件 menuDataRender(menuData) { const patchDinoIcons = (items) => items.map((item) => { if (typeof item.icon === 'string' && item.icon.startsWith('dino-')) { item.icon = React.createElement(dinoIconMap[item.icon]); } return item; }); return patchDinoIcons(menuData); }
顶部导航栏
基于 ProLayout 顶部 Header,layout: 'mix' + splitMenus: true 模式:
一级菜单在 header(横向)、子菜单在 sidebar(纵向)。
左侧 Logo + 平台名,中部一级菜单,右侧操作区(Locale / Avatar)。
本次改版按 Figma 把所有硬编码值改成 AntD token 引用。
完整效果
开启右侧「Inspect」浮层按钮后 hover 任意元素查看具体 token / 尺寸。
规格(全部走 AntD token,禁止硬编码)
controlHeightLG = 40 · 原 48pxcolorBgHeader · #FFFFFFfontSizeLG = 16colorTextHeading · 原 #333 硬编码display: flex + alignItems: centermarginXS = 8 · 原 10 非 AntD scalepadding = 16 · 每个菜单项左右colorPrimary + 底部 2px 主色横线colorPrimary,无背景变化margin = 16 · 操作项之间config/defaultSettings.ts 设置 layout: 'mix' + splitMenus: true →
路由配置中第一层菜单(如「费用中心」「综合中心」)渲染在 header 顶部,
点击后该模块的子菜单(如「账户管理」「订单管理」)才出现在左侧 sidebar。
实际代码(src/app.tsx)
logo: ( <div style={{ display: 'flex', alignItems: 'center' }}> <img src={AlayaNewLogo} style={{ height: 'var(--alaya-control-height-lg)', /* 40 */ }} /> <p style={{ fontSize: 'var(--alaya-font-size-lg)', /* 16 */ marginLeft: 'var(--alaya-margin-xs)', /* 8 */ color: 'var(--alaya-color-text-heading)', marginBottom: 0, fontWeight: 500, }}> 运营平台 </p> </div> )
fontSize: 16 / marginLeft: 10 / color: '#333' / fontWeight: 450 都是硬编码或非 AntD 标准值,本次全部改为 token 引用。
新增路由
所有页面均使用 mock 数据,前端接入时需替换为真实 API。
商品模块 · /ops/misc/commodity
| 路由 | 页面组件 | 说明 |
|---|---|---|
/ops/misc/commodity | — | 一级菜单,icon: dino-bag-shopping |
/ops/misc/commodity/product | commodity/ProductList | 产品管理列表(Drawer 600px 新建/编辑) |
/ops/misc/commodity/list | commodity/CommodityList | 商品管理列表(卡片+表格双视图) |
/ops/misc/commodity/list/create | commodity/CommodityCreate | 新建商品(4 步 Steps 独立页面) |
/ops/misc/commodity/list/:action/:id | commodity/CommodityCreate | 编辑商品 |
/ops/misc/commodity/bundle | commodity/BundleList | 套餐包管理(Drawer 640px 新建/编辑) |
计价模块 · /ops/misc/pricing
| 路由 | 页面组件 | 说明 |
|---|---|---|
/ops/misc/pricing | — | 一级菜单,icon: dino-coins |
/ops/misc/pricing/aidc | pricing/AidcList | AIDC 定价(Drawer 520px) |
/ops/misc/pricing/meter | pricing/MeterList | 计量项管理(Drawer 640px 编辑 + 定价) |
/ops/misc/pricing/billing | pricing/BillingMode | 计费模式(Drawer 560px + 绑定商品 Modal) |
侧栏图标替换 · 14 项
| 菜单 | 旧 icon (codesign) | 新 icon (恐龙) | |
|---|---|---|---|
| 账户管理 | icon-yy-zhanghuguanli | → | dino-wallet |
| 收支管理 | icon-yy-DCUshouzhimingxi | → | dino-invoice-dollar |
| 订单管理 | icon-yy-dingdanguanli | → | dino-receipt |
| 合同管理 | icon-yy-hetongguanli | → | dino-file-check |
| 账单管理 | icon-yy-zhangdanguanli | → | dino-bank-statement |
| 算力包管理 | icon-yy-suanlibaoguanli | → | dino-box |
| 导出记录 | icon-yy-daochujilu | → | dino-file-download |
| 会话监控 | icon-yy-mingchengziyuanjianqiang | → | dino-clipboard-list |
| 客户管理 | icon-yy-yonghuguanli | → | dino-users |
| 商品管理 | icon-yy-shangpinguanli | → | dino-box-check |
| 营销管理 | icon-yy-duihuanmaguanli | → | dino-marketing-target |
| 权限管理 | icon-yy-renyuanquanxianguanli | → | dino-shield-check |
| 消息管理 | icon-yy-gonggaotongzhi | → | dino-notification |
| 系统设置 | icon-yy-biaoqian | → | dino-gear |
icon-yy-xxx 格式并删除 DinoIcons 组件 + SVG 文件。
改动文件清单
合并前请重点 review 以下文件。
新增文件
| 文件路径 | 说明 |
|---|---|
src/pages/commodity/ProductList/index.tsx | 产品管理列表 |
src/pages/commodity/CommodityList/index.tsx | 商品管理列表(双视图) |
src/pages/commodity/CommodityCreate/index.tsx | 新建/编辑商品 |
src/pages/commodity/CommodityCreate/index.less | 商品创建页样式 |
src/pages/commodity/BundleList/index.tsx | 套餐包管理 |
src/pages/pricing/AidcList/index.tsx | AIDC 定价 |
src/pages/pricing/MeterList/index.tsx | 计量项管理 |
src/pages/pricing/BillingMode/index.tsx | 计费模式 |
src/components/DinoIcons/index.tsx | 恐龙图标组件(24 个) |
src/components/DinoIcons/index.global.less | 图标颜色 + 菜单状态样式 |
src/assets/icons/icon*.svg × 24 | duotone 风格 SVG 资源 |
已有文件修改
| 文件 | 改动说明 |
|---|---|
config/route/platformRoutes/misc.ts | 新增商品、计价模块路由 + 14 项图标替换 |
config/route/platformRoutes/cost.ts | 费用中心 8 项图标替换 |
src/app.tsx | 导入 dinoIconMap 并在 menuDataRender 递归替换;底部折叠按钮(menuFooterRender);隐藏默认折叠按钮;顶部 logo 高度 48px → 40px(对齐 Figma),logo 容器加 alignItems: 'center' 让图片和文字水平居中 |
config/theme.ts | 主题色切换:colorPrimary #FF921C 橙 → #4362FF 蓝(与其他蓝色产品对齐);菜单选中背景 secondaryOrange1 → blue1;对齐公司设计规范:gray/blue/orange 色板、文本色、边框色、填充色、背景色 |
src/components/DinoIcons/index.global.less | 图标默认色 colorTextTertiary;选中/hover 跟随主色;下拉箭头 colorTextQuaternary;菜单去过渡 + 子菜单展开动画 0.15s |
已知遗留问题(不在本次改版范围)
主题色已通过 config/theme.ts 切换到蓝色,AntD 内置组件 + 用 var(--alaya-*) 的自定义样式都自动跟随。
但项目中仍有 十几处硬编码 #FF921C 橙色,未走主题系统:
| 文件 | 用途 | 建议 |
|---|---|---|
public/scripts/loading.js | 加载页背景色 | 改为 --alaya-color-primary |
src/constants/order.ts | 订单状态文字色 | 改用 colorWarning 语义 token |
src/constants/notice.ts | "待发布" 状态文字色 | 改用 colorWarning |
src/constants/payOrder.ts | 支付状态文字色 | 改用 colorWarning |
src/components/ChangeLan/index.less | 语言切换器 hover 色 | 改为 --alaya-color-primary |
src/components/CustomPayModal/index.tsx | 弹窗强调色 | 改为 --alaya-color-primary |
var(--alaya-color-primary) 或对应语义 token,不在本次小改版范围。