Files
steel_prices_service/Sale/TREND_PAGE_GUIDE.md
2026-01-06 18:00:43 +08:00

5.6 KiB
Raw Permalink Blame History

价格趋势 Tab 页 - 使用指南

📊 功能概述

新增了价格趋势 Tab 页,提供钢材价格走势的可视化分析功能。

主要功能

  1. 折线图展示

    • 自定义绘制的轻量级折线图
    • 支持平滑曲线和区域填充
    • 响应式设计,自动适配屏幕
  2. 多维度筛选

    • 地区选择(支持"全部地区"
    • 材质选择(支持"全部材质"
    • 时间范围选择7天/15天/30天/60天/90天
  3. 统计数据

    • 起始价格
    • 最新价格
    • 价格变动(涨跌幅)
    • 颜色标识:红色上涨,绿色下跌

🎨 界面设计

筛选条件区域

  • 与首页一致的卡片式设计
  • 清晰的表单布局
  • 快捷的查询和重置按钮

图表展示区域

  • 图表卡片500rpx 高度的折线图
  • 统计摘要3 列数据展示
  • 渐变填充:蓝色半透明区域填充
  • 数据点标记:每个数据点都有圆形标记

状态展示

  • 初始提示:引导用户进行查询
  • 加载状态:显示加载提示
  • 空状态:无数据时的友好提示

📂 文件结构

Sale/
├── pages/
│   ├── index/           # 价格查询页
│   │   ├── index.js
│   │   ├── index.wxml
│   │   ├── index.wxss
│   │   └── index.json
│   └── trend/           # 价格趋势页(新增)
│       ├── trend.js     # 页面逻辑
│       ├── trend.wxml   # 页面结构
│       ├── trend.wxss   # 页面样式
│       └── trend.json   # 页面配置
├── components/
│   └── ec-canvas/       # 图表组件(新增)
│       ├── ec-canvas.js
│       ├── ec-canvas.json
│       ├── ec-canvas.wxml
│       ├── ec-canvas.wxss
│       ├── echarts.js   # 简化版 ECharts
│       └── wx-canvas.js # Canvas 适配器
├── images/
│   └── README.md        # 图标说明
└── app.json             # 添加了 tabBar 配置

🔧 技术实现

图表绘制

  • Canvas 2D API:使用微信小程序 Canvas 2D 接口
  • 自定义绘制:无需依赖第三方图表库
  • 性能优化:轻量级实现,渲染流畅

数据处理

// API 调用
api.getPriceTrend({
  region: '昆明',    // 可选
  material: 'HPB300', // 可选
  days: 30
})

// 返回数据格式
[
  { date: '2026-01-01', avgPrice: 3850 },
  { date: '2026-01-02', avgPrice: 3860 },
  ...
]

图表特性

  • X 轴:日期标签(斜向显示)
  • Y 轴:价格刻度(带 ¥ 符号)
  • 网格线:水平参考线
  • 区域填充:渐变色背景
  • 数据点:圆形标记点
  • 平滑曲线:贝塞尔曲线

🎯 使用方法

1. 切换到价格趋势页

点击底部 TabBar 的"价格趋势"按钮

2. 设置筛选条件(可选)

  • 选择地区:默认"全部地区"
  • 选择材质:默认"全部材质"
  • 选择时间范围:默认"最近 30 天"

3. 查询趋势

点击"查询趋势"按钮,等待数据加载

4. 查看图表

  • 折线图:查看价格走势
  • 统计卡片:查看价格变动情况
  • 起始价格:时间段首日的平均价格
  • 最新价格:时间段末日的平均价格
  • 价格变动:最新价 - 起始价

5. 重新查询

  • 点击"重置"清空当前图表
  • 修改筛选条件后再次查询

📊 数据统计

示例数据

起始价格¥3850
最新价格¥3900
价格变动:+50

颜色含义

  • 🔴 红色+50价格上涨
  • 🟢 绿色-50价格下跌

⚙️ 配置说明

修改时间范围选项

编辑 pages/trend/trend.js 中的 dayRanges 数组:

dayRanges: [
  { label: '最近 7 天', value: 7 },
  { label: '最近 15 天', value: 15 },
  { label: '最近 30 天', value: 30 },
  { label: '最近 60 天', value: 60 },
  { label: '最近 90 天', value: 90 }
]

修改图表样式

编辑 components/ec-canvas/echarts.js 中的绘制方法:

// 修改线条颜色
ctx.strokeStyle = '#1890ff'

// 修改线条宽度
ctx.lineWidth = 3

// 修改区域填充渐变色
gradient.addColorStop(0, 'rgba(24, 144, 255, 0.3)')
gradient.addColorStop(1, 'rgba(24, 144, 255, 0.05)')

🚀 后续优化建议

功能增强

  1. K 线图:添加开盘价、收盘价、最高价、最低价
  2. 多条折线:同时对比多个地区或材质
  3. 数据表格:提供详细的数据列表
  4. 导出功能:导出图表或数据为 Excel

交互优化

  1. 缩放功能:支持手势缩放查看细节
  2. 十字准星:点击显示具体数值
  3. Tooltip:悬浮显示详细信息
  4. 标记点:标记最高价、最低价

性能优化

  1. 虚拟滚动:大量数据时的性能优化
  2. 数据缓存:减少重复请求
  3. 图表懒加载:进入页面才加载

📝 注意事项

  1. API 限制

    • 确保 /api/prices/trend 接口正常工作
    • 检查返回数据格式是否正确
  2. Canvas 兼容性

    • 使用 Canvas 2D 接口(需基础库 2.9.0+
    • 如需兼容旧版本,使用旧版 Canvas 接口
  3. 图标文件

    • 当前使用文字 TabBar
    • 添加图标需要准备 PNG 文件81×81px
    • 参考 images/README.md 获取图标

完成状态

  • TabBar 配置
  • 趋势页面创建
  • 筛选条件表单
  • 折线图绘制
  • 统计数据展示
  • 状态处理(加载/空/错误)
  • 样式优化

开发完成时间2026-01-06 状态 可用,建议测试后上线