You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
2.5 KiB
118 lines
2.5 KiB
2 years ago
|
import { wxRequestPost } from "@utils/promise-wx-api";
|
||
|
|
||
|
export default Behavior({
|
||
|
data: {
|
||
|
listIsMock: false,
|
||
|
|
||
|
listUrl: "",
|
||
|
listParams: {},
|
||
|
list: {
|
||
|
loading: false,
|
||
|
page: 1,
|
||
|
pageSize: 20,
|
||
|
isNone: false,
|
||
|
data: [],
|
||
|
},
|
||
|
|
||
|
moreListHint: "",
|
||
|
},
|
||
|
|
||
|
lifetimes: {},
|
||
|
|
||
|
observers: {
|
||
|
"list.**": function (field) {
|
||
|
this.updateMoreListHint();
|
||
|
},
|
||
|
},
|
||
|
|
||
|
methods: {
|
||
|
updateMoreListHint() {
|
||
|
const { list } = this.data;
|
||
|
let moreListHint = "";
|
||
|
if (list.loading) {
|
||
|
moreListHint = "正在加载……";
|
||
|
} else if (list.data.length == 0) {
|
||
|
moreListHint = "暂无内容";
|
||
|
} else if (!list.isNone) {
|
||
|
moreListHint = "上拉查看更多";
|
||
|
} else if (list.isNone) {
|
||
|
moreListHint = "没有更多了";
|
||
|
}
|
||
|
return this.setData({ moreListHint });
|
||
|
},
|
||
|
|
||
|
// 重置评论列表
|
||
|
resetList(clear = true) {
|
||
|
let { list } = this.data;
|
||
|
if (clear) {
|
||
|
list.data = [];
|
||
|
}
|
||
|
list.page = 1;
|
||
|
list.isNone = false;
|
||
|
this.setData({ list });
|
||
|
},
|
||
|
|
||
|
// 处理列表数据
|
||
|
cookListData(item, list) {
|
||
|
return item;
|
||
|
},
|
||
|
|
||
|
// 获取列表
|
||
|
async getList() {
|
||
|
const { listUrl, listParams, list, listIsMock } = this.data;
|
||
|
|
||
|
// 如果正在加载或没有更多,返回
|
||
|
if (list.loading || list.isNone) return;
|
||
|
|
||
|
list.loading = true;
|
||
|
this.setData({ list });
|
||
|
|
||
|
const {
|
||
|
data: {
|
||
|
data: { code, data },
|
||
|
},
|
||
|
msg,
|
||
|
} = await wxRequestPost(
|
||
|
listUrl,
|
||
|
{
|
||
|
...listParams,
|
||
|
pageNo: list.page,
|
||
|
pageSize: list.pageSize,
|
||
|
},
|
||
|
{
|
||
|
isMock: listIsMock,
|
||
|
// isQuiet: true
|
||
|
}
|
||
|
);
|
||
|
|
||
|
list.loading = false;
|
||
|
|
||
|
if (msg === "success" && code === 0) {
|
||
|
// console.log(Array.isArray(data))
|
||
|
let tempData = data
|
||
|
if (!Array.isArray(data)) {
|
||
|
// 非数组
|
||
|
tempData = Array.from(data)
|
||
|
|
||
|
}
|
||
|
let newList = tempData.map((item) => {
|
||
|
return this.cookListData(item, list.data);
|
||
|
});
|
||
|
if (list.page == 1) {
|
||
|
list.data = newList;
|
||
|
} else {
|
||
|
list.data = [...list.data, ...newList];
|
||
|
}
|
||
|
list.page += 1;
|
||
|
if (data.length < list.pageSize) {
|
||
|
list.isNone = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
this.setData({
|
||
|
list,
|
||
|
});
|
||
|
},
|
||
|
},
|
||
|
});
|