| | |
| | | currentList: [], // 当前显示的列表 |
| | | isRefreshing: false, // 是否正在刷新 |
| | | isWXRefreshing: false, // 微信原生下拉刷新状态 |
| | | projectId: null // Added to store projectId |
| | | projectId: null, // Added to store projectId |
| | | // 添加分页相关数据 |
| | | pageCurr: 1, // 当前页码,从1开始 |
| | | pageSize: 10, // 每页记录数 |
| | | hasMoreData: true, // 是否还有更多数据 |
| | | loadingMore: false // 是否正在加载更多 |
| | | }, |
| | | |
| | | /** |
| | |
| | | projectId: options.projectId |
| | | }); |
| | | } |
| | | this.loadIrrigationData(); |
| | | this.loadCompletedIrrigationData(); |
| | | |
| | | // 设置加载状态 |
| | | wx.showLoading({ |
| | | title: '加载中', |
| | | mask: true |
| | | }); |
| | | |
| | | // 默认先加载当前灌溉计划 |
| | | this.loadIrrigationData() |
| | | .then(() => { |
| | | wx.hideLoading(); |
| | | }) |
| | | .catch(() => { |
| | | wx.hideLoading(); |
| | | }); |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow: function () { |
| | | this.loadIrrigationData(); |
| | | this.loadCompletedIrrigationData(); |
| | | }, |
| | | // onShow: function () { |
| | | // // 设置页面为加载中状态 |
| | | // wx.showLoading({ |
| | | // title: '加载中', |
| | | // mask: true |
| | | // }); |
| | | |
| | | // // 先加载当前页面所需的数据 |
| | | // const currentTab = this.data.currentTab; |
| | | // if (currentTab === 0) { |
| | | // // 当前标签是"当前灌溉计划",加载这个 |
| | | // this.loadIrrigationData() |
| | | // .then(() => { |
| | | // wx.hideLoading(); |
| | | // }) |
| | | // .catch(() => { |
| | | // wx.hideLoading(); |
| | | // }); |
| | | // } else { |
| | | // // 当前标签是"历史计划" |
| | | // // 只加载第一页数据,保留分页状态 |
| | | // if (this.data.completedList.length === 0) { |
| | | // // 如果历史列表为空,重置分页状态 |
| | | // this.setData({ |
| | | // pageCurr: 1, |
| | | // hasMoreData: true |
| | | // }); |
| | | // } |
| | | |
| | | // this.loadCompletedIrrigationData() |
| | | // .then(() => { |
| | | // wx.hideLoading(); |
| | | // }) |
| | | // .catch(() => { |
| | | // wx.hideLoading(); |
| | | // }); |
| | | // } |
| | | // }, |
| | | |
| | | /** |
| | | * 加载轮灌数据 |
| | | */ |
| | | loadIrrigationData: function () { |
| | | get({ |
| | | url: '/wx/plan/getNotCompletePlans' |
| | | }).then(res => { |
| | | if (res.success) { |
| | | const activeList = res.content.map(item => { |
| | | // 确保将planState转换为字符串 |
| | | const planState = String(item.planState); |
| | | return { |
| | | id: item.planId, |
| | | title: item.planName, |
| | | projectName: item.projectName || '未分配项目', |
| | | status: planState, |
| | | planStartTime: item.planStartTime, |
| | | planStopTime: item.planStopTime, |
| | | duration: item.duration, |
| | | startupMode: item.startupMode |
| | | }; |
| | | return new Promise((resolve, reject) => { |
| | | get({ |
| | | url: '/wx/plan/getNotCompletePlans' |
| | | }).then(res => { |
| | | if (res.success) { |
| | | const activeList = res.content.map(item => { |
| | | // 确保将planState转换为字符串 |
| | | const planState = String(item.planState); |
| | | return { |
| | | id: item.planId, |
| | | title: item.planName, |
| | | projectName: item.projectName || '未分配项目', |
| | | status: planState, |
| | | planStartTime: item.planStartTime, |
| | | planStopTime: item.planStopTime, |
| | | duration: item.duration, |
| | | startupMode: item.startupMode |
| | | }; |
| | | }); |
| | | |
| | | console.log('轮灌计划数据:', activeList); |
| | | |
| | | this.setData({ |
| | | activeList: activeList, |
| | | currentList: this.data.currentTab === 0 ? activeList : this.data.completedList, |
| | | isRefreshing: false, |
| | | isWXRefreshing: false |
| | | }); |
| | | resolve(); |
| | | } else { |
| | | wx.showToast({ |
| | | title: res.msg || '加载失败', |
| | | icon: 'none' |
| | | }); |
| | | reject(); |
| | | } |
| | | }).catch(err => { |
| | | console.error('加载失败:', err); |
| | | wx.showToast({ |
| | | title: '加载失败', |
| | | icon: 'none' |
| | | }); |
| | | |
| | | console.log('轮灌计划数据:', activeList); |
| | | |
| | | this.setData({ |
| | | activeList: activeList, |
| | | currentList: this.data.currentTab === 0 ? activeList : this.data.completedList, |
| | | isRefreshing: false, |
| | | isWXRefreshing: false |
| | | }); |
| | | } else { |
| | | wx.showToast({ |
| | | title: res.msg || '加载失败', |
| | | icon: 'none' |
| | | }); |
| | | } |
| | | }).catch(err => { |
| | | wx.showToast({ |
| | | title: '加载失败', |
| | | icon: 'none' |
| | | }); |
| | | this.setData({ |
| | | isRefreshing: false, |
| | | isWXRefreshing: false |
| | | reject(); |
| | | }); |
| | | }); |
| | | }, |
| | |
| | | * 加载已完成的轮灌数据 |
| | | */ |
| | | loadCompletedIrrigationData: function () { |
| | | get({ |
| | | url: '/wx/plan/getCompletedPlans' |
| | | }).then(res => { |
| | | if (res.success) { |
| | | const completedList = res.content.map(item => { |
| | | // 确保将planState转换为字符串 |
| | | const planState = String(item.planState); |
| | | return { |
| | | id: item.planId, |
| | | title: item.planName, |
| | | projectName: item.projectName || '未分配项目', |
| | | status: planState, |
| | | planStartTime: item.planStartTime, |
| | | planStopTime: item.planStopTime, |
| | | duration: item.duration, |
| | | startupMode: item.startupMode |
| | | // 如果正在加载或没有更多数据,则不再请求 |
| | | if (this.data.loadingMore && !this.data.hasMoreData) { |
| | | return Promise.resolve(); |
| | | } |
| | | |
| | | // 设置加载状态 |
| | | this.setData({ |
| | | loadingMore: true |
| | | }); |
| | | |
| | | return new Promise((resolve, reject) => { |
| | | get({ |
| | | url: '/wx/plan/getCompletedPlans', |
| | | data: { |
| | | pageCurr: this.data.pageCurr, |
| | | pageSize: this.data.pageSize |
| | | } |
| | | }).then(res => { |
| | | if (res.success) { |
| | | const newCompletedList = res.content.obj ? res.content.obj.map(item => { |
| | | // 确保将planState转换为字符串 |
| | | const planState = String(item.planState); |
| | | return { |
| | | id: item.planId, |
| | | title: item.planName, |
| | | projectName: item.projectName || '未分配项目', |
| | | status: planState, |
| | | planStartTime: item.planStartTime, |
| | | planStopTime: item.planStopTime, |
| | | duration: item.duration, |
| | | startupMode: item.startupMode |
| | | }; |
| | | }) : []; |
| | | |
| | | console.log('已完成轮灌计划数据:', newCompletedList); |
| | | |
| | | // 获取分页信息 |
| | | const pageInfo = { |
| | | itemTotal: res.content.itemTotal || 0, // 总记录数 |
| | | pageCurr: res.content.pageCurr || 1, // 当前页码 |
| | | pageSize: res.content.pageSize || 20, // 每页大小 |
| | | pageTotal: res.content.pageTotal || 1 // 总页数 |
| | | }; |
| | | }); |
| | | |
| | | console.log('分页信息:', pageInfo); |
| | | |
| | | console.log('已完成轮灌计划数据:', completedList); |
| | | // 判断是否还有更多数据 - 当前页小于总页数 |
| | | const hasMoreData = pageInfo.pageCurr < pageInfo.pageTotal; |
| | | |
| | | // 合并数据,第一页直接替换,之后的页面追加 |
| | | const completedList = this.data.pageCurr === 1 ? |
| | | newCompletedList : [...this.data.completedList, ...newCompletedList]; |
| | | |
| | | this.setData({ |
| | | completedList: completedList, |
| | | currentList: this.data.currentTab === 1 ? completedList : this.data.activeList, |
| | | isRefreshing: false, |
| | | isWXRefreshing: false, |
| | | loadingMore: false, |
| | | hasMoreData: hasMoreData |
| | | }); |
| | | resolve(); |
| | | } else { |
| | | this.setData({ |
| | | loadingMore: false |
| | | }); |
| | | // 不显示提示,因为可能是在后台加载 |
| | | console.error('历史计划加载失败:', res.msg); |
| | | reject(); |
| | | } |
| | | }).catch(err => { |
| | | console.error('历史计划加载失败:', err); |
| | | this.setData({ |
| | | completedList: completedList, |
| | | currentList: this.data.currentTab === 1 ? completedList : this.data.activeList, |
| | | isRefreshing: false, |
| | | isWXRefreshing: false |
| | | isWXRefreshing: false, |
| | | loadingMore: false |
| | | }); |
| | | } else { |
| | | wx.showToast({ |
| | | title: res.msg || '加载失败', |
| | | icon: 'none' |
| | | }); |
| | | } |
| | | }).catch(err => { |
| | | wx.showToast({ |
| | | title: '加载失败', |
| | | icon: 'none' |
| | | }); |
| | | this.setData({ |
| | | isRefreshing: false, |
| | | isWXRefreshing: false |
| | | // 不显示提示,因为可能是在后台加载 |
| | | reject(); |
| | | }); |
| | | }); |
| | | }, |
| | |
| | | const activeList = this.data.activeList || []; |
| | | const completedList = this.data.completedList || []; |
| | | |
| | | this.setData({ |
| | | currentTab: index, |
| | | currentList: index === 0 ? activeList : completedList |
| | | }); |
| | | // 切换标签页时,直接使用已加载的数据,不重新请求 |
| | | if (index === 1) { |
| | | // 切换到历史计划标签 |
| | | this.setData({ |
| | | currentTab: index, |
| | | currentList: completedList |
| | | }); |
| | | |
| | | // 如果历史列表为空,才进行加载 |
| | | if (completedList.length === 0) { |
| | | wx.showLoading({ |
| | | title: '加载中', |
| | | mask: true |
| | | }); |
| | | |
| | | this.setData({ |
| | | pageCurr: 1, |
| | | hasMoreData: true, |
| | | loadingMore: true // 显示加载指示器 |
| | | }); |
| | | |
| | | this.loadCompletedIrrigationData() |
| | | .then(() => { |
| | | wx.hideLoading(); |
| | | }) |
| | | .catch(() => { |
| | | wx.hideLoading(); |
| | | }); |
| | | } |
| | | } else { |
| | | // 切换到当前灌溉计划标签 |
| | | this.setData({ |
| | | currentTab: index, |
| | | currentList: activeList |
| | | }); |
| | | |
| | | // 如果当前灌溉计划列表为空,才进行加载 |
| | | if (activeList.length === 0) { |
| | | wx.showLoading({ |
| | | title: '加载中', |
| | | mask: true |
| | | }); |
| | | |
| | | this.loadIrrigationData() |
| | | .then(() => { |
| | | wx.hideLoading(); |
| | | }) |
| | | .catch(() => { |
| | | wx.hideLoading(); |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | |
| | | /** |
| | |
| | | this.setData({ |
| | | isRefreshing: true |
| | | }); |
| | | this.loadIrrigationData(); |
| | | this.loadCompletedIrrigationData(); |
| | | |
| | | // 根据当前标签页只刷新对应的数据 |
| | | const currentTab = this.data.currentTab; |
| | | if (currentTab === 0) { |
| | | // 当前标签是"当前灌溉计划",只刷新这个 |
| | | this.loadIrrigationData() |
| | | .finally(() => { |
| | | this.setData({ isRefreshing: false }); |
| | | }); |
| | | } else { |
| | | // 当前标签是"历史计划",将分页重置到第一页并刷新 |
| | | this.setData({ |
| | | pageCurr: 1, |
| | | hasMoreData: true |
| | | }); |
| | | |
| | | this.loadCompletedIrrigationData() |
| | | .finally(() => { |
| | | this.setData({ isRefreshing: false }); |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | |
| | |
| | | this.setData({ |
| | | isWXRefreshing: true |
| | | }); |
| | | this.loadIrrigationData(); |
| | | this.loadCompletedIrrigationData(); |
| | | |
| | | // 根据当前标签页只刷新对应的数据 |
| | | const currentTab = this.data.currentTab; |
| | | if (currentTab === 0) { |
| | | // 当前标签是"当前灌溉计划",只刷新这个 |
| | | this.loadIrrigationData() |
| | | .finally(() => { |
| | | this.setData({ isWXRefreshing: false }); |
| | | }); |
| | | } else { |
| | | // 当前标签是"历史计划",将分页重置到第一页并刷新 |
| | | this.setData({ |
| | | pageCurr: 1, |
| | | hasMoreData: true |
| | | }); |
| | | |
| | | this.loadCompletedIrrigationData() |
| | | .finally(() => { |
| | | this.setData({ isWXRefreshing: false }); |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom: function() { |
| | | console.log('触底加载更多, 当前标签:', this.data.currentTab); |
| | | // 当前是已完成列表且还有更多数据时加载更多 |
| | | if (this.data.currentTab === 1 && this.data.hasMoreData && !this.data.loadingMore) { |
| | | this.setData({ |
| | | pageCurr: this.data.pageCurr + 1 |
| | | }); |
| | | |
| | | // 加载更多历史数据 |
| | | this.loadCompletedIrrigationData() |
| | | .catch(err => { |
| | | console.error('加载更多历史数据失败:', err); |
| | | }); |
| | | } |
| | | } |
| | | }) |