# 数据分析页面 UI 设计文档 ## 📋 文档说明 本文档记录了**数据分析中心页面**的 UI 设计实现,遵循项目的 UI 设计规范,采用现代简约的设计风格,提供清晰直观的数据可视化界面。 ### 页面访问 URL #### 主页面路径 - **完整路径**:`/pages/mall/analytics/index` - **页面标题**:数据分析中心 - **导航栏样式**:自定义导航栏(`navigationStyle: "custom"`) - **路由配置位置**:`subPackages` → `pages/mall/analytics` → `index` #### 相关子页面 URL - **销售报表**:`/pages/mall/analytics/sales-report` - **用户分析**:`/pages/mall/analytics/user-analysis` - **商品洞察**:`/pages/mall/analytics/product-insights` - **市场趋势**:`/pages/mall/analytics/market-trends` - **自定义报表**:`/pages/mall/analytics/custom-report` - **报表详情**:`/pages/mall/analytics/report-detail` - **数据分析详情**:`/pages/mall/analytics/data-detail` - **数据洞察详情**:`/pages/mall/analytics/insight-detail` ### 访问方式 #### 1. 代码中跳转(uni-app x) ```typescript // 方式一:使用 navigateTo(推荐,保留返回栈) uni.navigateTo({ url: '/pages/mall/analytics/index' }) // 方式二:使用 redirectTo(替换当前页面,不保留返回栈) uni.redirectTo({ url: '/pages/mall/analytics/index' }) // 方式三:使用 reLaunch(关闭所有页面,打开新页面) uni.reLaunch({ url: '/pages/mall/analytics/index' }) ``` #### 2. 从其他页面跳转示例 ```typescript // 从管理后台跳转到数据分析中心 const goToAnalytics = () => { uni.navigateTo({ url: '/pages/mall/analytics/index' }) } // 从首页跳转到数据分析中心 const goToDataAnalysis = () => { uni.navigateTo({ url: '/pages/mall/analytics/index', success: () => { console.log('跳转成功') }, fail: (err) => { console.error('跳转失败:', err) } }) } ``` #### 3. 带参数跳转 ```typescript // 跳转并传递参数 uni.navigateTo({ url: '/pages/mall/analytics/index?period=30d&refresh=true' }) // 在目标页面接收参数(index.uvue 的 onLoad) onLoad(options: any) { const period = options.period || '30d' const refresh = options.refresh === 'true' if (period) { this.period = period } if (refresh) { this.refreshData() } } ``` #### 4. 页面间跳转 ```typescript // 从数据分析首页跳转到销售报表 const goToSalesReport = () => { uni.navigateTo({ url: '/pages/mall/analytics/sales-report' }) } // 从数据分析首页跳转到用户分析 const goToUserAnalysis = () => { uni.navigateTo({ url: '/pages/mall/analytics/user-analysis' }) } ``` #### 5. 权限控制示例 ```typescript // 跳转前检查权限 const goToAnalyticsWithAuth = () => { // 检查用户是否有数据分析权限 const userType = getUserType() // 假设这是获取用户类型的函数 if (userType === 'admin' || userType === 'analyst') { uni.navigateTo({ url: '/pages/mall/analytics/index' }) } else { uni.showToast({ title: '您没有访问权限', icon: 'none' }) } } ``` #### 6. 在页面配置中设置入口 如果需要在 TabBar 或其他导航中添加入口,可以在 `pages.json` 中配置: ```json { "tabBar": { "list": [ { "pagePath": "pages/mall/analytics/index", "text": "数据分析" } ] } } ``` ### 设计原则 1. **数据优先**:突出核心数据指标,减少视觉干扰 2. **层次清晰**:通过卡片、阴影、间距建立清晰的信息层次 3. **视觉统一**:遵循项目统一的颜色系统和设计规范 4. **响应式适配**:适配不同屏幕尺寸,确保良好的用户体验 --- ## 一、页面结构 ### 1.1 整体布局 ``` ┌─────────────────────────────────────┐ │ Header(头部控制面板) │ │ - 标题 + 最后更新时间 │ │ - 刷新/导出按钮 │ ├─────────────────────────────────────┤ │ 实时大屏(4个核心指标卡片) │ │ - GMV / 订单 / 用户 / 转化率 │ ├─────────────────────────────────────┤ │ 时间筛选(Tab切换) │ │ - 今日/本周/本月/本季度 │ ├─────────────────────────────────────┤ │ 销售分析 │ │ - 销售趋势图 │ │ - 商品销量排行 │ ├─────────────────────────────────────┤ │ 用户行为分析 │ │ - 用户活跃度 │ │ - 流量来源 │ ├─────────────────────────────────────┤ │ 商家表现 │ │ - 商家排行榜 │ ├─────────────────────────────────────┤ │ 配送效率 │ │ - 配送时效 │ │ - 配送覆盖 │ ├─────────────────────────────────────┤ │ 快速分析工具(6个工具卡片) │ │ - 销售报表/用户分析/商品洞察等 │ └─────────────────────────────────────┘ ``` ### 1.2 模块划分 1. **Header 区域**:页面标题、更新时间、操作按钮 2. **实时大屏**:核心业务指标(GMV、订单、用户、转化率) 3. **时间筛选**:时间维度切换(今日/本周/本月/本季度) 4. **销售分析**:销售趋势、商品排行 5. **用户行为分析**:用户活跃度、流量来源 6. **商家表现**:商家销售排行榜 7. **配送效率**:配送时效、覆盖情况 8. **快速工具**:常用分析工具入口 --- ## 二、设计规范应用 ### 2.1 CSS 变量系统 所有设计 token 通过 CSS 变量定义,便于统一管理和换肤: ```css :root { /* 主题色 */ --theme-primary: #FF4D4F; --theme-primary-light: #FF7875; --theme-primary-dark: #CF1322; --gradient-start: #FF4D4F; --gradient-end: #FF7A45; /* 功能色 */ --success: #52C41A; --warning: #FAAD14; --error: #FF4D4F; --info: #1890FF; /* 文字颜色 */ --text-primary: #111111; --text-secondary: #333333; --text-tertiary: #666666; --text-disabled: #999999; /* 背景颜色 */ --bg-primary: #FFFFFF; --bg-secondary: #F7F8FA; --bg-tertiary: #F5F5F5; /* 边框 */ --border-color: rgba(0, 0, 0, 0.06); /* 阴影 */ --shadow-sm: 0 2rpx 8rpx rgba(0, 0, 0, 0.06); --shadow-md: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); /* 圆角 */ --radius-md: 12rpx; --radius-lg: 20rpx; --radius-xl: 24rpx; /* 间距 */ --spacing-sm: 16rpx; --spacing-md: 24rpx; --spacing-lg: 32rpx; } ``` ### 2.2 卡片式设计 所有数据模块采用卡片式设计: - **圆角**:`border-radius: 20rpx`(符合 UI 规范) - **阴影**:`box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.06)`(轻微阴影) - **背景**:白色背景 `#FFFFFF` - **内边距**:`32rpx`(统一间距) - **外边距**:`24rpx`(卡片间距) ### 2.3 颜色系统应用 #### Header 渐变背景 ```css background: linear-gradient(135deg, #FF4D4F 0%, #FF7A45 100%); ``` #### 实时指标卡片渐变 - **GMV(收入)**:`#FF6B6B → #FF4D4F`(红色渐变) - **订单**:`#4ECDC4 → #44A08D`(青色渐变) - **用户**:`#A8E6CF → #7FCDBB`(绿色渐变) - **转化率**:`#FFD93D → #FFA07A`(黄色渐变) #### 状态颜色 - **增长(正)**:绿色 `#52C41A` + 浅绿背景 - **下降(负)**:红色 `#FF4D4F` + 浅红背景 - **中性**:灰色 `#666666` + 浅灰背景 --- ## 三、组件设计详解 ### 3.1 Header 头部 **设计特点**: - 使用主题色渐变背景 - 左侧显示标题和更新时间 - 右侧操作按钮使用毛玻璃效果 **实现代码**: ```css .header { background: linear-gradient(135deg, var(--gradient-start) 0%, var(--gradient-end) 100%); padding: var(--spacing-lg) var(--spacing-md) var(--spacing-md); box-shadow: var(--shadow-md); } .refresh-btn, .export-btn { width: 64rpx; height: 64rpx; background: rgba(255, 255, 255, 0.2); border-radius: 50%; backdrop-filter: blur(10rpx); } ``` ### 3.2 实时大屏卡片 **设计特点**: - 2x2 网格布局 - 每个卡片使用不同渐变背景 - 数值突出显示,增长指标使用标签样式 **布局**: ```css .dashboard-grid { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--spacing-md); } .dashboard-card { width: calc(50% - var(--spacing-md) / 2); padding: var(--spacing-lg) var(--spacing-md); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); } ``` ### 3.3 时间筛选 Tab **设计特点**: - 激活状态使用主题色渐变 - 添加阴影效果增强层次 - 平滑过渡动画 **实现**: ```css .filter-tab.active { background: linear-gradient(135deg, var(--gradient-start) 0%, var(--gradient-end) 100%); color: #fff; font-weight: 500; box-shadow: 0 2rpx 8rpx rgba(255, 77, 79, 0.3); } ``` ### 3.4 销售分析卡片 **设计特点**: - 图表区域使用浅色背景区分 - 统计项使用独立卡片样式 - 数值使用主题色突出 **布局**: ```css .trend-stats { display: flex; justify-content: space-around; gap: var(--spacing-md); } .stat-item { flex: 1; padding: var(--spacing-md); background: var(--bg-secondary); border-radius: var(--radius-md); } ``` ### 3.5 商品排行 **设计特点**: - 排名使用圆形徽章,使用主题色渐变 - 商品名称和销量清晰对比 - 统一的分割线 **实现**: ```css .rank-number { width: 56rpx; height: 56rpx; background: linear-gradient(135deg, var(--gradient-start) 0%, var(--gradient-end) 100%); border-radius: 50%; box-shadow: var(--shadow-sm); } ``` ### 3.6 用户行为分析 **设计特点**: - 指标使用列表式展示 - 流量来源使用进度条可视化 - 进度条使用主题色渐变 **进度条实现**: ```css .progress-bar { height: 100%; background: linear-gradient(135deg, var(--gradient-start) 0%, var(--gradient-end) 100%); border-radius: 12rpx; transition: width 0.3s ease; } ``` ### 3.7 商家排行榜 **设计特点**: - 排名徽章使用金银铜渐变 - 增长率使用彩色标签 - 商家信息清晰展示 **排名徽章**: ```css .rank-gold { background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%); } .rank-silver { background: linear-gradient(135deg, #C0C0C0 0%, #A0A0A0 100%); } .rank-bronze { background: linear-gradient(135deg, #CD7F32 0%, #B8860B 100%); } ``` ### 3.8 快速工具卡片 **设计特点**: - 3 列网格布局 - 点击反馈效果 - 图标 + 标题 + 描述 **交互效果**: ```css .tool-card:active { transform: scale(0.98); box-shadow: var(--shadow-md); } ``` --- ## 四、响应式设计 ### 4.1 断点设置 - **默认**:>= 768rpx(双列布局) - **小屏**:< 768rpx(单列布局) ### 4.2 响应式规则 ```css @media screen and (max-width: 768rpx) { /* 实时大屏卡片改为单列 */ .dashboard-card { width: 100%; } /* 工具卡片改为 2 列 */ .tool-card { width: calc(50% - var(--spacing-md) / 2); } /* 配送分析改为纵向布局 */ .delivery-metrics { flex-direction: column; } } ``` ### 4.3 适配策略 1. **实时大屏**:小屏下改为单列,保持卡片完整性 2. **工具卡片**:小屏下改为 2 列,提升空间利用率 3. **配送分析**:小屏下改为纵向堆叠,避免内容挤压 --- ## 五、交互设计 ### 5.1 操作反馈 - **按钮点击**:缩放效果 `transform: scale(0.98)` - **Tab 切换**:平滑过渡动画 `transition: all 0.3s` - **进度条**:宽度变化动画 `transition: width 0.3s ease` ### 5.2 数据刷新 - **刷新按钮**:点击后显示加载状态 - **数据更新**:更新时间实时显示 - **错误处理**:友好的错误提示 ### 5.3 导出功能 - **导出选项**:Excel / PDF / 图片 - **加载提示**:导出过程中显示加载动画 - **成功反馈**:导出成功后 Toast 提示 --- ## 六、数据可视化 ### 6.1 图表占位 当前使用占位符,后续可集成图表库: - **销售趋势图**:折线图或面积图 - **商品销量排行**:柱状图或条形图 - **流量来源**:饼图或环形图 ### 6.2 推荐图表库 - **uni-app x 兼容**:需使用原生图表组件 - **Web 端**:可使用 ECharts、Chart.js 等 - **移动端**:可使用 uni-charts 或自定义 Canvas 绘制 --- ## 七、性能优化 ### 7.1 数据加载 - **分步加载**:先加载核心指标,再加载详细数据 - **缓存策略**:合理使用数据缓存,减少重复请求 - **防抖处理**:刷新操作添加防抖,避免频繁请求 ### 7.2 渲染优化 - **虚拟列表**:长列表使用虚拟滚动 - **懒加载**:非首屏内容延迟加载 - **图片优化**:使用合适的图片格式和尺寸 --- ## 八、后续优化建议 ### 8.1 功能增强 1. **实时数据推送**:使用 WebSocket 实现数据实时更新 2. **数据钻取**:点击指标可查看详细数据 3. **自定义看板**:允许用户自定义指标和布局 4. **数据对比**:支持多时间段数据对比 5. **导出增强**:支持自定义导出字段和格式 ### 8.2 UI 优化 1. **图表集成**:集成专业图表库,替换占位符 2. **动画效果**:添加数据变化动画,提升视觉体验 3. **暗色模式**:支持暗色主题切换 4. **国际化**:支持多语言切换 ### 8.3 交互优化 1. **下拉刷新**:支持下拉刷新数据 2. **上拉加载**:长列表支持上拉加载更多 3. **手势操作**:支持滑动切换时间维度 4. **快捷操作**:添加常用操作的快捷入口 --- ## 九、技术实现 ### 9.1 文件结构 ``` pages/mall/analytics/ ├── index.uvue # 数据分析首页 ├── profile.uvue # 数据分析个人中心 └── report-detail.uvue # 报表详情页 ``` ### 9.2 核心代码结构 ```vue ``` ### 9.3 数据接口 当前使用 Supabase 查询数据,主要涉及: - `orders` 表:订单数据 - `users` 表:用户数据 - `user_sessions` 表:用户会话数据(如果存在) --- ## 十、设计规范遵循 ### 10.1 颜色系统 ✅ - ✅ 使用主题色 `#FF4D4F` 作为主色调 - ✅ 使用渐变色增强视觉效果 - ✅ 使用功能色表示状态(成功/警告/错误) ### 10.2 间距系统 ✅ - ✅ 使用统一的间距变量(`--spacing-sm/md/lg`) - ✅ 卡片间距统一为 `24rpx` - ✅ 内容内边距统一为 `32rpx` ### 10.3 圆角系统 ✅ - ✅ 卡片圆角统一为 `20rpx` - ✅ 小元素圆角为 `12rpx` - ✅ 圆形元素使用 `50%` ### 10.4 阴影系统 ✅ - ✅ 卡片使用轻微阴影 `0 2rpx 8rpx rgba(0, 0, 0, 0.06)` - ✅ 激活状态使用增强阴影 - ✅ 按钮使用阴影增强层次 --- ## 十一、总结 数据分析页面 UI 设计完全遵循项目的 UI 设计规范,实现了: 1. ✅ **统一的视觉风格**:使用项目统一的颜色系统和设计 token 2. ✅ **清晰的信息层次**:通过卡片、阴影、间距建立清晰层次 3. ✅ **良好的用户体验**:响应式设计、交互反馈、数据可视化 4. ✅ **可维护的代码**:CSS 变量系统、模块化设计、清晰的代码结构 页面已实现核心功能,后续可根据实际需求进行功能增强和 UI 优化。 --- **文档版本**: v1.0 **创建时间**: 2025-01-XX **最后更新**: 2025-01-XX **状态**: ✅ 已完成