管灌系统农户端微信小程序(嘉峪关应用)
pages/irrigationDetail/irrigationDetail.js
@@ -12,7 +12,10 @@
    planId: '',
    planStatusText: '',
    planStatusClass: '',
    failureCount: 0
    failureCount: 0,
    realStopTime: '',
    originalStatus: '',
    currentStatus: null
  },
  /**
@@ -23,7 +26,35 @@
      this.setData({
        planId: options.planId
      });
      this.fetchIrrigationData(options.planId);
      // 获取最新状态
      this.fetchPlanLatestState(options.planId).then(res => {
        if (res.success) {
          const currentStatus = res.content;
          this.setData({
            currentStatus: currentStatus,
            originalStatus: currentStatus
          });
          // 根据最新状态调用相应的接口
          if (currentStatus === 5) {
            this.fetchTerminatedIrrigationData(options.planId);
          } else {
            this.fetchNormalIrrigationData(options.planId);
          }
        } else {
          wx.showToast({
            title: res.msg || '获取状态失败',
            icon: 'none'
          });
        }
      }).catch(err => {
        console.error('获取状态失败:', err);
        wx.showToast({
          title: '获取状态失败',
          icon: 'none'
        });
      });
    } else {
      wx.showToast({
        title: '缺少计划ID',
@@ -36,9 +67,9 @@
  },
  /**
   * 获取灌溉计划数据
   * 获取常规灌溉计划详细数据
   */
  fetchIrrigationData: function(planId) {
  fetchNormalIrrigationData: function(planId) {
    const { get } = require('../../api/request');
    
    const data = {
@@ -69,6 +100,57 @@
  },
  /**
   * 获取已终止灌溉计划详细数据
   */
  fetchTerminatedIrrigationData: function(planId) {
    const { get } = require('../../api/request');
    const data = {
      planId: planId || this.data.planId,
    };
    get({
      url: 'wx/plan/getTerminateResults',
      isShowLoding: true,
      useParams: true,
      data: data
    }).then(res => {
      if (res.success) {
        this.processIrrigationData(res.content);
      } else {
        wx.showToast({
          title: res.msg || '获取数据失败',
          icon: 'none'
        });
      }
    }).catch(err => {
      console.error('请求失败:', err);
      wx.showToast({
        title: '请求失败',
        icon: 'none'
      });
    });
  },
  /**
   * 获取计划最新状态
   */
  fetchPlanLatestState: function(planId) {
    const { get } = require('../../api/request');
    const data = {
      planId: planId || this.data.planId,
    };
    return get({
      url: 'wx/plan/getPlanLatestState',
      isShowLoding: true,
      useParams: true,
      data: data
    });
  },
  /**
   * 处理接口返回的数据
   */
  processIrrigationData: function(data) {
@@ -78,7 +160,9 @@
    const statusMap = {
      2: {status: 'pending', statusText: '未开始'},
      3: {status: 'in_progress', statusText: '灌溉中'},
      4: {status: 'completed', statusText: '已结束'}
      4: {status: 'completed', statusText: '已结束'},
      5: {status: 'terminated', statusText: '中途关阀'},
      6: {status: 'canceled', statusText: '取消开阀'}
    };
    // 处理计划状态
@@ -140,6 +224,7 @@
      projectName: data.projectName,
      startTime: data.planStartTime,
      stopTime: data.planStopTime,
      realStopTime: data.realStopTime || '',
      groupList: groupList,
      planStatusText: planStatusText,
      planStatusClass: planStatusClass,
@@ -182,15 +267,41 @@
    this.setData({
      isRefreshing: true
    });
    this.fetchIrrigationData(this.data.planId);
    
    // 完成刷新
    setTimeout(() => {
    // 获取最新状态并刷新数据
    this.fetchPlanLatestState(this.data.planId).then(res => {
      if (res.success) {
        const currentStatus = res.content;
        this.setData({
          currentStatus: currentStatus
        });
        if (currentStatus === 5) {
          this.fetchTerminatedIrrigationData(this.data.planId);
        } else {
          this.fetchNormalIrrigationData(this.data.planId);
        }
      } else {
        wx.showToast({
          title: res.msg || '获取状态失败',
          icon: 'none'
        });
      }
      // 完成刷新
      this.setData({
        isRefreshing: false
      });
    }, 1000);
    }).catch(err => {
      console.error('获取状态失败:', err);
      wx.showToast({
        title: '获取状态失败',
        icon: 'none'
      });
      this.setData({
        isRefreshing: false
      });
    });
  },
  /**