|  |  |  | 
|---|
|  |  |  | // pages/irrigation/irrigation.js | 
|---|
|  |  |  | const { get, post } = require('../../api/request'); | 
|---|
|  |  |  | const app = getApp(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Page({ | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 页面的初始数据 | 
|---|
|  |  |  | 
|---|
|  |  |  | completedList: [], // 已完成的轮灌列表 | 
|---|
|  |  |  | currentList: [], // 当前显示的列表 | 
|---|
|  |  |  | isRefreshing: false, // 是否正在刷新 | 
|---|
|  |  |  | isWXRefreshing: false // 微信原生下拉刷新状态 | 
|---|
|  |  |  | isWXRefreshing: false, // 微信原生下拉刷新状态 | 
|---|
|  |  |  | projectId: null, // Added to store projectId | 
|---|
|  |  |  | // 添加分页相关数据 | 
|---|
|  |  |  | pageCurr: 1, // 当前页码,从1开始 | 
|---|
|  |  |  | pageSize: 10, // 每页记录数 | 
|---|
|  |  |  | hasMoreData: true, // 是否还有更多数据 | 
|---|
|  |  |  | loadingMore: false // 是否正在加载更多 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 生命周期函数--监听页面加载 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onLoad: function (options) { | 
|---|
|  |  |  | this.loadIrrigationData(); | 
|---|
|  |  |  | // 获取项目ID | 
|---|
|  |  |  | if (options.projectId) { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | projectId: options.projectId | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 设置加载状态 | 
|---|
|  |  |  | wx.showLoading({ | 
|---|
|  |  |  | title: '加载中', | 
|---|
|  |  |  | mask: true | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 默认先加载当前灌溉计划 | 
|---|
|  |  |  | this.loadIrrigationData() | 
|---|
|  |  |  | .then(() => { | 
|---|
|  |  |  | wx.hideLoading(); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(() => { | 
|---|
|  |  |  | wx.hideLoading(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 生命周期函数--监听页面显示 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onShow: function () { | 
|---|
|  |  |  | this.loadIrrigationData(); | 
|---|
|  |  |  | // 检查全局变量,判断是否需要刷新列表并切换到当前计划 | 
|---|
|  |  |  | const app = getApp(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 刷新所有数据(当前计划和历史计划),确保数据最新 | 
|---|
|  |  |  | wx.showLoading({ | 
|---|
|  |  |  | title: '刷新数据中', | 
|---|
|  |  |  | mask: true | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 同时获取当前计划和历史计划数据 | 
|---|
|  |  |  | Promise.all([ | 
|---|
|  |  |  | this.loadIrrigationData(), | 
|---|
|  |  |  | this.loadCompletedIrrigationData(true) // 传入true表示是重新加载第一页 | 
|---|
|  |  |  | ]).then(() => { | 
|---|
|  |  |  | wx.hideLoading(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 如果需要刷新并切换到当前计划 | 
|---|
|  |  |  | if (app.globalData.needRefreshIrrigationList) { | 
|---|
|  |  |  | // 重置全局变量 | 
|---|
|  |  |  | app.globalData.needRefreshIrrigationList = false; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | console.log('检测到需要刷新灌溉计划列表'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 切换到当前灌溉计划标签页 | 
|---|
|  |  |  | if (this.data.currentTab !== 0) { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | currentTab: 0, | 
|---|
|  |  |  | currentList: this.data.activeList | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).catch(() => { | 
|---|
|  |  |  | wx.hideLoading(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 加载轮灌数据 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | loadIrrigationData: function () { | 
|---|
|  |  |  | // 这里应该调用API获取数据 | 
|---|
|  |  |  | // 模拟数据 | 
|---|
|  |  |  | const mockData = { | 
|---|
|  |  |  | activeList: [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: '1', | 
|---|
|  |  |  | title: 'LG-2023-001', | 
|---|
|  |  |  | status: '未发布', | 
|---|
|  |  |  | irrigationTime: '2023-05-20 08:00 - 17:00' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: '2', | 
|---|
|  |  |  | title: 'LG-2023-002', | 
|---|
|  |  |  | status: '已发布', | 
|---|
|  |  |  | irrigationTime: '2023-05-22 09:00 - 18:00' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: '2', | 
|---|
|  |  |  | title: 'LG-2023-002', | 
|---|
|  |  |  | status: '已发布', | 
|---|
|  |  |  | irrigationTime: '2023-05-22 09:00 - 18:00' | 
|---|
|  |  |  | },  { | 
|---|
|  |  |  | id: '2', | 
|---|
|  |  |  | title: 'LG-2023-002', | 
|---|
|  |  |  | status: '已发布', | 
|---|
|  |  |  | irrigationTime: '2023-05-22 09:00 - 18:00' | 
|---|
|  |  |  | },  { | 
|---|
|  |  |  | id: '2', | 
|---|
|  |  |  | title: 'LG-2023-002', | 
|---|
|  |  |  | status: '已发布', | 
|---|
|  |  |  | irrigationTime: '2023-05-22 09:00 - 18:00' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: '3', | 
|---|
|  |  |  | title: 'LG-2023-003', | 
|---|
|  |  |  | status: '执行中', | 
|---|
|  |  |  | irrigationTime: '2023-05-18 07:30 - 16:30', | 
|---|
|  |  |  | irrigatedTime: '3小时25分钟', | 
|---|
|  |  |  | irrigatedGroups: '1组、2组、3组' | 
|---|
|  |  |  | },   { | 
|---|
|  |  |  | id: '2', | 
|---|
|  |  |  | title: 'LG-2023-002', | 
|---|
|  |  |  | status: '已发布', | 
|---|
|  |  |  | irrigationTime: '2023-05-22 09:00 - 18:00' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: '3', | 
|---|
|  |  |  | title: 'LG-2023-003', | 
|---|
|  |  |  | status: '执行中', | 
|---|
|  |  |  | irrigationTime: '2023-05-18 07:30 - 16:30', | 
|---|
|  |  |  | irrigatedTime: '3小时25分钟', | 
|---|
|  |  |  | irrigatedGroups: '1组、2组、3组' | 
|---|
|  |  |  | },   { | 
|---|
|  |  |  | id: '2', | 
|---|
|  |  |  | title: 'LG-2023-002', | 
|---|
|  |  |  | status: '已发布', | 
|---|
|  |  |  | irrigationTime: '2023-05-22 09:00 - 18:00' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: '3', | 
|---|
|  |  |  | title: 'LG-2023-003', | 
|---|
|  |  |  | status: '执行中', | 
|---|
|  |  |  | irrigationTime: '2023-05-18 07:30 - 16:30', | 
|---|
|  |  |  | irrigatedTime: '3小时25分钟', | 
|---|
|  |  |  | irrigatedGroups: '1组、2组、3组' | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | // completedList: [ | 
|---|
|  |  |  | //   { | 
|---|
|  |  |  | //     id: '4', | 
|---|
|  |  |  | //     title: 'LG-2023-004', | 
|---|
|  |  |  | //     status: '已完成', | 
|---|
|  |  |  | //     irrigationTime: '2023-05-10 10:00 - 19:00' | 
|---|
|  |  |  | //   } | 
|---|
|  |  |  | // ] | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 模拟网络请求延迟 | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | activeList: mockData.activeList || [], | 
|---|
|  |  |  | completedList: mockData.completedList || [], | 
|---|
|  |  |  | currentList: this.data.currentTab === 0 ? mockData.activeList || [] : mockData.completedList || [], | 
|---|
|  |  |  | isRefreshing: false, // 结束刷新状态 | 
|---|
|  |  |  | isWXRefreshing: false // 结束微信原生下拉刷新状态 | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, 1000); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 加载已完成的轮灌数据 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | loadCompletedIrrigationData: function (isFirstPage) { | 
|---|
|  |  |  | // 如果正在加载或没有更多数据,则不再请求 | 
|---|
|  |  |  | if (this.data.loadingMore && !this.data.hasMoreData) { | 
|---|
|  |  |  | return Promise.resolve(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 如果是重新加载第一页,重置页码和状态 | 
|---|
|  |  |  | if (isFirstPage) { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | pageCurr: 1, | 
|---|
|  |  |  | hasMoreData: true | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 设置加载状态 | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 点击列表项 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 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&status=${status}` | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | content: '确定要发布该轮灌计划吗?', | 
|---|
|  |  |  | success: (res) => { | 
|---|
|  |  |  | if (res.confirm) { | 
|---|
|  |  |  | // 这里应该调用API发布轮灌计划 | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '发布成功', | 
|---|
|  |  |  | icon: 'success' | 
|---|
|  |  |  | // 调用发布接口 | 
|---|
|  |  |  | post({ | 
|---|
|  |  |  | url: '/wx/plan/publishPlan', | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | planId: id, | 
|---|
|  |  |  | operatorId: app.globalData.clientId | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | isShowLoding: true, | 
|---|
|  |  |  | timeout: 180000 | 
|---|
|  |  |  | }).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); | 
|---|
|  |  |  | if(err.code==='1003'){ | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: err.msg || '发布失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '发布失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // 刷新数据 | 
|---|
|  |  |  | this.loadIrrigationData(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | 
|---|
|  |  |  | content: '确定要终止该轮灌计划吗?', | 
|---|
|  |  |  | success: (res) => { | 
|---|
|  |  |  | if (res.confirm) { | 
|---|
|  |  |  | // 这里应该调用API终止轮灌计划 | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '已终止', | 
|---|
|  |  |  | icon: 'success' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // 刷新数据 | 
|---|
|  |  |  | this.loadIrrigationData(); | 
|---|
|  |  |  | 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, | 
|---|
|  |  |  | timeout: 180000 | 
|---|
|  |  |  | }).then(res => { | 
|---|
|  |  |  | if (res.success) { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '终止成功', | 
|---|
|  |  |  | icon: 'success' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // 同时刷新当前计划列表和历史计划列表 | 
|---|
|  |  |  | Promise.all([ | 
|---|
|  |  |  | this.loadIrrigationData(), | 
|---|
|  |  |  | this.loadCompletedIrrigationData(true) // 传入true表示重新加载第一页 | 
|---|
|  |  |  | ]).catch(err => { | 
|---|
|  |  |  | console.error('刷新数据失败:', err); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: res.msg || '终止失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).catch(err => { | 
|---|
|  |  |  | console.error('终止失败:', err); | 
|---|
|  |  |  | wx.showToast({ | 
|---|
|  |  |  | title: '终止失败', | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 点击立即执行按钮 | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | onAddIrrigation: function () { | 
|---|
|  |  |  | wx.navigateTo({ | 
|---|
|  |  |  | url: '/pages/createIrrigation/createIrrigation' | 
|---|
|  |  |  | url: '/pages/createIrrigation/createIrrigation?projectId=' + this.data.projectId | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 阻止事件冒泡 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | stopPropagation: function (e) { | 
|---|
|  |  |  | // 阻止事件冒泡 | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | isRefreshing: true | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | this.loadIrrigationData(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 根据当前标签页只刷新对应的数据 | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 根据当前标签页只刷新对应的数据 | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 从创建灌溉计划页面返回时,切换到当前计划列表并刷新数据 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | switchToCurrentPlans: function() { | 
|---|
|  |  |  | console.log('从创建页面返回,切换到当前计划列表并刷新'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 如果当前不在 "当前灌溉计划" 标签页,先切换到该标签页 | 
|---|
|  |  |  | if (this.data.currentTab !== 0) { | 
|---|
|  |  |  | this.setData({ | 
|---|
|  |  |  | currentTab: 0, | 
|---|
|  |  |  | currentList: this.data.activeList | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 显示加载提示 | 
|---|
|  |  |  | wx.showLoading({ | 
|---|
|  |  |  | title: '刷新数据中', | 
|---|
|  |  |  | mask: true | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 刷新当前灌溉计划数据 | 
|---|
|  |  |  | this.loadIrrigationData() | 
|---|
|  |  |  | .then(() => { | 
|---|
|  |  |  | wx.hideLoading(); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(() => { | 
|---|
|  |  |  | wx.hideLoading(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|