# 丹阳公益婚恋服务平台 # V1.0 前端组件库与 Design Token 规范 版本:V1.0 适用范围:微信小程序用户端、公益红娘工作台、运营管理后台 目标:统一视觉、降低研发成本、提高复用率、减少后期维护难度 --- # 第一章 规范目标 本规范用于统一整个V1.0前端设计与开发中的: - 品牌颜色 - 中性色 - 字号 - 字重 - 行高 - 圆角 - 间距 - 阴影 - 图标 - 按钮 - 标签 - 表单 - 用户卡片 - 推荐卡片 - 活动卡片 - 状态组件 - 弹窗 - 空状态 - 错误状态 - 加载状态 - PC后台组件 后续所有页面原则上不得单独创造新的: - 颜色 - 圆角 - 字号 - 按钮样式 - 卡片样式 - 状态颜色 如确需新增,应先进入组件库,再进入业务页面。 --- # 第二章 Token命名原则 统一采用语义化命名。 不要使用: ```text red1 red2 gray3 bigFont smallFont ``` 建议使用: ```text color-primary color-text-primary color-success radius-card spacing-page font-title-lg ``` 这样后期修改品牌风格时,不需要逐页面替换。 --- # 第三章 颜色 Design Token ## 3.1 品牌主色 ```text color-primary = #E96B6B ``` 用途: - 一级按钮 - 当前Tab - 喜欢按钮 - 品牌强调 - 重点链接 - 部分进度状态 --- ## 3.2 品牌主色按压态 ```text color-primary-active = #D95F5F ``` 用于: - 按钮按下 - 可点击组件按压反馈 --- ## 3.3 品牌浅色 ```text color-primary-light = #FFF3F2 ``` 用途: - 推荐理由背景 - 浅品牌卡片 - 已喜欢轻状态 - 婚恋相关轻提示 --- ## 3.4 品牌极浅色 ```text color-primary-lighter = #FFF8F7 ``` 用于: - 非核心区域背景 - 强调卡片底色 --- # 第四章 功能色 ## 4.1 成功色 ```text color-success = #2E9B68 color-success-light = #ECF8F2 ``` 用于: - 已实名 - 已审核 - 报名成功 - 已签到 - 操作完成 --- ## 4.2 警告色 ```text color-warning = #E59A32 color-warning-light = #FFF7E9 ``` 用于: - 审核中 - 需修改 - 风险提醒 - 待处理 --- ## 4.3 错误/危险色 ```text color-danger = #D94A4A color-danger-light = #FFF0F0 ``` 用于: - 举报 - 拉黑 - 封禁 - 错误 - 极高风险 --- ## 4.4 信息色 ```text color-info = #4A7CD4 color-info-light = #EEF4FF ``` 用于: - 系统说明 - 普通通知 - 辅助信息 --- # 第五章 中性色 ```text color-text-primary = #222222 color-text-secondary = #444444 color-text-tertiary = #777777 color-text-placeholder = #999999 color-border = #EEEEEE color-divider = #F0F0F0 color-bg-page = #F7F8FA color-bg-card = #FFFFFF color-bg-disabled = #F3F3F3 color-disabled-text = #B5B5B5 ``` --- # 第六章 深色文字使用规则 标题: ```text color-text-primary ``` 正文: ```text color-text-secondary ``` 辅助信息: ```text color-text-tertiary ``` Placeholder: ```text color-text-placeholder ``` 不要随意使用: ```text #000000 #333333 #666666 ``` 统一使用Token。 --- # 第七章 字体体系 用户端优先使用系统字体。 ```text font-family-cn = PingFang SC, Noto Sans SC, system-ui ``` PC后台: ```text font-family-admin = Inter, PingFang SC, Noto Sans SC, system-ui ``` 不额外引入装饰性品牌字体。 --- # 第八章 字号 Token ```text font-size-xs = 12px font-size-sm = 13px font-size-md = 14px font-size-base = 16px font-size-lg = 18px font-size-xl = 20px font-size-2xl = 24px font-size-3xl = 28px ``` --- # 第九章 字号使用规则 ## 页面大标题 ```text 24px font-size-2xl ``` ## 页面标题 ```text 20px font-size-xl ``` ## 卡片标题 ```text 18px font-size-lg ``` ## 正文 ```text 16px font-size-base ``` ## 普通辅助文字 ```text 14px font-size-md ``` ## 标签 ```text 12~13px font-size-xs / sm ``` --- # 第十章 字重 ```text font-weight-regular = 400 font-weight-medium = 500 font-weight-semibold = 600 font-weight-bold = 700 ``` 原则: - 正文:400 - 按钮:500 - 卡片标题:600 - 页面大标题:600 极少使用700。 --- # 第十一章 行高 ```text line-height-tight = 1.25 line-height-normal = 1.5 line-height-relaxed = 1.7 ``` 使用: 标题: ```text 1.25 ``` 普通正文: ```text 1.5 ``` 长文本: ```text 1.7 ``` --- # 第十二章 间距 Token 采用4px基础栅格。 ```text spacing-1 = 4px spacing-2 = 8px spacing-3 = 12px spacing-4 = 16px spacing-5 = 20px spacing-6 = 24px spacing-8 = 32px spacing-10 = 40px spacing-12 = 48px ``` --- # 第十三章 页面间距规范 用户端页面左右: ```text spacing-page-x = 16px ``` 区块间: ```text 20~24px ``` 卡片内部: ```text 16px ``` 紧密内容: ```text 8px ``` --- # 第十四章 圆角 Token ```text radius-sm = 8px radius-md = 12px radius-lg = 16px radius-xl = 20px radius-full = 999px ``` 使用: - Input:12px - Button:12px - 普通卡片:16px - 首页推荐卡片:20px - Tag:999px --- # 第十五章 阴影 Token 原则: > 极轻阴影。 推荐: ```text shadow-card = 0 4px 16px rgba(0,0,0,0.04) ``` 浮层: ```text shadow-popup = 0 8px 32px rgba(0,0,0,0.10) ``` 不要使用明显深阴影。 --- # 第十六章 边框 Token ```text border-width = 1px border-color = #EEEEEE ``` Input Focus: ```text border-color-focus = color-primary ``` 错误: ```text border-color-error = color-danger ``` --- # 第十七章 动效 Token ```text motion-fast = 120ms motion-normal = 200ms motion-slow = 300ms ``` 缓动: ```text ease-standard = ease-out ``` 不要超过500ms的常规UI动效。 --- # 第十八章 图标规范 建议统一线性图标。 基础尺寸: ```text icon-xs = 16px icon-sm = 20px icon-md = 24px icon-lg = 32px ``` 图标库建议保持统一风格。 不要混用: - 填充图标 - 卡通图标 - 3D图标 - 多套不同图标库 --- # 第十九章 Button组件 组件名: ```text Button ``` 支持Variant: ```text primary secondary text danger ghost ``` 支持Size: ```text small medium large ``` --- # 第二十章 Primary Button ```text height = 48px radius = 12px background = color-primary text = white font-size = 16px font-weight = 500 ``` Hover/Press: ```text color-primary-active ``` Disabled: ```text background = color-bg-disabled text = color-disabled-text ``` --- # 第二十一章 Secondary Button ```text height = 48px background = #FFFFFF border = color-primary text = color-primary ``` 典型场景: - 查看资料 - 返回修改 - 稍后再聊 - 放宽条件 --- # 第二十二章 Text Button 没有背景。 用于: - 编辑 - 查看更多 - 取消喜欢 - 解除拉黑 --- # 第二十三章 Danger Button 用于: - 拉黑 - 封禁 - 注销 - 删除 背景方式建议: 普通用户端: > 红色文字/描边优先。 后台严重操作: > 可使用红色实心按钮。 --- # 第二十四章 Button状态 每个按钮必须支持: ```text default pressed loading disabled ``` Loading状态: ```text 加载图标 + 文案 ``` 例如: > 提交中... 禁止用户重复点击。 --- # 第二十五章 Input组件 组件名: ```text Input ``` 高度: ```text 48px ``` 支持: ```text label placeholder prefix suffix helperText errorText disabled ``` --- # 第二十六章 Input状态 ```text default focus filled error disabled ``` 错误状态: ```text 红色边框 + 字段下方错误文字 ``` 不要只用红框,不显示原因。 --- # 第二十七章 Textarea组件 用于: - 自我介绍 - 举报说明 - 红娘服务说明 - 意见反馈 建议最小高度: ```text 120px ``` 支持字数统计: ```text 128 / 500 ``` --- # 第二十八章 Select组件 移动端优先: > Picker / Bottom Sheet PC后台: > Dropdown Select 不要在微信小程序中强行模拟PC下拉菜单。 --- # 第二十九章 RadioGroup组件 整行可点击。 示例: ```text ○ 必须符合 ● 最好符合 ``` 组件: ```text RadioGroup RadioItem ``` --- # 第三十章 Checkbox/TagSelect组件 婚恋标签选择建议使用: ```text TagSelect ``` 例如: ```text [旅行] [运动] [阅读] ``` 未选中: ```text 浅灰背景 深灰文字 ``` 选中: ```text color-primary-light color-primary ``` --- # 第三十一章 Switch组件 用于: - 隐私设置 - 是否接收活动推荐 - 是否允许搜索 - 是否接受红娘推荐 建议使用系统化Switch。 --- # 第三十二章 SliderRange组件 用于: - 年龄 - 身高 组件: ```text RangeSlider ``` 同时显示左右值: ```text 28岁 —— 35岁 ``` 不要只显示滑块而看不到当前数值。 --- # 第三十三章 ProgressBar组件 用于: - 资料完善进度 - 注册流程 参数: ```text value max showText ``` 颜色: ```text color-primary ``` --- # 第三十四章 StatusBadge组件 统一组件: ```text StatusBadge ``` 支持状态: ```text verified reviewed reviewing need_edit success pending danger disabled service ``` --- # 第三十五章 StatusBadge视觉 ## 已实名 ```text background = color-success-light text = color-success ``` 文案: > 已实名 --- ## 已审核 ```text background = color-success-light text = color-success ``` --- ## 审核中 ```text background = color-warning-light text = color-warning ``` --- ## 需修改 ```text background = color-warning-light text = color-warning ``` --- ## 高风险 ```text background = color-danger-light text = color-danger ``` --- # 第三十六章 UserCard组件 UserCard是平台核心组件之一。 用于: - 找对象 - 喜欢列表 - 红娘候选 - 活动意向名单 基础属性: ```text avatar displayName age height region education occupation maritalStatus verified reviewed ``` --- # 第三十七章 UserCard移动端结构 ```text ┌────────────────────────┐ │ [照片] 王女士 · 32岁 │ │ 165cm · 丹阳 │ │ 本科 · 教师 │ │ 未婚 │ │ ✓ 已实名 │ └────────────────────────┘ ``` 推荐: ```text avatar:88×112px ``` 比例约: ```text 4:5 ``` --- # 第三十八章 UserCard交互 整卡: > 可点击进入详情。 不要在普通列表里堆: - 喜欢 - 举报 - 拉黑 - 红娘推荐 这些应进入详情或特定业务场景。 --- # 第三十九章 RecommendCard组件 用于: > 首页每日推荐。 继承UserCard,并增加: ```text photos recommendReasons likeStatus actionMode ``` --- # 第四十章 RecommendCard结构 ```text 照片区域 ↓ 用户核心资料 ↓ 认证状态 ↓ 推荐理由 ↓ 操作栏 ``` --- # 第四十一章 RecommendReason组件 组件: ```text RecommendReason ``` 样式: ```text background = color-primary-light radius = 12px padding = 12~16px ``` 最多显示: > 3~4条。 --- # 第四十二章 RecommendReason文案 每条使用: ```text ✓ 年龄符合双方要求 ``` 不要写: ```text 算法得分 +15 权重命中 ``` --- # 第四十三章 ActivityCard组件 属性: ```text cover title date time location feeType status registrationCount ``` V1前台不要重点展示报名人数。 --- # 第四十四章 ActivityCard结构 ```text 封面 活动名称 时间 地点 公益免费标签 状态 ``` --- # 第四十五章 ActivityStatus 支持: ```text 报名中 审核中 报名成功 已满 已结束 已签到 ``` --- # 第四十六章 ProfileSection组件 用于用户详情页。 结构: ```text 标题 内容 ``` 例如: ```text 关于TA ──────── 婚姻状况 未婚 学历 本科 ``` 统一Padding: ```text 16px ``` 统一Radius: ```text 16px ``` --- # 第四十七章 InfoRow组件 用于: ```text 左侧Label 右侧Value ``` 例如: ```text 婚姻状况 未婚 ``` 属性: ```text label value highlight ``` --- # 第四十八章 PhotoGrid组件 用于: - 用户生活照片 - 举报证据 - 意见反馈 用户资料中: ```text 2~3列 ``` 照片比例: ```text 1:1 ``` 点击: > Preview。 --- # 第四十九章 PhotoUploader组件 支持: ```text single multiple maxCount compress preview delete ``` 主头像模式: ```text single ``` 生活照: ```text multiple ``` --- # 第五十章 Avatar/ProfilePhoto规范 婚恋用户头像建议: > 尽量使用真实照片矩形裁切。 列表: ```text 4:5 ``` 聊天: ```text 1:1 圆角 ``` 不要所有地方都裁成圆形。 --- # 第五十一章 NoticeBar组件 用于: - 聊天安全提醒 - 审核提示 - 活动提示 Variant: ```text info warning success danger ``` 聊天安全: ```text warning ``` --- # 第五十二章 Toast组件 适用于即时轻反馈。 例如: ```text 已喜欢 保存成功 报名已提交 已解除拉黑 ``` 展示: ```text 1.5~2秒 ``` 不允许承载复杂信息。 --- # 第五十三章 Dialog组件 用于重要二次确认。 结构: ```text title description primaryAction secondaryAction ``` 适用: - 解除匹配 - 拉黑 - 暂停寻找 - 成功牵手 - 封禁 - 删除 --- # 第五十四章 BottomSheet组件 移动端优先用于: - 选择操作 - 解除匹配原因 - 简单Picker - 更多菜单 最大高度建议: ```text 80vh ``` --- # 第五十五章 MoreMenu组件 用户详情和聊天右上角: ```text ··· ``` 内容: ```text 查看资料 解除匹配 举报 拉黑 ``` 根据业务状态动态显示。 --- # 第五十六章 EmptyState组件 属性: ```text icon title description actionText action ``` 示例: ```text 暂无聊天 双方互相喜欢后, 就可以开始交流。 [ 去看看推荐 ] ``` --- # 第五十七章 ErrorState组件 示例: ```text 网络好像有点问题 请检查网络后重新加载。 [ 重新加载 ] ``` 不要展示技术堆栈信息。 --- # 第五十八章 Loading组件 页面加载: 优先: > Skeleton。 按钮: > Spinner。 不要全屏长期显示大型Loading动画。 --- # 第五十九章 Skeleton组件 至少支持: ```text UserCardSkeleton RecommendCardSkeleton ListSkeleton ProfileSkeleton ``` 避免页面加载时跳动过大。 --- # 第六十章 MatchSuccess组件 用于双向喜欢。 属性: ```text userAvatar targetAvatar targetName primaryAction ``` 视觉: > 简洁爱心+双头像。 不要做娱乐化动画。 --- # 第六十一章 ChatListItem组件 属性: ```text avatar name lastMessage time unreadCount ``` 样式接近用户熟悉的微信消息列表。 --- # 第六十二章 ChatBubble组件 支持: ```text self other system ``` 用户本人: > 右侧。 对方: > 左侧。 系统安全信息: > 中间。 --- # 第六十三章 RiskNotice组件 用于聊天风险提示。 Variant: ```text money fraud privacy ``` 但V1视觉统一,不需要不同颜色体系。 默认警告色。 --- # 第六十四章 Tab组件 用户端: ```text SegmentTabs ``` 例如: ```text 互相喜欢 | 我喜欢的 | 喜欢我的 ``` 后台: ```text PageTabs ``` 例如: ```text 待审核 | 审核中 | 已通过 ``` --- # 第六十五章 BottomTabBar组件 固定五项: ```text 首页 找对象 消息 活动 我的 ``` 必须使用统一图标和文案。 消息有未读时: > 红点或数字Badge。 --- # 第六十六章 Navbar组件 小程序页面统一: ```text title back rightAction ``` 尽量使用微信原生导航行为。 --- # 第六十七章 SearchBar组件 后台和部分用户搜索使用。 用户端: > 不作为主入口。 后台: 用于: - 用户搜索 - 活动人员搜索 - 红娘用户搜索 --- # 第六十八章 FilterBar组件 后台列表统一使用。 结构: ```text 搜索 筛选项 查询 重置 ``` 避免每个后台页面重新布局。 --- # 第六十九章 DataTable组件 红娘端、后台核心组件。 支持: ```text columns pagination sorting selection actions loading empty ``` --- # 第七十章 DataTable视觉规范 表头: ```text 14px 500 浅灰背景或白背景 ``` 表格正文: ```text 14px ``` 行高: ```text 52~56px ``` --- # 第七十一章 TableRowAction组件 每行最多: ```text 2个直接操作 + 更多 ``` 例如: ```text 查看 | 审核 | 更多 ``` --- # 第七十二章 AdminSidebar组件 宽度: ```text 220~240px ``` 状态: ```text default active collapsed ``` V1可不优先做折叠。 --- # 第七十三章 AdminHeader组件 包含: ```text 当前机构 通知 当前用户 退出 ``` 不加入无关信息。 --- # 第七十四章 StatCard组件 后台工作台统一组件。 属性: ```text title value trend status action ``` 示例: ```text 待审核资料 12 ``` --- # 第七十五章 StatCard规则 待办类: > 可点击。 普通统计: > 不一定可点击。 不要用大量渐变背景。 --- # 第七十六章 RiskLevelTag组件 后台风险: ```text 正常 关注 高风险 封禁 ``` 颜色: 正常: ```text success ``` 关注: ```text warning ``` 高风险: ```text danger ``` 封禁: ```text 深灰/危险 ``` --- # 第七十七章 ReviewStatus组件 用户审核: ```text 待审核 审核中 需修改 已通过 已拒绝 ``` 统一各端显示。 --- # 第七十八章 ServiceStatus组件 红娘: ```text 待分配 已接单 服务中 待跟进 已完成 ``` --- # 第七十九章 ActivityManagementStatus组件 后台活动: ```text 草稿 报名中 报名结束 进行中 已结束 ``` --- # 第八十章 FormSection组件 后台长表单使用。 例如: ```text 基本信息 活动时间 人数限制 报名设置 ``` 减少一个大表单堆几十个字段。 --- # 第八十一章 ConfirmDangerDialog组件 后台高风险操作统一使用。 例如封禁: ```text 确认封禁该用户? 封禁后用户将无法继续使用婚恋服务。 原因: [请选择] [确认封禁] [取消] ``` 必须要求原因。 --- # 第八十二章 Pagination组件 默认: ```text 20条/页 ``` 支持: ```text 20 50 100 ``` V1默认建议只开放20/50。 --- # 第八十三章 DatePicker组件 移动端: > 微信Picker。 后台: > 日期时间组件。 统一存储时间格式由后端定义,前端负责本地化显示。 --- # 第八十四章 FormValidation规范 字段错误优先显示在字段下方。 例如: ```text 身份证号码 [32xxxxxxxxxxxx] 身份证号码格式不正确 ``` 不要提交后只顶部显示: > 表单有错误。 --- # 第八十五章 必填标识 必填项: ```text * ``` 但首次资料填写中尽量通过产品流程减少大量星号。 可选项明确标注: > 选填 --- # 第八十六章 Disabled状态 禁用组件必须: - 视觉明显变淡 - 无点击响应 - 如用户可能疑惑,给说明 例如: ```text 资料审核中,暂不能修改婚姻状态。 ``` --- # 第八十七章 图片占位组件 头像缺失: 不要默认用随机人物照片。 使用: > 中性用户轮廓图标。 但正式进入匹配前: > 必须上传真实头像。 --- # 第八十八章 内容超长规则 用户名称: > 单行省略。 职业: > 单行省略。 个人介绍: 详情页完整展示。 列表: > 不显示或最多2行。 --- # 第八十九章 标签数量限制 UserCard: 最多: ```text 2~3个状态标签 ``` 详情页兴趣: 最多: ```text 8个 ``` 避免标签海洋。 --- # 第九十章 层级 Z-Index Token 建议统一: ```text z-base = 1 z-sticky = 100 z-tabbar = 200 z-dropdown = 500 z-modal = 1000 z-toast = 2000 ``` --- # 第九十一章 Safe Area规范 微信小程序底部: 必须考虑: ```text env(safe-area-inset-bottom) ``` 底部固定按钮和Tab不能被系统Home Indicator遮挡。 --- # 第九十二章 PC响应式断点 ```text breakpoint-md = 1024px breakpoint-lg = 1280px breakpoint-xl = 1440px ``` 红娘端/后台: V1优先优化: ```text 1280+ ``` --- # 第九十三章 用户端组件命名建议 前端目录: ```text components/ button/ input/ status-badge/ user-card/ recommend-card/ activity-card/ profile-section/ info-row/ photo-grid/ photo-uploader/ notice-bar/ empty-state/ error-state/ loading/ match-success/ chat-bubble/ bottom-sheet/ ``` --- # 第九十四章 后台组件命名建议 ```text admin-components/ admin-sidebar/ admin-header/ stat-card/ filter-bar/ data-table/ review-status/ risk-level-tag/ form-section/ confirm-danger-dialog/ ``` --- # 第九十五章 页面不得直接写死颜色 禁止: ```css color: #E96B6B; ``` 页面层应使用: ```css color: var(--color-primary); ``` 或框架对应的Token引用方式。 --- # 第九十六章 页面不得直接写死通用间距 避免: ```css margin-top: 17px; ``` 优先: ```text spacing-4 spacing-5 spacing-6 ``` 只有特殊布局才允许例外。 --- # 第九十七章 微信小程序Token建议 可统一定义: ```text --color-primary --color-primary-light --color-success --color-warning --color-danger --color-info --text-primary --text-secondary --text-tertiary --bg-page --bg-card --radius-sm --radius-md --radius-lg --spacing-1 --spacing-2 --spacing-3 --spacing-4 --spacing-5 --spacing-6 ``` --- # 第九十八章 推荐Token代码结构示例 ```text theme/ colors typography spacing radius shadow motion ``` 不要把所有样式变量放在一个无法维护的大文件中。 --- # 第九十九章 组件状态统一原则 所有可交互组件至少考虑: ```text 默认 按下 加载 禁用 错误 空状态 ``` 需要网络数据的组件还要考虑: ```text Loading Error Empty Loaded ``` --- # 第一百章 组件复用红线 以下业务不能自行重新造组件: - 用户卡片 - 推荐卡片 - 活动卡片 - 状态标签 - 空状态 - 弹窗 - Toast - 审核状态 - 风险状态 - 表格 - 筛选栏 --- # 第一百零一章 组件文案原则 组件内部不要写死业务文案。 例如: 错误: ```text Button组件内部默认文案:立即报名 ``` 正确: ```text Button接受children/text参数 ``` 业务文案由页面传入。 --- # 第一百零二章 无障碍规范 Button: > 必须有文字或accessible label。 纯图标: > 必须提供说明。 颜色状态: > 必须同时有文字。 例如: 不能只有红色点。 应该: > 高风险 --- # 第一百零三章 点击热区 移动端交互元素最小: ```text 44×44px ``` 文字“编辑”也应通过padding扩大可点击区域。 --- # 第一百零四章 用户端视觉密度 原则: > 中低密度。 不追求一屏展示尽可能多数据。 尤其: - 首页 - 详情 - 活动 - 红娘服务 都要有足够留白。 --- # 第一百零五章 后台视觉密度 原则: > 中等密度。 可以比用户端紧凑,但避免传统ERP式高密度。 --- # 第一百零六章 头像审核状态显示 如果用户资料处于: > 审核中 主头像仍然可以给本人看。 但在其他用户侧: > 未审核用户不能进入正常推荐池。 因此不需要设计“别人看到审核中头像”的场景。 --- # 第一百零七章 敏感字段组件 后台建议: ```text SensitiveField ``` 默认: ```text 320***********1234 ``` 具备权限者点击: > 查看完整信息 系统记录访问日志。 --- # 第一百零八章 MobileStickyAction组件 用于: - 用户详情喜欢 - 活动报名 - 表单提交 固定底部。 必须: - 避开TabBar - 避开safe area - 有白色背景 - 顶部轻分割线 --- # 第一百零九章 StepProgress组件 用于首次资料填写。 示例: ```text 完善资料 2/5 ██████░░░░ ``` 不需要复杂Step图标。 --- # 第一百一十章 PageHeader组件 用户端简单: ```text 标题 可选说明 ``` 后台: ```text 页面标题 说明 主要操作 ``` 例如: ```text 活动管理 + 创建活动 管理公益婚恋线下活动 ``` --- # 第一百一十一章 Alert组件 后台使用。 例如: > 修改匹配权重会影响后续推荐,请谨慎操作。 Variant: ```text info warning danger ``` --- # 第一百一十二章 Drawer组件 后台可用于: - 快速查看用户 - 快速查看报名详情 不用于复杂审核。 复杂审核进入完整页面。 --- # 第一百一十三章 Tooltip组件 后台可以使用。 用户小程序: > 尽量不用Tooltip。 移动端不适合依赖Hover。 --- # 第一百一十四章 Breadcrumb规范 后台页面层级较深时使用。 例如: ```text 活动管理 / 丹阳青年公益相亲会 / 报名管理 ``` 小程序不需要。 --- # 第一百一十五章 NotificationBadge组件 Tab消息: ```text 1~99 99+ ``` 系统通知: 可以只显示红点。 --- # 第一百一十六章 上传进度 照片上传必须有: ```text 上传中 失败 成功 ``` 上传失败: 显示: > 重新上传。 不要让失败图片直接消失。 --- # 第一百一十七章 网络请求反馈 提交类操作: Button Loading。 列表刷新: Skeleton/局部Loading。 不使用: > 点击后整个页面遮罩5秒。 --- # 第一百一十八章 防重复提交 以下操作必须前端防重复: - 实名提交 - 资料提交审核 - 喜欢 - 活动报名 - 红娘申请 - 举报 - 反馈提交 同时后端也要保证幂等。 --- # 第一百一十九章 组件测试重点 每个组件必须验证: - 普通状态 - 超长文字 - 无图片 - 弱网 - 禁用 - 加载 - 错误 - 不同屏幕宽度 --- # 第一百二十章 首批必须完成的组件 P0组件: ```text Button Input Textarea Picker RadioGroup TagSelect Switch RangeSlider ProgressBar StatusBadge UserCard RecommendCard RecommendReason ProfileSection InfoRow PhotoUploader Toast Dialog BottomSheet NoticeBar EmptyState ErrorState Skeleton BottomTabBar Navbar MobileStickyAction ``` --- # 第一百二十一章 第二批组件 P1: ```text ActivityCard MatchSuccess ChatListItem ChatBubble RiskNotice PhotoGrid StepProgress NotificationBadge ``` --- # 第一百二十二章 后台首批组件 ```text AdminSidebar AdminHeader PageHeader StatCard FilterBar DataTable TableRowAction StatusBadge ReviewStatus RiskLevelTag FormSection Dialog Drawer Pagination Alert SensitiveField ``` --- # 第一百二十三章 组件验收标准 任何通用组件完成后必须回答: ### 能否在两个以上页面复用? 不能: 可能不应该进入公共组件库。 ### 是否存在写死业务字段? 有: 需要重新抽象。 ### 状态是否完整? 至少: > 默认、加载、禁用、错误。 ### 是否符合Token? 不能出现无规范颜色和间距。 --- # 第一百二十四章 Design Token验收标准 项目最终应达到: > 修改一次主色,整个平台同步变化。 > 修改一次卡片圆角,所有卡片同步变化。 > 修改一次页面间距,所有标准页面遵循。 > 不需要人工逐页面搜索CSS修改。 --- # 第一百二十五章 最终开发原则 前端开发必须遵循: > 页面由组件组成。 > 组件由Token控制。 > Token统一视觉。 > 业务逻辑不直接侵入基础组件。 最终目标不是做一套“漂亮页面”,而是建立一套: > **可复用、可维护、可扩展、后期新增页面不容易跑偏的前端设计系统。** V1.0所有页面都应尽可能从本规范中的组件组合产生,而不是每个页面重新设计一遍。