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

271 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 功能更新日志 - 添加品名筛选
## 📋 更新内容
### 新增功能
**品名筛选条件** - 在价格查询页面添加了品名partsname_name筛选选项
### 更新时间
2026-01-06
---
## 🎯 功能详情
### 品名筛选选项
新增的品名选择器包含以下选项:
- 全部(默认)
- 高线
- 螺纹钢
- 盘螺
- 工字钢
- 槽钢
- 角钢
- H型钢
- 钢板
- 卷板
- 中厚板
### 查询逻辑优化
#### 1. 必填/可选条件调整
- **必填**:地区
- **可选**:材质、品名、日期
#### 2. 查询参数构建
```javascript
{
region: '昆明', // 必填
material: 'HPB300', // 可选
partsname: '高线', // 可选(新增)
startDate: '2026-01-01', // 可选
endDate: '2026-01-05', // 可选
pageSize: 100
}
```
#### 3. API 调用
统一使用 `searchPrices` API支持多条件组合查询。
---
## 📂 修改的文件
### 1. [pages/index/index.js](pages/index/index.js)
**新增数据:**
```javascript
// 品名选项
partsnames: [
'全部', '高线', '螺纹钢', '盘螺', '工字钢', '槽钢',
'角钢', 'H型钢', '钢板', '卷板', '中厚板'
],
// 选中的品名索引
selectedPartsnameIndex: 0,
```
**新增方法:**
```javascript
onPartsnameChange(e) {
const index = parseInt(e.detail.value)
this.setData({
selectedPartsnameIndex: index
})
}
```
**更新的方法:**
- `onSearch()` - 添加品名参数处理
- `onReset()` - 添加品名重置
### 2. [pages/index/index.wxml](pages/index/index.wxml)
**新增UI**
```xml
<!-- 品名选择 -->
<view class="form-item">
<view class="form-label">品名</view>
<picker
class="form-picker"
mode="selector"
range="{{partsnames}}"
value="{{selectedPartsnameIndex}}"
bindchange="onPartsnameChange">
<view class="picker-text">
{{partsnames[selectedPartsnameIndex]}}
</view>
</picker>
</view>
```
**优化:**
- 材质选择器改为可选(显示"请选择材质 (可选)"
- 添加品名选择器,默认"全部"
---
## 🔧 技术实现
### 参数验证逻辑
```javascript
// 地区必填
if (selectedRegionIndex === -1) {
api.showError('请选择地区')
return
}
// 材质可选
const material = selectedMaterialIndex === -1
? ''
: materials[selectedMaterialIndex]
// 品名可选0 表示"全部"
const partsname = selectedPartsnameIndex === 0
? ''
: partsnames[selectedPartsnameIndex]
```
### API 调用示例
#### 示例 1只筛选地区
```javascript
{ region: '昆明', pageSize: 100 }
```
#### 示例 2筛选地区 + 品名
```javascript
{
region: '昆明',
partsname: '高线',
pageSize: 100
}
```
#### 示例 3筛选地区 + 材质 + 品名 + 日期
```javascript
{
region: '昆明',
material: 'HPB300',
partsname: '高线',
startDate: '2026-01-01',
endDate: '2026-01-05',
pageSize: 100
}
```
---
## 📊 数据字段映射
### API 返回字段
```javascript
{
partsname_name: '高线', // 品名字段
goods_material: 'HPB300', // 材质字段
price_region: '昆明', // 地区字段
// ... 其他字段
}
```
### 查询参数字段
```javascript
{
partsname: '高线', // 品名筛选参数
material: 'HPB300', // 材质筛选参数
region: '昆明' // 地区筛选参数
}
```
---
## ✨ 用户体验优化
### 1. 灵活的筛选组合
- 支持单独按地区查询
- 支持地区 + 品名组合查询
- 支持地区 + 材质 + 品名全条件查询
### 2. 默认值设置
- 品名默认"全部"(索引 0
- 材质默认不选(索引 -1
- 日期默认不选
### 3. 表单提示
- 必填项:地区
- 可选项:材质(标注"可选"
- 可选项:品名(默认"全部"
- 可选项:日期(标注"可选"
---
## 🚀 使用方法
### 场景 1查询某地区所有高线价格
1. 地区:选择"昆明"
2. 材质:不选
3. 品名:选择"高线"
4. 点击"查询价格"
### 场景 2查询某地区特定材质的高线价格
1. 地区:选择"昆明"
2. 材质:选择"HPB300"
3. 品名:选择"高线"
4. 点击"查询价格"
### 场景 3查询某地区所有产品
1. 地区:选择"昆明"
2. 材质:不选
3. 品名:保持"全部"
4. 点击"查询价格"
---
## 🐛 已知问题
### API 字段不一致
- 数据返回字段:`partsname_name`
- 查询参数字段:`partsname`
**解决方案:**
- 后端 API 应同时支持两种字段名
- 前端查询时使用 `partsname`
- 如果 API 不支持,需后端添加支持
---
## 📝 后续优化建议
1. **动态品名列表**
- 从 API 获取可用的品名列表
- 根据地区动态显示不同品名
2. **级联选择**
- 品名和材质的级联关系
- 选择品名后自动过滤相关材质
3. **搜索历史**
- 保存用户常用的筛选组合
- 快速应用历史筛选条件
4. **批量查询**
- 支持同时查询多个品名
- 对比不同品名的价格走势
---
## ✅ 测试检查清单
- [x] 品名选择器显示正常
- [x] 默认选中"全部"
- [x] 选择品名后查询参数正确
- [x] 查询结果正确过滤
- [x] 重置按钮恢复默认值
- [x] 材质改为可选
- [x] 表单验证逻辑正确
---
**更新完成!** 🎉