沙盘演示系统应用的微信小程序
zuoxiao
2024-10-12 d0ba104b6ee00b03a3433e66384952c4a4a892c4
pages/openCard/openCard.js
@@ -10,7 +10,7 @@
   */
  data: {
    intakeId: 0,
    showDialog: true,
    showDialog: false,
    vcId: "",
    activeIndex: -1,
    datetimeVisible: false,
@@ -21,9 +21,22 @@
    dialog_mode: true,
    dialog_time: false,
    dialog_water: false,
    group_time: false,
    openTime: "",
    isShowOpenTime: "false"
    group_time: false, //是否显示选择分钟或小时的单选框
    openTime: "", //计划开泵的开始时间
    openTimeText: "",
    isShowOpenTime: "false",
    isOpenTiming: false, //是否是计划开阀时间样式的开阀
    postMinutes: 0, //定灌溉时长的时间
    showForceConfirm: false,
    showErrorDialog: false, //错误提示
    errorData: "",
    confirmBtn: {
      content: '确认'
    },
    radioValue: "0", //开阀方式选中的类型
    costiomTime: "", //自定义灌溉时间
    waterAmount: 0, //定量开阀的水量
    costiomWater:"",//输入的自定义水量
  },
  openValva(event) {
    const {
@@ -36,53 +49,14 @@
      })
    } else if (item.inUse === false) {
      // 选择虚拟卡后
      this.initDialogData();
      this.setData({
        vcId: item.vcId,
        showDialog: true,
        dialog_mode: true,
        dialog_time: false,
        dialog_water: false
      })
    }
  },
  handleAutoIrrigation() {},
  //立即开泵
  postOpenValva() {
    const app = getApp();
    const data = {
      intakeId: this.data.intakeId, //取水口ID
      vcId: this.data.vcId, //虚拟卡ID
      operator: app.globalData.sessionId //操作员
    };
    post({
      url: "wx/valve/open_wx",
      data: data
    }).then(response => {
      // 处理成功响应
      console.log('请求成功:', response);
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      //完成后回到首页
      wx.reLaunch({
        url: '/pages/home/home?param=true' // 首页的路径,根据实际情况填写
      });
    }).catch(error => {
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      // 处理错误响应
      console.error('请求失败:', error);
      if (error.code === "1002") {
        wx.showToast({
          title: '开泵失败',
          icon: 'error',
          duration: 3000 // 提示的持续时间,单位毫秒
        })
      }
    });
  },
  postTimeOpen() {},
  /**
   * 生命周期函数--监听页面加载
   */
@@ -91,7 +65,7 @@
      intakeId
    } = options;
    this.setData({
      intakeId
      intakeId: intakeId
    })
    console.log('intakeId:' + this.data.intakeId);
    this.getCardList();
@@ -108,7 +82,7 @@
   * 生命周期函数--监听页面显示
   */
  onShow() {
    console.log("onShow>>>>" + this.data.isShowOpenTime)
  },
  /**
@@ -197,12 +171,34 @@
      showDialog: false
    })
  },
  handleMoneyWrapperTap: function (e) {
  //选择时间后的处理
  handleTimeWrapperTap(e) {
    const index = e.currentTarget.dataset.index;
    console.log(index)
    if (index !== undefined) {
      let minutes;
      if (this.data.irrigateProfile[index].unit === "1") {
        minutes = this.hourToMinutes(this.data.irrigateProfile[index].defaultValue)
      } else {
        minutes = this.data.irrigateProfile[index].defaultValue;
      }
      this.setData({
        activeIndex: parseInt(index),
        postMinutes: minutes,
        costiomTime: "",
        group_time: false,
      });
    }
  },
  // 选择水量后的处理
  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({
        activeIndex: parseInt(index),
        costiomWater:""
      });
    }
  },
@@ -243,36 +239,57 @@
  handleSetDuration() {
    this.getIrrigateProfileData(1);
  },
  onGroupChange(event) {
  onGroupOpenTimeChange(event) {
    const {
      value
    } = event.detail;
    console.log('Failed to add item:' + value);
    console.log('onGroupOpenTimeChange:' + value);
    if (value == 1) {
      this.showPicker();
      this.setData({
        isOpenTiming: true,
        radioValue: value,
      })
    } else {
      this.setData({
        isShowOpenTime: false
        isShowOpenTime: false,
        isOpenTiming: false,
        radioValue: value,
      })
    }
  },
  //显示时间选择器
  showPicker(e) {
    this.setData({
      datetime: new Date().getTime(),
      datetimeVisible: true,
      isShowOpenTime: true
    });
  },
  onTimeInputChange() {
    this.setData({
      group_time: true
    })
  onTimeInputChange(data) {
    console.log(data.detail.value)
    if (data.detail.value !== "") {
      this.setData({
        group_time: true,
        activeIndex: -1,
        postMinutes: parseInt(data.detail.value)
      })
    } else {
      this.setData({
        group_time: false,
        postMinutes: 0,
      })
    }
  },
  onConfirm(e) {
    const {
      value
    } = e?.detail;
    console.log(value);
    this.setData({
      openTime: "开阀时间:" + value
      openTime: value,
      openTimeText: "计划开阀时间:" + value
    })
  },
  handleSetWaterVolume() {
@@ -285,5 +302,315 @@
      dialog_mode: true,
      group_time: false
    })
  },
  //立即开泵
  postOpenValva(isforce) {
    wx.showLoading({
      title: '正在开阀请稍候...', // 加载提示文字
      mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
    });
    const app = getApp();
    const data = {
      intakeId: this.data.intakeId, //取水口ID
      vcId: this.data.vcId, //虚拟卡ID
      operator: app.globalData.sessionId, //操作员
      forceOpen: !!isforce // 使用逻辑非操作符 !! 来确保 isForce 是布尔值
    };
    post({
      url: "wx/valve/open_wx",
      data: data
    }).then(response => {
      // 处理成功响应
      console.log('请求成功:', response);
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      //完成后回到首页
      wx.reLaunch({
        url: '/pages/home/home?param=true' // 首页的路径,根据实际情况填写
      });
    }).catch(error => {
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      // 处理错误响应
      console.error('请求失败:', error);
      // if (error.code === "10005") {
      //   this.setData({
      //     showDialog: false,
      //     showForceConfirm: true
      //   })
      // } else {
      this.setData({
        showErrorDialog: true,
        errorData: error.msg
      })
      // }
    });
  },
  //定时关阀式开阀
  timeClose() {
    const app = getApp();
    wx.showLoading({
      title: '正在开阀请稍候...', // 加载提示文字
      mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
    });
    const data = {
      intakeId: this.data.intakeId, //取水口ID
      vcId: this.data.vcId, //虚拟卡ID
      minutes: this.data.postMinutes, //分钟
      operator: app.globalData.sessionId //操作员
    };
    post({
      url: "wx/valve/timed_close",
      data: data
    }).then(response => {
      // 处理成功响应
      console.log('请求成功:', response);
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      //完成后回到首页
      wx.reLaunch({
        url: '/pages/home/home?param=true' // 首页的路径,根据实际情况填写
      });
    }).catch(error => {
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      // 处理错误响应
      console.error('请求失败:', error);
      this.setData({
        showErrorDialog: true,
        errorData: error.msg
      })
    });
  },
  //定时关阀式计划开阀
  timeClosePlaned() {
    const app = getApp();
    wx.showLoading({
      title: '正在通信请稍候...', // 加载提示文字
      mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
    });
    const data = {
      intakeId: this.data.intakeId, //取水口ID
      vcId: this.data.vcId, //虚拟卡ID
      minutes: this.data.postMinutes, //分钟
      operator: app.globalData.sessionId, //操作员
      plannedOpenTime: this.data.openTime
    };
    post({
      url: "wx/valve/timed_close",
      data: data
    }).then(response => {
      // 处理成功响应
      console.log('请求成功:', response);
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      //完成后回到首页
      wx.reLaunch({
        url: '/pages/home/home?param=true' // 首页的路径,根据实际情况填写
      });
    }).catch(error => {
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      // 处理错误响应
      console.error('请求失败:', error);
      this.setData({
        showErrorDialog: true,
        errorData: error.msg
      })
    });
  },
  //定量开阀
  quantifyOpen() {
    const app = getApp();
    wx.showLoading({
      title: '正在开阀请稍候...', // 加载提示文字
      mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
    });
    const data = {
      intakeId: this.data.intakeId, //取水口ID
      vcId: this.data.vcId, //虚拟卡ID
      minutes: this.data.waterAmount, //水量
      operator: app.globalData.sessionId //操作员
    };
    post({
      url: "/wx/valve/quantify_close",
      data: data
    }).then(response => {
      // 处理成功响应
      console.log('请求成功:', response);
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      //完成后回到首页
      wx.reLaunch({
        url: '/pages/home/home?param=true' // 首页的路径,根据实际情况填写
      });
    }).catch(error => {
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      // 处理错误响应
      console.error('请求失败:', error);
      this.setData({
        showErrorDialog: true,
        errorData: error.msg
      })
    });
  },
  //定量开阀式计划开阀
  quantifyOpenTime() {
    const app = getApp();
    wx.showLoading({
      title: '正在通信请稍候...', // 加载提示文字
      mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
    });
    const data = {
      intakeId: this.data.intakeId, //取水口ID
      vcId: this.data.vcId, //虚拟卡ID
      waterAmount: this.data.waterAmount, //水量
      operator: app.globalData.sessionId, //操作员
      plannedOpenTime: this.data.openTime
    };
    post({
      url: "/wx/valve/planed_open_quantify_close",
      data: data
    }).then(response => {
      // 处理成功响应
      console.log('请求成功:', response);
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      //完成后回到首页
      wx.reLaunch({
        url: '/pages/home/home?param=true' // 首页的路径,根据实际情况填写
      });
    }).catch(error => {
      // 加载完成后隐藏加载动画
      wx.hideLoading();
      // 处理错误响应
      console.error('请求失败:', error);
      this.setData({
        showErrorDialog: true,
        errorData: error.msg
      })
    });
  },
  // 通过小时转换成分钟
  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;
  },
  //定时开泵按钮
  btnOpenOnTime() {
    if (this.data.postMinutes > 0) {
      if (this.data.isOpenTiming) {
        this.timeClosePlaned();
      } else {
        this.timeClose();
      }
    } else {
      wx.showToast({
        icon: 'error',
        title: '请选择或输入灌溉时间!',
      })
    }
  },
  cancelDialog() {
    this.setData({
      showForceConfirm: false
    });
  },
  //强制开阀
  confirmForceDialog() {
    this.postOpenValva(this.data.forceIntakeId, true);
  },
  //关闭错误提示
  closeErrorDialog() {
    this.setData({
      showErrorDialog: false
    })
  },
  hidePicker() {
    this.setData({
      isShowOpenTime: false,
      isOpenTiming: false,
      radioValue: "0"
    })
  },
  //初始化所有开泵的参数
  initDialogData() {
    this.setData({
      isShowOpenTime: "false",
      isOpenTiming: false, //是否是计划开阀时间样式的开阀
      postMinutes: 0, //定灌溉时长的时间
      showForceConfirm: false,
      showErrorDialog: false, //错误提示
      showDialog: true,
      dialog_mode: true,
      dialog_time: false,
      dialog_water: false,
      openTimeText: "",
      openTime: ""
    })
  },
  //定灌溉时长自定义输入时间时修改时间单位0:分钟,1:小时
  onGroupOpenTimeTypeChange(event) {
    let value = event.detail.value;
    if (value === "1") {
      this.setData({
        postMinutes: this.hourToMinutes(this.data.postMinutes)
      })
    } else {
      this.setData({
        postMinutes: this.minutesToHours(this.data.postMinutes)
      })
    }
  },
  //输入自定义水量的监听
  onWaterInputChange(data){
    console.log(data.detail.value)
    if (data.detail.value !== "") {
      this.setData({
        activeIndex: -1,
        waterAmount: parseInt(data.detail.value)
      })
    } else {
      this.setData({
        waterAmount: 0,
      })
    }
  },
  // 定量开泵按钮
  btnOpenOnWater(){
    if (this.data.waterAmount > 0) {
      if (this.data.isOpenTiming) {
        this.quantifyOpenTime();
      } else {
        this.quantifyOpen();
      }
    } else {
      wx.showToast({
        icon: 'error',
        title: '请选择或输入灌溉时间!',
      })
    }
  }
})