// 开阀选择虚拟卡 const { get, post } = require('../../api/request.js'); Page({ /** * 页面的初始数据 */ data: { intakeId: 0, showDialog: false, vcId: "", activeIndex: -1, datetimeVisible: false, dateStartTime: new Date().getTime(), dateEndTime: new Date().getTime() + 24 * 60 * 60 * 1000, datetimeText: '', allCardPoints: [], // 所有虚拟卡 irrigateProfile: [], //获取所选灌溉方式的详细数据 dialog_mode: true, dialog_time: false, dialog_water: 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: "", //输入的自定义水量 isWXRefreshing: false, intakeName: "" //扫码开阀从首页传来的取水口名称 }, openValva(event) { const { item } = event.currentTarget.dataset; // 获取当前点击的 item if (item.isAlarmValue === true) { //金额报警 wx.navigateTo({ url: '/pages/rechargeMoney/rechargMoney?vcId=' + item.id, }) } else if (item.inUse === false) { this.setData({ vcId: item.id, }) if (this.data.intakeName) { //扫码开阀逻辑 this.postOpenValva(false); } else { // 选择虚拟卡后 this.initDialogData(); } } }, handleAutoIrrigation() {}, /** * 生命周期函数--监听页面加载 */ onLoad(options) { const { intakeId, intakeName } = options; this.setData({ intakeId: intakeId, intakeName: intakeName }) console.log('intakeId:' + this.data.intakeId); this.getCardList(); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { console.log("onShow>>>>" + this.data.isShowOpenTime) }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { this.setData({ isWXRefreshing: true }); this.getCardList(); }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { }, //获取虚拟卡列表 getCardList() { get({ url: 'wx/virtual_card/get', data: { clientId: getApp().globalData.clientId } }) .then((data) => { if (data.success && data.code === "0001") { this.setData({ allCardPoints: data.content }); this.updateDisplayText(); } else { wx.showToast({ title: data.msg, }) } console.log('Failed to add item:'); }) .catch((error) => { console.error('Failed to add item:', error); }); }, updateDisplayText() { const updatedList = this.data.allCardPoints.map(item => { let displayText = ''; if (item.inUse) { displayText = '使用中'; } else { if (item.isAlarmValue) { displayText = '充值'; } else { displayText = '选择'; } } return { ...item, displayText }; // 保留所有其他字段,并添加 displayText 字段 }); // 更新列表数据 this.setData({ allCardPoints: updatedList, isWXRefreshing: false }); }, handleClost() { this.setData({ showDialog: false }) }, //选择时间后的处理 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: "" }); } }, //获取常用用水时长及用水量 getIrrigateProfileData(type) { get({ url: 'wx/valve/irrigate_profile', data: { type: type } }) .then((data) => { if (data.success && data.code === "0001") { const items = data.content.obj.map(item => { return { defaultValue: item.defaultValue, unit: item.unit, unitText: item.unit === "1" ? "小时" : item.unit === "2" ? "分钟" : "立方米" }; }); this.setData({ dialog_mode: false, dialog_time: type === 1, dialog_water: type === 2, irrigateProfile: items }); } else { wx.showToast({ title: data.msg, }) } console.log('Failed to add item:'); }) .catch((error) => { console.error('Failed to add item:', error); }); }, handleSetDuration() { this.getIrrigateProfileData(1); }, onGroupOpenTimeChange(event) { const { value } = event.detail; console.log('onGroupOpenTimeChange:' + value); if (value == 1) { this.showPicker(); this.setData({ isOpenTiming: true, radioValue: value, dateStartTime: new Date().getTime() }) } else { this.setData({ isShowOpenTime: false, isOpenTiming: false, radioValue: value, }) } }, //显示时间选择器 showPicker(e) { this.setData({ datetime: new Date().getTime(), datetimeVisible: true, isShowOpenTime: 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, openTimeText: "计划开阀时间:" + value }) }, handleSetWaterVolume() { this.getIrrigateProfileData(2); }, dialogBack() { this.setData({ dialog_time: false, dialog_water: false, dialog_mode: true, group_time: false, activeIndex: -1 }) }, //立即开泵 postOpenValva(isforce) { wx.showLoading({ title: '正在开阀请稍候...', // 加载提示文字 mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false }); const app = getApp(); const data = { intakeId: this.data.intakeId, //取水口ID vcId: this.data.vcId, //虚拟卡ID intakeName: this.data.intakeName, //取水口名称 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=1' // 首页的路径,根据实际情况填写 }); }).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=1' // 首页的路径,根据实际情况填写 }); }).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/planed_open_timed_close", data: data }).then(response => { // 处理成功响应 console.log('请求成功:', response); // 加载完成后隐藏加载动画 wx.hideLoading(); //完成后回到首页 wx.reLaunch({ url: '/pages/home/home?param=2' // 首页的路径,根据实际情况填写 }); }).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 waterAmount: 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=1' // 首页的路径,根据实际情况填写 }); }).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=2' // 首页的路径,根据实际情况填写 }); }).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: '请选择或输入灌溉时间!', }) } }, })