|  |  | 
 |  |  |     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 | 
 |  |  | 
 |  |  |       choseItem: event.currentTarget.dataset.item, | 
 |  |  |       allWaterPoints: [] | 
 |  |  |     }) | 
 |  |  |     //  console.log(intakeId); | 
 |  |  |     //   wx.navigateTo({ | 
 |  |  |     //     url: '/pages/openCard/openCard?intakeId='+intakeId, | 
 |  |  |     //   }) | 
 |  |  |  | 
 |  |  |     // 注意:initDialogData的调用移到了confirmDialog方法中 | 
 |  |  |   }, | 
 |  |  |   //开泵通信 | 
 |  |  |   /** | 
 |  |  | 
 |  |  |     }); | 
 |  |  |     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({ | 
 |  |  | 
 |  |  |       data: data, | 
 |  |  |       timeout: 180000 | 
 |  |  |     }).then(response => { | 
 |  |  |  | 
 |  |  |       // 处理成功响应 | 
 |  |  |       console.log('请求成功:', response); | 
 |  |  |       // 加载完成后隐藏加载动画 | 
 |  |  | 
 |  |  |       wx.reLaunch({ | 
 |  |  |         url: '/pages/home/home?param=true' // 首页的路径,根据实际情况填写 | 
 |  |  |       }); | 
 |  |  |  | 
 |  |  |     }).catch(error => { | 
 |  |  |       // 加载完成后隐藏加载动画 | 
 |  |  |       wx.hideLoading(); | 
 |  |  | 
 |  |  |           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: "开阀错误" | 
 |  |  |         }) | 
 |  |  |       } | 
 |  |  |     }); | 
 |  |  | 
 |  |  |           isRefreshing_all: false | 
 |  |  |         }); | 
 |  |  |         if (data.success && data.code === "0001") { | 
 |  |  |           if (!data.content) { | 
 |  |  |           let waterPoints = []; | 
 |  |  |            | 
 |  |  |           // 兼容新旧两种数据结构 | 
 |  |  |           if (data.content) { | 
 |  |  |             // 新数据结构:content直接包含取水口信息 | 
 |  |  |             if (data.content.intakeId) { | 
 |  |  |               waterPoints = [data.content]; | 
 |  |  |             } | 
 |  |  |             // 旧数据结构:content包含obj数组 | 
 |  |  |             else if (data.content.obj && Array.isArray(data.content.obj) && data.content.obj.length > 0) { | 
 |  |  |               waterPoints = data.content.obj; | 
 |  |  |             } | 
 |  |  |           } | 
 |  |  |            | 
 |  |  |           if (waterPoints.length === 0) { | 
 |  |  |             wx.showToast({ | 
 |  |  |               title: '没有搜索到取水口', | 
 |  |  |               icon: 'error', | 
 |  |  |             }) | 
 |  |  |           } else { | 
 |  |  |             this.setData({ | 
 |  |  |               allWaterPoints: [data.content] | 
 |  |  |               allWaterPoints: waterPoints | 
 |  |  |             }); | 
 |  |  |           } | 
 |  |  |  | 
 |  |  | 
 |  |  |     get({ | 
 |  |  |         url: 'wx/intake/used_intakes', | 
 |  |  |         data: { | 
 |  |  |           operatorId: getApp().globalData.operator | 
 |  |  |           operatorId: getApp().globalData.clientId | 
 |  |  |         } | 
 |  |  |       }) | 
 |  |  |       .then((data) => { | 
 |  |  | 
 |  |  |   }, | 
 |  |  |   confirmDialog() { | 
 |  |  |     this.setData({ | 
 |  |  |       showConfirm: false | 
 |  |  |         showConfirm: false | 
 |  |  |     }) | 
 |  |  |     this.postOpenValva(this.data.choseItem.intakeId); | 
 |  |  |     this.initDialogData(); | 
 |  |  |   }, | 
 |  |  |   closeDialog() { | 
 |  |  |     this.setData({ | 
 |  |  | 
 |  |  |       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); | 
 |  |  | 
 |  |  |       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: "开阀错误" | 
 |  |  |         }) | 
 |  |  |       } | 
 |  |  |     }); | 
 |  |  |   }, | 
 |  |  |   //定时关阀式开阀 | 
 |  |  | 
 |  |  |       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); | 
 |  |  | 
 |  |  |       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: "开阀错误" | 
 |  |  |         }) | 
 |  |  |       } | 
 |  |  |     }); | 
 |  |  |   }, | 
 |  |  | }) |