锦水居民端小程序
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.
 

147 lines
4.2 KiB

const api = require("../../../../utils/api")
import { getTimestamp } from "../../../../utils/common"
const app = getApp()
Component({
data: {
projectList: [],
pageNo: 1,
pageSize: 10,
timestamp: "",
preloadVisible: true,
loadMoreType: "loading",
loadMoreVisible: false,
selectedProjectId: ""
},
lifetimes: {
attached () {
this.getProjectList()
this.pulldownRefresh = this.selectComponent("#pulldown-refresh")
this.triggerEvent("getProjectComponent")
}
},
pageLifetimes: {
show () {
if (!app.globalData.previewImage) {
this.backAndRefreshProjectList()
}
app.globalData.previewImage = false
}
},
methods: {
onPageScroll (e) {
this.pulldownRefresh.onPageScroll(e)
},
onReachBottom () {
this.setData({
loadMoreVisible: true
})
if (this.data.loadMoreType === "loading") {
this.data.pageNo += 1
this.pulldownGetProjectList()
}
},
// 下拉刷新 获取 项目列表接口
getProjectList () {
this.setData({
timestamp: getTimestamp(),
pageNo: 1,
preloadVisible: true,
loadMoreVisible: false,
projectList: [],
})
const para = {
pageIndex: this.data.pageNo,
pageSize: this.data.pageSize,
timestamp: this.data.timestamp,
searchContent: "",
firstCategoryCode: ""
}
api.getProjectList(para).then(res => {
this.pulldownRefresh.stopRefresh()
console.log("获取项目列表", res)
this.setData({
projectList: [...res.data],
preloadVisible: false,
loadMoreType: res.data.length === 10 ? "loading" : "none"
})
}).catch(err => {
this.pulldownRefresh.stopRefresh()
this.setData({
projectList: [],
preloadVisible: false,
loadMoreType: "none"
})
console.log(err)
})
},
// 上拉加载 项目列表
pulldownGetProjectList () {
const para = {
pageIndex: this.data.pageNo,
pageSize: this.data.pageSize,
timestamp: this.data.timestamp,
searchContent: "",
firstCategoryCode: ""
}
api.getProjectList(para).then(res => {
console.log("获取项目列表", res)
this.setData({
projectList: [...this.data.projectList,...res.data],
preloadVisible: false,
loadMoreType: res.data.length === 10 ? "loading" : "none"
})
}).catch(err => {
this.setData({
projectList: [],
preloadVisible: false,
loadMoreType: "none"
})
console.log(err)
})
},
// 跳转到项目详情
navigateToProjectDetail (e) {
this.data.selectedProjectId = e.detail.projectId
wx.navigateTo({
url: `/subpages/discussion/pages/discussionDetail/discussionDetail?type=project&detailId=${e.detail.projectId}&showClassify=show`
})
},
// 跳转搜索页面
navigateToSearchDiscussion () {
wx.navigateTo({
url: "/subpages/discussion/pages/searchDiscussion/searchDiscussion?type=project"
})
},
// 返回刷新项目列表
backAndRefreshProjectList () {
if (this.data.selectedProjectId) {
const para = {
pageIndex: 1,
pageSize: 10,
timestamp: this.data.timestamp,
searchContent: "",
firstCategoryCode: "",
itemId: this.data.selectedProjectId
}
api.getProjectList(para).then(res => {
console.log("详情回列表,刷新列表", res)
if (res.data.length === 1) {
this.data.projectList.forEach((item, index) => {
if (item.id === this.data.selectedProjectId) {
this.data.projectList.splice(index, 1, res.data[0])
}
})
} else {
const index = this.data.projectList.findIndex(item => item.id === this.data.selectedProjectId)
this.data.projectList.splice(index, 1)
}
this.setData({
projectList: this.data.projectList
})
}).finally(() => {
this.data.selectedProjectId = ""
})
}
}
}
})