// pages/irrigation/irrigation.js
|
const { get, post } = require('../../api/request');
|
const app = getApp();
|
|
Page({
|
/**
|
* 页面的初始数据
|
*/
|
data: {
|
currentTab: 0, // 当前选中的标签页索引
|
activeList: [], // 进行中的轮灌列表
|
completedList: [], // 已完成的轮灌列表
|
currentList: [], // 当前显示的列表
|
isRefreshing: false, // 是否正在刷新
|
isWXRefreshing: false, // 微信原生下拉刷新状态
|
projectId: null, // Added to store projectId
|
// 添加分页相关数据
|
pageCurr: 1, // 当前页码,从1开始
|
pageSize: 10, // 每页记录数
|
hasMoreData: true, // 是否还有更多数据
|
loadingMore: false // 是否正在加载更多
|
},
|
|
/**
|
* 生命周期函数--监听页面加载
|
*/
|
onLoad: function (options) {
|
// 获取项目ID
|
if (options.projectId) {
|
this.setData({
|
projectId: options.projectId
|
});
|
}
|
|
// 设置加载状态
|
wx.showLoading({
|
title: '加载中',
|
mask: true
|
});
|
|
// 默认先加载当前灌溉计划
|
this.loadIrrigationData()
|
.then(() => {
|
wx.hideLoading();
|
})
|
.catch(() => {
|
wx.hideLoading();
|
});
|
},
|
|
/**
|
* 生命周期函数--监听页面显示
|
*/
|
// 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 () {
|
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'
|
});
|
this.setData({
|
isRefreshing: false,
|
isWXRefreshing: false
|
});
|
reject();
|
});
|
});
|
},
|
|
/**
|
* 加载已完成的轮灌数据
|
*/
|
loadCompletedIrrigationData: function () {
|
// 如果正在加载或没有更多数据,则不再请求
|
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);
|
|
// 判断是否还有更多数据 - 当前页小于总页数
|
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({
|
isRefreshing: false,
|
isWXRefreshing: false,
|
loadingMore: false
|
});
|
// 不显示提示,因为可能是在后台加载
|
reject();
|
});
|
});
|
},
|
|
/**
|
* 切换标签页
|
*/
|
switchTab: function (e) {
|
const index = parseInt(e.currentTarget.dataset.index);
|
if (this.data.currentTab === index) {
|
return;
|
}
|
|
const activeList = this.data.activeList || [];
|
const completedList = this.data.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();
|
});
|
}
|
}
|
},
|
|
/**
|
* 点击列表项
|
*/
|
onItemTap: function (e) {
|
const id = e.currentTarget.dataset.id;
|
const status = e.currentTarget.dataset.status;
|
|
console.log('点击项目状态:', status, '类型:', typeof status);
|
|
// 判断计划状态,如果是1(未发布),则提示用户
|
if (status === '1' || status === 1) {
|
wx.showModal({
|
title: '提示',
|
content: '当前计划未发布,请发布后查看',
|
showCancel: false,
|
confirmText: '确认'
|
});
|
return;
|
}
|
|
// 导航到灌溉详情页面,并传递参数
|
wx.navigateTo({
|
url: `/pages/irrigationDetail/irrigationDetail?planId=${id}&fromList=true`
|
});
|
},
|
|
/**
|
* 点击发布按钮
|
*/
|
onPublish: function (e) {
|
const id = e.currentTarget.dataset.id;
|
wx.showModal({
|
title: '确认发布',
|
content: '确定要发布该轮灌计划吗?',
|
success: (res) => {
|
if (res.confirm) {
|
// 调用发布接口
|
post({
|
url: '/wx/plan/publishPlan',
|
data: {
|
planId: id,
|
operatorId: app.globalData.clientId
|
},
|
isShowLoding: true
|
}).then(res => {
|
if (res.success) {
|
wx.showToast({
|
title: '发布成功',
|
icon: 'success'
|
});
|
// 刷新数据
|
this.loadIrrigationData();
|
} else {
|
wx.showToast({
|
title: res.msg || '发布失败',
|
icon: 'none'
|
});
|
}
|
}).catch(err => {
|
console.error('发布失败:', err);
|
wx.showToast({
|
title: '发布失败',
|
icon: 'none'
|
});
|
});
|
}
|
}
|
});
|
},
|
|
/**
|
* 点击终止按钮
|
*/
|
onStop: function (e) {
|
const id = e.currentTarget.dataset.id;
|
wx.showModal({
|
title: '确认终止',
|
content: '确定要终止该轮灌计划吗?',
|
success: (res) => {
|
if (res.confirm) {
|
this.postStop(id)
|
}
|
}
|
});
|
},
|
|
/**
|
* 点击删除按钮
|
*/
|
onDelete: function (e) {
|
const id = e.currentTarget.dataset.id;
|
wx.showModal({
|
title: '确认删除',
|
content: '确定要删除该轮灌计划吗?',
|
success: (res) => {
|
if (res.confirm) {
|
// 调用删除接口
|
post({
|
url: '/wx/plan/deletePlan',
|
data: {
|
planId: id,
|
operatorId: app.globalData.clientId
|
},
|
isShowLoding: true
|
}).then(res => {
|
if (res.success) {
|
wx.showToast({
|
title: '删除成功',
|
icon: 'success'
|
});
|
// 刷新数据
|
this.loadIrrigationData();
|
} else {
|
wx.showToast({
|
title: res.msg || '删除失败',
|
icon: 'none'
|
});
|
}
|
}).catch(err => {
|
console.error('删除失败:', err);
|
wx.showToast({
|
title: '删除失败',
|
icon: 'none'
|
});
|
});
|
}
|
}
|
});
|
},
|
|
//终止轮灌计划
|
postStop(planID){
|
post({
|
url: '/wx/plan/terminatePlan',
|
data: {
|
planId: planID,
|
operatorId: app.globalData.clientId
|
},
|
isShowLoding: true
|
}).then(res => {
|
if (res.success) {
|
wx.showToast({
|
title: '终止成功',
|
icon: 'success'
|
});
|
// 刷新数据
|
this.loadIrrigationData();
|
} else {
|
wx.showToast({
|
title: res.msg || '终止失败',
|
icon: 'none'
|
});
|
}
|
}).catch(err => {
|
console.error('终止失败:', err);
|
wx.showToast({
|
title: '终止失败',
|
icon: 'none'
|
});
|
});
|
},
|
|
/**
|
* 点击立即执行按钮
|
*/
|
onExecute: function (e) {
|
const id = e.currentTarget.dataset.id;
|
wx.showModal({
|
title: '确认执行',
|
content: '确定要立即执行该轮灌计划吗?',
|
success: (res) => {
|
if (res.confirm) {
|
// 这里应该调用API立即执行轮灌计划
|
wx.showToast({
|
title: '执行成功',
|
icon: 'success'
|
});
|
// 刷新数据
|
this.loadIrrigationData();
|
}
|
}
|
});
|
},
|
|
/**
|
* 点击新建轮灌按钮
|
*/
|
onAddIrrigation: function () {
|
wx.navigateTo({
|
url: '/pages/createIrrigation/createIrrigation?projectId=' + this.data.projectId
|
});
|
},
|
|
/**
|
* 阻止事件冒泡
|
*/
|
stopPropagation: function (e) {
|
// 阻止事件冒泡
|
return false;
|
},
|
|
/**
|
* 开始下拉刷新
|
*/
|
startPullDownRefresh: function() {
|
if (!this.data.isWXRefreshing) {
|
this.setData({
|
isRefreshing: true
|
});
|
|
// 根据当前标签页只刷新对应的数据
|
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 });
|
});
|
}
|
}
|
},
|
|
/**
|
* 页面相关事件处理函数--监听用户下拉动作
|
*/
|
onPullDownRefresh: function () {
|
this.setData({
|
isWXRefreshing: true
|
});
|
|
// 根据当前标签页只刷新对应的数据
|
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);
|
});
|
}
|
}
|
})
|