日照项目的居民端小程序
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

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,
});
},
},
});