管灌系统农户端微信小程序(嘉峪关应用)
pages/stationMonitor/stationMonitor.js
@@ -1,6 +1,7 @@
// pages/stationMonitor/stationMonitor.js
const {
  get
  get,
  post
} = require('../../api/request.js');
Page({
@@ -951,24 +952,207 @@
    if (!this.data.currentFertilizerStation) return;
    // 更新搅拌状态
    // 如果用户开启搅拌,调用启动接口
    if (enabled) {
      this.startStirring();
    } else {
      // 关闭搅拌时调用停止接口
      this.stopStirring();
    }
  },
  /**
   * 启动搅拌
   */
  startStirring() {
    const currentStation = this.data.currentFertilizerStation;
    if (!currentStation) return;
    console.log('开始调用启动搅拌接口');
    // 显示loading状态
    wx.showLoading({
      title: '启动搅拌中...',
      mask: true
    });
    // 调用启动搅拌接口
    post({
      url: '/wx/mqttStir/start',
      data: {
        manureId: currentStation.manureId || currentStation.id,
        operator: getApp().globalData.operator
      },
      isShowLoding: false // 我们自己控制loading状态
    })
      .then(response => {
        console.log('启动搅拌接口返回:', response);
        // 隐藏loading
        wx.hideLoading();
        if (response.success && response.code === '0001') {
          // 接口调用成功,更新搅拌状态
          this.updateMixingStatus(true);
          // 显示成功提示
          wx.showToast({
            title: '搅拌启动成功',
            icon: 'success',
            duration: 2000
          });
        } else {
          // 接口调用失败,重置开关状态
          console.error('启动搅拌失败:', response.msg);
          this.resetMixingSwitch();
          wx.showToast({
            title: response.msg || '启动搅拌失败',
            icon: 'error',
            duration: 2000
          });
        }
      })
      .catch(error => {
        console.error('调用启动搅拌接口失败:', error);
        // 隐藏loading
        wx.hideLoading();
        // 接口调用失败,重置开关状态
        this.resetMixingSwitch();
        // 显示错误提示
        wx.showToast({
          title: '启动搅拌失败,请重试',
          icon: 'error',
          duration: 2000
        });
      });
  },
  /**
   * 更新搅拌状态
   */
  updateMixingStatus(enabled) {
    const currentStation = {
      ...this.data.currentFertilizerStation
    };
    currentStation.mixingEnabled = enabled;
    
    // 更新具体的搅拌运行状态(这里假设只控制第一个搅拌器)
    currentStation.mixingEnabled = enabled;
    currentStation.stirRunning1 = enabled ? 1 : 0;
    this.setData({
      currentFertilizerStation: currentStation
    });
    // 显示操作结果
    wx.showToast({
      title: enabled ? '搅拌已开启' : '搅拌已关闭',
      icon: 'success'
    console.log('搅拌状态已更新:', enabled ? '开启' : '关闭');
  },
  /**
   * 重置搅拌开关状态(接口调用失败时使用)
   */
  resetMixingSwitch() {
    const currentStation = {
      ...this.data.currentFertilizerStation
    };
    // 重置为关闭状态
    currentStation.mixingEnabled = false;
    currentStation.stirRunning1 = 0;
    this.setData({
      currentFertilizerStation: currentStation
    });
    console.log('搅拌开关状态已重置为关闭');
  },
  /**
   * 停止搅拌
   */
  stopStirring() {
    const currentStation = this.data.currentFertilizerStation;
    if (!currentStation) return;
    console.log('开始调用停止搅拌接口');
    // 显示loading状态
    wx.showLoading({
      title: '停止搅拌中...',
      mask: true
    });
    // 调用停止搅拌接口
    post({
      url: '/wx/mqttStir/stop',
      data: {
        manureId: currentStation.manureId || currentStation.id,
        operator: getApp().globalData.operator
      },
      isShowLoding: false // 我们自己控制loading状态
    })
      .then(response => {
        console.log('停止搅拌接口返回:', response);
        // 隐藏loading
        wx.hideLoading();
        if (response.success && response.code === '0001') {
          // 接口调用成功,更新搅拌状态
          this.updateMixingStatus(false);
          // 显示成功提示
          wx.showToast({
            title: '搅拌停止成功',
            icon: 'success',
            duration: 2000
          });
        } else {
          // 接口调用失败,保持开启状态
          console.error('停止搅拌失败:', response.msg);
          this.keepMixingSwitchOn();
          wx.showToast({
            title: response.msg || '停止搅拌失败',
            icon: 'error',
            duration: 2000
          });
        }
      })
      .catch(error => {
        console.error('调用停止搅拌接口失败:', error);
        // 隐藏loading
        wx.hideLoading();
        // 接口调用失败,保持开启状态
        this.keepMixingSwitchOn();
        // 显示错误提示
        wx.showToast({
          title: '停止搅拌失败,请重试',
          icon: 'error',
          duration: 2000
        });
      });
  },
  /**
   * 保持搅拌开关为开启状态(停止失败时使用)
   */
  keepMixingSwitchOn() {
    const currentStation = {
      ...this.data.currentFertilizerStation
    };
    // 保持为开启状态
    currentStation.mixingEnabled = true;
    currentStation.stirRunning1 = 1;
    this.setData({
      currentFertilizerStation: currentStation
    });
    console.log('搅拌开关状态保持为开启');
  },
  /**
@@ -980,24 +1164,207 @@
    if (!this.data.currentFertilizerStation) return;
    // 更新注肥状态
    // 如果用户开启注肥,调用启动接口
    if (enabled) {
      this.startInjecting();
    } else {
      // 关闭注肥时调用停止接口
      this.stopInjecting();
    }
  },
  /**
   * 启动注肥
   */
  startInjecting() {
    const currentStation = this.data.currentFertilizerStation;
    if (!currentStation) return;
    console.log('开始调用启动注肥接口');
    // 显示loading状态
    wx.showLoading({
      title: '启动注肥中...',
      mask: true
    });
    // 调用启动注肥接口
    post({
      url: '/wx/mqttInject/start',
      data: {
        manureId: currentStation.manureId || currentStation.id,
        operator: getApp().globalData.operator
      },
      isShowLoding: false // 我们自己控制loading状态
    })
      .then(response => {
        console.log('启动注肥接口返回:', response);
        // 隐藏loading
        wx.hideLoading();
        if (response.success && response.code === '0001') {
          // 接口调用成功,更新注肥状态
          this.updateInjectingStatus(true);
          // 显示成功提示
          wx.showToast({
            title: '注肥启动成功',
            icon: 'success',
            duration: 2000
          });
        } else {
          // 接口调用失败,重置开关状态
          console.error('启动注肥失败:', response.msg);
          this.resetInjectingSwitch();
          wx.showToast({
            title: response.msg || '启动注肥失败',
            icon: 'error',
            duration: 2000
          });
        }
      })
      .catch(error => {
        console.error('调用启动注肥接口失败:', error);
        // 隐藏loading
        wx.hideLoading();
        // 接口调用失败,重置开关状态
        this.resetInjectingSwitch();
        // 显示错误提示
        wx.showToast({
          title: '启动注肥失败,请重试',
          icon: 'error',
          duration: 2000
        });
      });
  },
  /**
   * 更新注肥状态
   */
  updateInjectingStatus(enabled) {
    const currentStation = {
      ...this.data.currentFertilizerStation
    };
    currentStation.fertilizingEnabled = enabled;
    
    // 更新注肥运行状态
    currentStation.fertilizingEnabled = enabled;
    currentStation.injectRunning = enabled ? 1 : 0;
    this.setData({
      currentFertilizerStation: currentStation
    });
    // 显示操作结果
    wx.showToast({
      title: enabled ? '注肥已开启' : '注肥已关闭',
      icon: 'success'
    console.log('注肥状态已更新:', enabled ? '开启' : '关闭');
  },
  /**
   * 重置注肥开关状态(接口调用失败时使用)
   */
  resetInjectingSwitch() {
    const currentStation = {
      ...this.data.currentFertilizerStation
    };
    // 重置为关闭状态
    currentStation.fertilizingEnabled = false;
    currentStation.injectRunning = 0;
    this.setData({
      currentFertilizerStation: currentStation
    });
    console.log('注肥开关状态已重置为关闭');
  },
  /**
   * 停止注肥
   */
  stopInjecting() {
    const currentStation = this.data.currentFertilizerStation;
    if (!currentStation) return;
    console.log('开始调用停止注肥接口');
    // 显示loading状态
    wx.showLoading({
      title: '停止注肥中...',
      mask: true
    });
    // 调用停止注肥接口
    post({
      url: '/wx/mqttInject/stop',
      data: {
        manureId: currentStation.manureId || currentStation.id,
        operator: getApp().globalData.operator
      },
      isShowLoding: false // 我们自己控制loading状态
    })
      .then(response => {
        console.log('停止注肥接口返回:', response);
        // 隐藏loading
        wx.hideLoading();
        if (response.success && response.code === '0001') {
          // 接口调用成功,更新注肥状态
          this.updateInjectingStatus(false);
          // 显示成功提示
          wx.showToast({
            title: '注肥停止成功',
            icon: 'success',
            duration: 2000
          });
        } else {
          // 接口调用失败,保持开启状态
          console.error('停止注肥失败:', response.msg);
          this.keepInjectingSwitchOn();
          wx.showToast({
            title: response.msg || '停止注肥失败',
            icon: 'error',
            duration: 2000
          });
        }
      })
      .catch(error => {
        console.error('调用停止注肥接口失败:', error);
        // 隐藏loading
        wx.hideLoading();
        // 接口调用失败,保持开启状态
        this.keepInjectingSwitchOn();
        // 显示错误提示
        wx.showToast({
          title: '停止注肥失败,请重试',
          icon: 'error',
          duration: 2000
        });
      });
  },
  /**
   * 保持注肥开关为开启状态(停止失败时使用)
   */
  keepInjectingSwitchOn() {
    const currentStation = {
      ...this.data.currentFertilizerStation
    };
    // 保持为开启状态
    currentStation.fertilizingEnabled = true;
    currentStation.injectRunning = 1;
    this.setData({
      currentFertilizerStation: currentStation
    });
    console.log('注肥开关状态保持为开启');
  },
@@ -1045,12 +1412,14 @@
        const updatedItem = {
          ...item,
          isLoadingUrl: isLoading,
          urlError: hasError
          urlError: hasError,
          onLine:false
        };
        console.log(`摄像头 ${cameraId} 状态更新:`, {
          name: updatedItem.name,
          isLoadingUrl: updatedItem.isLoadingUrl,
          urlError: updatedItem.urlError
          urlError: updatedItem.urlError,
          onLine:false
        });
        return updatedItem;
      }
@@ -1105,11 +1474,11 @@
      this.updateCameraUrlLoadingState(camera.id, false, true);
      
      // 显示错误提示
      wx.showToast({
        title: '视频播放出错',
        icon: 'error',
        duration: 2000
      });
      // wx.showToast({
      //   title: '视频播放出错',
      //   icon: 'error',
      //   duration: 2000
      // });
    } else {
      console.error('未找到对应的摄像头:', cameraId);
    }
@@ -1191,5 +1560,87 @@
    console.log('播放状态更新完成');
  },
  /**
   * 清除故障
   */
  clearAlarm() {
    const currentStation = this.data.currentFertilizerStation;
    if (!currentStation) return;
    console.log('开始调用清除故障接口');
    // 显示loading状态
    wx.showLoading({
      title: '清除故障中...',
      mask: true
    });
    // 调用清除故障接口
    post({
      url: '/wx/mqttFault/clear',
      data: {
        manureId: currentStation.manureId || currentStation.id,
        operator: getApp().globalData.operator
      },
      isShowLoding: false // 我们自己控制loading状态
    })
      .then(response => {
        console.log('消除报警接口返回:', response);
        // 隐藏loading
        wx.hideLoading();
        if (response.success && response.code === '0001') {
          // 接口调用成功,更新报警状态
          this.updateAlarmStatus(0);
          // 显示成功提示
          wx.showToast({
            title: '故障清除成功',
            icon: 'success',
            duration: 2000
          });
        } else {
          // 接口调用失败
          console.error('清除故障失败:', response.msg);
          wx.showToast({
            title: response.msg || '清除故障失败',
            icon: 'error',
            duration: 2000
          });
        }
      })
      .catch(error => {
        console.error('调用清除故障接口失败:', error);
        // 隐藏loading
        wx.hideLoading();
        // 显示错误提示
        wx.showToast({
          title: '清除故障失败,请重试',
          icon: 'error',
          duration: 2000
        });
      });
  },
  /**
   * 更新报警状态
   */
  updateAlarmStatus(alarmStatus) {
    const currentStation = {
      ...this.data.currentFertilizerStation
    };
    currentStation.alarm = alarmStatus;
    this.setData({
      currentFertilizerStation: currentStation
    });
    console.log('报警状态已更新:', alarmStatus === 1 ? '报警' : '正常');
  },
})