189 lines
4.2 KiB
Markdown
189 lines
4.2 KiB
Markdown
[根目录](../../CLAUDE.md) > [pages](../) > **index**
|
||
|
||
---
|
||
|
||
# pages/index - 主页模块
|
||
|
||
> 最后更新:2026-01-06 15:26:54
|
||
|
||
---
|
||
|
||
## 变更记录 (Changelog)
|
||
|
||
### 2026-01-06
|
||
- 初始化模块文档
|
||
- 识别为用户信息展示模板页面,需改造为价格查询功能
|
||
|
||
---
|
||
|
||
## 模块职责
|
||
|
||
当前状态:**微信小程序模板主页**,展示用户头像与昵称信息。
|
||
|
||
**目标职责**(需实现):
|
||
- 作为钢材价格查询的入口页面
|
||
- 提供搜索条件选择(地区、材质、规格、日期)
|
||
- 展示价格查询结果列表
|
||
- 跳转到价格趋势详情页面
|
||
|
||
---
|
||
|
||
## 入口与启动
|
||
|
||
### 页面路径
|
||
- **注册路径**:`pages/index/index`(在 `app.json` 中注册)
|
||
- **物理路径**:`pages/index/index.js`
|
||
- **访问方式**:小程序启动时的首页
|
||
|
||
### 生命周期
|
||
```javascript
|
||
Page({
|
||
onLoad() { }, // 页面加载
|
||
onReady() { }, // 页面初次渲染完成
|
||
onShow() { } // 页面显示
|
||
})
|
||
```
|
||
|
||
---
|
||
|
||
## 对外接口
|
||
|
||
### 页面跳转接口
|
||
- **跳转到日志页**:`bindViewTap()` 方法
|
||
```javascript
|
||
wx.navigateTo({
|
||
url: '../logs/logs'
|
||
})
|
||
```
|
||
|
||
### 用户信息接口
|
||
- **获取用户头像**:`onChooseAvatar(e)`
|
||
- **输入昵称**:`onInputChange(e)`
|
||
- **获取用户资料**:`getUserProfile(e)`(已废弃,推荐使用 `chooseAvatar`)
|
||
|
||
---
|
||
|
||
## 关键依赖与配置
|
||
|
||
### 依赖文件
|
||
| 文件 | 用途 |
|
||
|------|------|
|
||
| `index.js` | 页面逻辑 |
|
||
| `index.wxml` | 页面结构 |
|
||
| `index.wxss` | 页面样式 |
|
||
| `index.json` | 页面配置(当前为空) |
|
||
|
||
### 外部依赖
|
||
- 微信小程序基础库 2.10.4+
|
||
- 无外部 npm 包依赖
|
||
|
||
### 配置文件
|
||
```json
|
||
// index.json(当前为空对象)
|
||
{}
|
||
```
|
||
|
||
---
|
||
|
||
## 数据模型
|
||
|
||
### 当前数据结构
|
||
```javascript
|
||
data: {
|
||
motto: 'Hello World',
|
||
userInfo: {
|
||
avatarUrl: 'https://mmbiz.qpic.cn/...',
|
||
nickName: ''
|
||
},
|
||
hasUserInfo: false,
|
||
canIUseGetUserProfile: wx.canIUse('getUserProfile'),
|
||
canIUseNicknameComp: wx.canIUse('input.type.nickname')
|
||
}
|
||
```
|
||
|
||
### 建议的数据结构(改造后)
|
||
```javascript
|
||
data: {
|
||
regions: ['昆明', '玉溪', '大理', '楚雄'], // 地区列表
|
||
materials: ['HPB300', 'HRB400', 'HRB500E'], // 材质列表
|
||
selectedRegion: '', // 选中的地区
|
||
selectedMaterial: '', // 选中的材质
|
||
selectedDate: '', // 选中的日期
|
||
priceList: [], // 查询结果
|
||
loading: false, // 加载状态
|
||
errorMessage: '' // 错误信息
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 测试与质量
|
||
|
||
### 测试覆盖
|
||
- **手动测试**:可在微信开发者工具中测试用户头像/昵称功能
|
||
- **单元测试**:暂无
|
||
- **快照测试**:暂无
|
||
|
||
### 已知问题
|
||
1. 当前页面为模板代码,未实现实际业务功能
|
||
2. 缺少价格查询相关逻辑
|
||
3. 缺少 API 调用封装
|
||
|
||
---
|
||
|
||
## 常见问题 (FAQ)
|
||
|
||
### Q: 如何改造为价格查询页面?
|
||
A: 建议步骤:
|
||
1. 删除用户信息相关代码
|
||
2. 添加搜索表单(地区、材质、日期选择器)
|
||
3. 实现查询按钮点击事件
|
||
4. 调用 `/api/prices/search` 接口
|
||
5. 展示查询结果列表
|
||
|
||
### Q: 如何调用后端 API?
|
||
A: 使用 `wx.request()`,参考示例:
|
||
```javascript
|
||
wx.request({
|
||
url: 'http://localhost:3000/api/prices/search',
|
||
data: {
|
||
region: this.data.selectedRegion,
|
||
material: this.data.selectedMaterial,
|
||
date: this.data.selectedDate
|
||
},
|
||
success: (res) => {
|
||
this.setData({
|
||
priceList: res.data.data
|
||
})
|
||
}
|
||
})
|
||
```
|
||
|
||
---
|
||
|
||
## 相关文件清单
|
||
|
||
```
|
||
pages/index/
|
||
├── index.js # 页面逻辑(50 行)
|
||
├── index.wxml # 页面结构(28 行)
|
||
├── index.wxss # 页面样式
|
||
├── index.json # 页面配置
|
||
└── CLAUDE.md # 本文档
|
||
```
|
||
|
||
---
|
||
|
||
## 下一步建议
|
||
|
||
1. **重构 UI**:设计简洁的价格查询界面
|
||
2. **封装 API**:在 `utils` 中创建 `api.js` 封装请求方法
|
||
3. **添加图表**:集成 ECharts 或使用 Canvas 绘制价格趋势图
|
||
4. **优化体验**:添加加载动画、空状态提示、错误处理
|
||
|
||
---
|
||
|
||
**模块状态**:待开发
|
||
**优先级**:高
|
||
**预估工作量**:4-6 小时
|