业务
列表通用模板
小程序列表通用模板代码:首部搜索框,下方数据列表,无数据就显示暂无数据
- 如果数据全部返回,在前端搜索过滤
- 如果数据分页返回,上拉加载、下拉刷新,搜索、清空
- 顶部项目选择
1. 数据全部返回,搜索过滤由前端处理
小程序 UI 组件库:Vant Weapp
index.wxml
<van-search
value="{{ searchValue }}"
placeholder="请输入项目名称"
shape="round"
bind:search="onSearch"
bind:change="onSearch"
bind:clear="onClear"
/>
<view wx:if="{{projectList.length>0}}">
<van-cell-group>
<navigator wx:for="{{projectList}}" wx:key="id" url="/pages/project/detail?proId={{item.id}}">
<van-cell title="{{item.proName}}" label="{{item.proNo}}" />
</navigator>
</van-cell-group>
</view>
<van-empty wx:else description="暂无数据" />
index.json
{
"navigationBarTitleText": "项目管理",
"usingComponents": {
"van-search": "@vant/weapp/search/index",
"van-cell": "@vant/weapp/cell/index",
"van-cell-group": "@vant/weapp/cell-group/index",
"van-empty": "@vant/weapp/empty/index"
}
}
index.js
import { getProjectList } from '../../utils/api.js';
Page({
data: {
searchValue: '',
projectList: [],
originProList: [],
loading: false
},
onLoad() {
this.searchProjectList();
},
searchProjectList() {
this.setData({ loading: true });
getProjectList().then(res => {
this.setData({ loading: false, projectList: res.data.data, originProList: res.data.data });
});
},
onSearch(e) {
this.setData({ searchValue: e.detail });
if (!e.detail) {
this.setData({ projectList: this.data.originProList });
} else {
const arr = this.data.projectList.filter(ele => ele.proName.indexOf(e.detail) !== -1);
this.setData({ projectList: arr });
}
},
onClear() {
this.setData({ projectList: this.data.originProList });
}
});
2. 分页返回数据
index.wxml 去掉了bind:change="onSearch"
,其余同上。index.json 如果要开启下拉刷新,需要添加:"enablePullDownRefresh": true
index.js
import { getProjectList } from '../../utils/api.js';
Page({
data: {
searchValue: '',
listData: [],
pageNum: 1,
total: 0,
loading: false
},
onLoad() {
this.getList(1);
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
if (!this.data.loading && this.data.pageNum < Math.ceil(this.data.total / 10)) {
this.getList(this.data.pageNum + 1);
}
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
//启用标题栏显示加载状态
wx.showNavigationBarLoading();
// 调用相关方法,重置数据
this.setData({ listData: [], searchValue: '', pageNum: 1, total: 0 });
// 重新发起请求
this.getList(1);
setTimeout(() => {
wx.hideNavigationBarLoading(); //隐藏标题栏显示加载状态
wx.stopPullDownRefresh(); //结束刷新
}, 2000); //设置执行时间
},
getList(pageNum) {
this.setData({ loading: true });
getProjectList({ pageNum, pageSize: 10, proName: this.data.searchValue }).then(res => {
this.setData({
loading: false,
listData: this.data.listData.concat(res.data.rows),
pageNum,
total: res.data.total
});
});
},
onSearch(e) {
this.setData({ listData: [], searchValue: e.detail, pageNum: 1, total: 0 });
this.getList(1);
},
onClear() {
this.setData({ listData: [], searchValue: '', pageNum: 1, total: 0 });
this.getList(1);
}
});
- 总页数 = Math.ceil(总条数 / 每页显示的条数)
生成随机数
wx.getRandomValues({
length: 30, // 生成 30 个字节长度的随机数
success(res) {
that.setData({ inspectFileUuid: wx.arrayBufferToBase64(res.randomValues) });
}
});