Files
template-10560/docs/客户交易页面上拉加载功能实现说明.md
赵忠林 d770796df4 feat(dealer): 新增银行卡管理功能
- 添加银行卡管理页面和相关API
- 实现银行卡列表展示、添加、编辑和删除功能
- 优化提现页面,支持选择银行卡进行提现
- 新增 FixedButton 组件用于底部固定按钮
2025-09-06 19:37:49 +08:00

141 lines
3.8 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.

# 客户交易页面上拉加载更多功能实现说明
## 概述
`src/dealer/customer/trading.tsx` 页面添加了完善的上拉加载更多功能,参考了客户管理模块和订单管理模块的成熟实现。
## 主要修改内容
### 1. 导入必要的组件
```typescript
import Taro from '@tarojs/taro'
import {Loading, InfiniteLoading, Empty, Space, SearchBar} from '@nutui/nutui-react-taro'
```
### 2. 添加状态管理
```typescript
const [page, setPage] = useState(1)
const [hasMore, setHasMore] = useState(true)
```
### 3. 优化数据获取函数 `fetchCustomerData`
- **新增参数**
- `resetPage`: 是否重置页码(用于初始化或搜索)
- `targetPage`: 目标页码(用于加载更多)
- `searchKeyword`: 搜索关键词(支持服务端搜索)
- **改进逻辑**
- 支持重置页面和追加数据两种模式
- 正确处理页码状态
- 添加错误处理和用户提示
- 支持服务端搜索功能
### 4. 实现 `reloadMore` 函数
```typescript
const reloadMore = async () => {
if (loading || !hasMore) return; // 防止重复加载
const nextPage = page + 1;
await fetchCustomerData(false, nextPage, searchValue);
}
```
### 5. 优化搜索功能
- **服务端搜索**:将搜索逻辑从客户端过滤改为服务端搜索
- **搜索处理函数**
```typescript
const handleSearch = (keyword: string) => {
setSearchValue(keyword);
setList([]);
setPage(1);
setHasMore(true);
fetchCustomerData(true, 1, keyword);
};
```
- **清空搜索**
```typescript
const handleClearSearch = () => {
setSearchValue('');
setList([]);
setPage(1);
setHasMore(true);
fetchCustomerData(true, 1, '');
};
```
### 6. 改进UI渲染
- **InfiniteLoading组件**
- 设置合适的容器高度75vh
- 优化加载状态显示
- 改进空数据状态展示
- 添加滚动容器样式
### 7. 简化数据过滤
由于现在使用服务端搜索,简化了 `getFilteredList` 函数:
```typescript
const getFilteredList = () => {
return list; // 直接返回列表,不需要客户端过滤
};
```
## 核心功能特性
### ✅ 上拉加载更多
- 滚动到底部自动触发加载下一页数据
- 防止重复加载机制
- 正确的页码管理
### ✅ 服务端搜索
- 搜索关键词通过API参数传递给后端
- 搜索时重置列表和页码
- 支持清空搜索功能
### ✅ 错误处理
- 网络请求失败时显示错误提示
- 加载失败时不影响现有数据
### ✅ 加载状态
- 首次加载显示loading状态
- 加载更多时显示"加载中..."
- 无更多数据时显示"没有更多了"
### ✅ 空数据处理
- 无数据时显示友好的空状态提示
- 区分加载中和真正的无数据状态
## 与其他页面的区别
### 相比客户管理模块
- **搜索方式**:使用服务端搜索而非客户端过滤
- **数据类型**专门处理交易客户数据type: 3
- **无Tab切换**:简化了状态管理逻辑
### 相比订单管理模块
- **更简洁的实现**:没有复杂的状态筛选
- **专注搜索**:主要功能是搜索和分页
## API参数说明
```typescript
const params: any = {
type: 3, // 交易客户类型
page: currentPage, // 当前页码
keywords: searchKeyword // 搜索关键词(可选)
};
```
## 使用方式
1. 进入客户交易页面
2. 滚动到列表底部自动加载更多数据
3. 使用搜索框搜索特定客户
4. 点击清空按钮清除搜索条件
## 技术栈
- React + TypeScript
- Taro框架
- NutUI组件库
- InfiniteLoading组件实现上拉加载
- SearchBar组件实现搜索功能
## 注意事项
- 每页默认加载10条数据
- 当返回数据少于10条时认为没有更多数据
- 搜索功能使用服务端搜索,提高性能
- 所有状态变化都会正确重置页码和列表数据