管灌系统农户端微信小程序(嘉峪关应用)
pages/waterIntake/waterIntake.js
@@ -40,6 +40,27 @@
    openTimeText: "",
    openTime: "",
    irrigateProfile: [], //获取所选灌溉方式的详细数据
    dialog_mode: true,
    dialog_time: false,
    dialog_water: false,
    group_time: false, //是否显示选择分钟或小时的单选框
    openTime: "", //计划开泵的开始时间
    openTimeText: "",
    isShowOpenTime: "false",
    showForceConfirm: false,
    showErrorDialog: false, //错误提示
    errorData: "",
    confirmBtn: {
      content: '确认'
    },
    radioValue: "0", //开阀方式选中的类型
    costiomTime: "", //自定义灌溉时间
    waterAmount: 0, //定量开阀的水量
    costiomWater: "", //输入的自定义水量
    isWXRefreshing: false,
    irrigateProfile: [], //获取所选灌溉方式的详细数据
    datetimeVisible: false,
  },
  // 切换 Tabs
@@ -73,10 +94,13 @@
  choseCard(event) {
    //显示二次确认弹窗
    this.setData({
      showConfirm: true,
    //   showConfirm: true,
      choseItem: event.currentTarget.dataset.item,
      allWaterPoints: []
    })
   this.initDialogData();
    //  console.log(intakeId);
    //   wx.navigateTo({
    //     url: '/pages/openCard/openCard?intakeId='+intakeId,
@@ -100,9 +124,9 @@
    });
    const app = getApp();
    const data = {
      intakeId: intakeId, //取水口ID
      // vcId: vcId, //虚拟卡ID
      operator: app.globalData.operator, //操作员
      intakeId: this.data.choseItem.intakeId, //取水口ID
    //   vcId:  app.globalData.vcId, //虚拟卡ID
      operator: app.globalData.clientId, //操作员
      forceOpen: !!isforce // 使用逻辑非操作符 !! 来确保 isForce 是布尔值  
    };
    post({
@@ -110,7 +134,6 @@
      data: data,
      timeout: 180000
    }).then(response => {
      // 处理成功响应
      console.log('请求成功:', response);
      // 加载完成后隐藏加载动画
@@ -119,7 +142,6 @@
      wx.reLaunch({
        url: '/pages/home/home?param=true' // 首页的路径,根据实际情况填写
      });
    }).catch(error => {
      // 加载完成后隐藏加载动画
      wx.hideLoading();
@@ -130,10 +152,18 @@
          forceIntakeId: intakeId,
          showForceConfirm: true
        })
      } else if (error.code === "ECONNABORTED" || error.message?.includes('timeout')) {
        // 处理超时错误
        this.setData({
          showErrorDialog: true,
          errorData: "通信超时,请稍后再试",
          errorDialogTitle: "开阀错误"
        })
      } else {
        this.setData({
          showErrorDialog: true,
          errorData: error.msg
          errorData: error.msg,
          errorDialogTitle: "开阀错误"
        })
      }
    });
@@ -243,7 +273,7 @@
    get({
        url: 'wx/intake/used_intakes',
        data: {
          operatorId: getApp().globalData.operator
          operatorId: getApp().globalData.clientId
        }
      })
      .then((data) => {
@@ -283,10 +313,14 @@
    this.getcommonWaterPoints();
  },
  confirmDialog() {
    // this.setData({
    //   showConfirm: false
    // })
    // this.postOpenValva(this.data.choseItem.intakeId);
    this.setData({
      showConfirm: false
        showConfirm: false
    })
    this.postOpenValva(this.data.choseItem.intakeId);
    this.initDialogData();
  },
  closeDialog() {
    this.setData({
@@ -476,15 +510,15 @@
      mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
    });
    const data = {
      intakeId: this.data.intakeId, //取水口ID
      // vcId: this.data.vcId, //虚拟卡ID
      intakeId: this.data.choseItem.intakeId, //取水口ID
      minutes: this.data.postMinutes, //分钟
      operator: app.globalData.clientId, //操作员
      plannedOpenTime: this.data.openTime
    };
    post({
      url: "wx/valve/planed_open_timed_close",
      data: data
      data: data,
      timeout: 180000
    }).then(response => {
      // 处理成功响应
      console.log('请求成功:', response);
@@ -499,10 +533,20 @@
      wx.hideLoading();
      // 处理错误响应
      console.error('请求失败:', error);
      this.setData({
        showErrorDialog: true,
        errorData: error.msg
      })
      if (error.code === "ECONNABORTED" || error.message?.includes('timeout')) {
        // 处理超时错误
        this.setData({
          showErrorDialog: true,
          errorData: "通信超时,请稍后再试",
          errorDialogTitle: "开阀错误"
        })
      } else {
        this.setData({
          showErrorDialog: true,
          errorData: error.msg,
          errorDialogTitle: "开阀错误"
        })
      }
    });
  },
  //定时关阀式开阀
@@ -513,14 +557,14 @@
      mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
    });
    const data = {
      intakeId: this.data.intakeId, //取水口ID
      // vcId: this.data.vcId, //虚拟卡ID
      intakeId: this.data.choseItem.intakeId, //取水口ID
      minutes: this.data.postMinutes, //分钟
      operator: app.globalData.clientId //操作员
    };
    post({
      url: "wx/valve/timed_close",
      data: data
      data: data,
      timeout: 180000
    }).then(response => {
      // 处理成功响应
      console.log('请求成功:', response);
@@ -535,10 +579,181 @@
      wx.hideLoading();
      // 处理错误响应
      console.error('请求失败:', error);
      if (error.code === "ECONNABORTED" || error.message?.includes('timeout')) {
        // 处理超时错误
        this.setData({
          showErrorDialog: true,
          errorData: "通信超时,请稍后再试",
          errorDialogTitle: "开阀错误"
        })
      } else {
        this.setData({
          showErrorDialog: true,
          errorData: error.msg,
          errorDialogTitle: "开阀错误"
        })
      }
    });
  },
    // 通过小时转换成分钟
    hourToMinutes(hours) {
        // 检查输入是否合法
        if (isNaN(hours) || hours < 0) {
          console.error('请输入有效的小时数');
          return null;
        }
        // 将小时转换为分钟
        const minutes = hours * 60;
        return minutes;
      },
      minutesToHours(minutes) {
        // 检查输入是否合法
        if (isNaN(minutes) || hours < 0) {
          console.error('请输入有效的小时数');
          return null;
        }
        // 将小时转换为分钟
        const hours = minutes / 60;
        return hours;
      },
        // 选择水量后的处理
  handleWaterWrapperTap(e) {
    const index = e.currentTarget.dataset.index;
    console.log(index)
    if (index !== undefined) {
      this.data.waterAmount = parseInt(this.data.irrigateProfile[index].defaultValue)
      this.setData({
        showErrorDialog: true,
        errorData: error.msg
        activeIndex: parseInt(index),
        costiomWater: ""
      });
    }
  }, //显示时间选择器
  showPicker(e) {
    this.setData({
      datetime: new Date().getTime(),
      datetimeVisible: true,
      isShowOpenTime: true
    });
  },
  onConfirm(e) {
    const {
      value
    } = e?.detail;
    console.log(value);
    this.setData({
      openTime: value,
      openTimeText: "计划开阀时间:" + value
    })
  },  hidePicker() {
    this.setData({
      isShowOpenTime: false,
      isOpenTiming: false,
      radioValue: "0"
    })
  }, // 定量开泵按钮
  btnOpenOnWater() {
    if (this.data.waterAmount > 0) {
      if (this.data.isOpenTiming) {
        this.quantifyOpenTime();
      } else {
        this.quantifyOpen();
      }
    } else {
      wx.showToast({
        icon: 'error',
        title: '请选择或输入灌溉时间!',
      })
    }
  },//定量开阀式计划开阀
  quantifyOpenTime() {
    const app = getApp();
    wx.showLoading({
      title: '正在通信请稍候...', // 加载提示文字
      mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
    });
    const data = {
      intakeId: this.data.choseItem.intakeId, //取水口ID
      waterAmount: this.data.waterAmount, //水量
      operator: app.globalData.clientId, //操作员
      plannedOpenTime: this.data.openTime
    };
    post({
      url: "wx/valve/planed_open_quantify_close",
      data: data,
      timeout: 180000
    }).then(response => {
      // 处理成功响应
      console.log('请求成功:', response);
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      //完成后回到首页
      wx.reLaunch({
        url: '/pages/home/home?param=2' // 首页的路径,根据实际情况填写
      });
    }).catch(error => {
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      // 处理错误响应
      console.error('请求失败:', error);
      if (error.code === "ECONNABORTED" || error.message?.includes('timeout')) {
        // 处理超时错误
        this.setData({
          showErrorDialog: true,
          errorData: "通信超时,请稍后再试",
          errorDialogTitle: "开阀错误"
        })
      } else {
        this.setData({
          showErrorDialog: true,
          errorData: error.msg,
          errorDialogTitle: "开阀错误"
        })
      }
    });
  },//定量开阀
  quantifyOpen() {
    const app = getApp();
    wx.showLoading({
      title: '正在开阀请稍候...', // 加载提示文字
      mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
    });
    const data = {
      intakeId: this.data.choseItem.intakeId, //取水口ID
      waterAmount: this.data.waterAmount, //水量
      operator: app.globalData.clientId //操作员
    };
    post({
      url: "wx/valve/quantify_close",
      data: data,
      timeout: 180000
    }).then(response => {
      // 处理成功响应
      console.log('请求成功:', response);
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      //完成后回到首页
      wx.reLaunch({
        url: '/pages/home/home?param=1' // 首页的路径,根据实际情况填写
      });
    }).catch(error => {
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      // 处理错误响应
      console.error('请求失败:', error);
      if (error.code === "ECONNABORTED" || error.message?.includes('timeout')) {
        // 处理超时错误
        this.setData({
          showErrorDialog: true,
          errorData: "通信超时,请稍后再试",
          errorDialogTitle: "开阀错误"
        })
      } else {
        this.setData({
          showErrorDialog: true,
          errorData: error.msg,
          errorDialogTitle: "开阀错误"
        })
      }
    });
  },
})