// pages/waterIntake/waterIntake.js
|
const {
|
get,
|
post
|
} = require('../../api/request.js');
|
Page({
|
data: {
|
currentTab: 0, // 当前显示的表格,默认为第一个表格
|
searchQuery: "",
|
commonWaterPoints: [], // 常用取水口数据
|
allWaterPoints: [], // 所有取水口数据
|
searchData: [{
|
intakeNum: "1111111"
|
}, {
|
intakeNum: "2222222"
|
}],
|
isRefreshing_all: false,
|
isRefreshing_common: false,
|
showConfirm: false,
|
waterIntakeName: "",
|
choseItem: null,
|
errorData: '', //错误内容
|
showErrorDialog: false,
|
confirmBtn: {
|
content: '确认'
|
},
|
showForceConfirm: false,
|
forceIntakeId: "", //强制开阀的取水口id
|
inputValue: "",
|
//以下为开阀弹窗相关
|
isShowOpenTime: "false",
|
isOpenTiming: false, //是否是计划开阀时间样式的开阀
|
postMinutes: 0, //定灌溉时长的时间
|
showForceConfirm: false,
|
showErrorDialog: false, //错误提示
|
showDialog: false,
|
dialog_mode: false,
|
dialog_time: false,
|
dialog_water: false,
|
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
|
switchTab: function (e) {
|
const tab = parseInt(e.currentTarget.dataset.tab);
|
this.setData({
|
currentTab: tab
|
});
|
},
|
onInput(e) {
|
this.setData({
|
searchQuery: e.detail.value // 将输入框的值存储到 inputValue
|
});
|
},
|
onSearch: function () {
|
const query = this.data.searchQuery;
|
if (query) {
|
this.getallWaterPoints(query)
|
// 在这里进行搜索操作,更新 allWaterPoints 数据
|
} else {
|
this.setData({
|
allWaterPoints: []
|
})
|
}
|
},
|
|
/**
|
* 选择虚拟卡
|
* @param {} event
|
*/
|
choseCard(event) {
|
//显示二次确认弹窗
|
this.setData({
|
// showConfirm: true,
|
choseItem: event.currentTarget.dataset.item,
|
allWaterPoints: []
|
|
})
|
this.initDialogData();
|
|
// console.log(intakeId);
|
// wx.navigateTo({
|
// url: '/pages/openCard/openCard?intakeId='+intakeId,
|
// })
|
|
},
|
//开泵通信
|
/**
|
*
|
* @param {*} intakeId 取水口id
|
* @param {*} isforce 是否强制开阀
|
*/
|
postOpenValva(intakeId, isforce) {
|
this.setData({
|
inputValue: ""
|
})
|
console.log("intakeId:" + intakeId + " isforce:" + isforce)
|
wx.showLoading({
|
title: '正在开阀请稍候...', // 加载提示文字
|
mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
|
});
|
const app = getApp();
|
const data = {
|
intakeId: this.data.choseItem.intakeId, //取水口ID
|
// vcId: app.globalData.vcId, //虚拟卡ID
|
operator: app.globalData.clientId, //操作员
|
forceOpen: !!isforce // 使用逻辑非操作符 !! 来确保 isForce 是布尔值
|
};
|
post({
|
url: "wx/valve/open_wx",
|
data: data,
|
timeout: 180000
|
}).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({
|
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,
|
errorDialogTitle: "开阀错误"
|
})
|
}
|
});
|
},
|
|
/**
|
* 生命周期函数--监听页面加载
|
*/
|
onLoad(options) {
|
|
},
|
|
/**
|
* 生命周期函数--监听页面初次渲染完成
|
*/
|
onReady() {
|
this.getcommonWaterPoints();
|
},
|
|
/**
|
* 生命周期函数--监听页面显示
|
*/
|
onShow() {
|
|
},
|
|
/**
|
* 生命周期函数--监听页面隐藏
|
*/
|
onHide() {
|
|
},
|
|
/**
|
* 生命周期函数--监听页面卸载
|
*/
|
onUnload() {
|
|
},
|
|
|
|
|
/**
|
* 页面上拉触底事件的处理函数
|
*/
|
onReachBottom() {
|
|
},
|
|
/**
|
* 用户点击右上角分享
|
*/
|
onShareAppMessage() {
|
|
},
|
/**
|
*在所有取水口搜索
|
*/
|
getallWaterPoints: function (intakeNum) {
|
let params = {
|
url: 'wx/intake/all_intakes'
|
};
|
if (intakeNum) {
|
params.data = {
|
intakeNum: intakeNum
|
};
|
}
|
get(params)
|
.then((data) => {
|
this.setData({
|
isRefreshing_all: false
|
});
|
if (data.success && data.code === "0001") {
|
if (!data.content) {
|
wx.showToast({
|
title: '没有搜索到取水口',
|
icon: 'error',
|
})
|
} else {
|
this.setData({
|
allWaterPoints: [data.content]
|
});
|
}
|
|
} else {
|
wx.showToast({
|
title: data.msg,
|
})
|
}
|
console.log('Failed to add item:');
|
})
|
.catch((error) => {
|
this.setData({
|
isRefreshing_all: false
|
});
|
wx.showToast({
|
title: error.msg,
|
icon: 'error',
|
duration: 3000 // 提示的持续时间,单位毫秒
|
})
|
console.error('Failed to add item:', error);
|
});
|
},
|
//获取常用取水口
|
getcommonWaterPoints() {
|
get({
|
url: 'wx/intake/used_intakes',
|
data: {
|
operatorId: getApp().globalData.clientId
|
}
|
})
|
.then((data) => {
|
this.setData({
|
isRefreshing_common: false
|
});
|
if (data.success && data.code === "0001") {
|
this.setData({
|
commonWaterPoints: data.content
|
});
|
} else {
|
wx.showToast({
|
title: data.msg,
|
})
|
}
|
console.log('Failed to add item:');
|
})
|
.catch((error) => {
|
this.setData({
|
isRefreshing_common: false
|
});
|
wx.showToast({
|
title: error.msg,
|
icon: 'error',
|
duration: 3000 // 提示的持续时间,单位毫秒
|
})
|
console.error('Failed to add item:', error);
|
});
|
},
|
/**
|
* 页面相关事件处理函数--监听用户下拉动作
|
*/
|
onPullDownRefresh_all() {
|
this.getallWaterPoints();
|
},
|
onPullDownRefresh_common() {
|
this.getcommonWaterPoints();
|
},
|
confirmDialog() {
|
// this.setData({
|
// showConfirm: false
|
// })
|
// this.postOpenValva(this.data.choseItem.intakeId);
|
this.setData({
|
showConfirm: false
|
})
|
this.initDialogData();
|
},
|
closeDialog() {
|
this.setData({
|
showConfirm: false
|
})
|
},
|
closeErrorDialog() {
|
this.setData({
|
showErrorDialog: false
|
})
|
},
|
cancelDialog() {
|
this.setData({
|
showForceConfirm: false
|
});
|
},
|
//强制开阀
|
confirmForceDialog() {
|
this.postOpenValva(this.data.forceIntakeId, true);
|
},
|
closeSearch() {
|
this.setData({
|
allWaterPoints: [],
|
inputValue: ""
|
})
|
},
|
|
//以下为定时定量相关代码
|
//初始化所有开泵的参数
|
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: ""
|
})
|
},
|
handleClost() {
|
this.setData({
|
showDialog: false
|
})
|
},
|
handleSetDuration() {
|
this.getIrrigateProfileData(1);
|
},
|
//获取常用用水时长及用水量
|
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);
|
});
|
},
|
handleSetWaterVolume() {
|
this.getIrrigateProfileData(2);
|
},
|
dialogBack() {
|
this.setData({
|
dialog_time: false,
|
dialog_water: false,
|
dialog_mode: true,
|
group_time: false,
|
activeIndex: -1
|
})
|
},
|
//选择时间后的处理
|
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,
|
});
|
}
|
},
|
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,
|
})
|
}
|
|
},
|
//定灌溉时长自定义输入时间时修改时间单位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)
|
})
|
}
|
},
|
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,
|
})
|
}
|
},
|
//定时开泵按钮
|
btnOpenOnTime() {
|
if (this.data.postMinutes > 0) {
|
if (this.data.isOpenTiming) {
|
this.timeClosePlaned();
|
} else {
|
this.timeClose();
|
}
|
} else {
|
wx.showToast({
|
icon: 'error',
|
title: '请选择或输入灌溉时间!',
|
})
|
}
|
},
|
//定时关阀式计划开阀
|
timeClosePlaned() {
|
const app = getApp();
|
wx.showLoading({
|
title: '正在通信请稍候...', // 加载提示文字
|
mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
|
});
|
const data = {
|
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,
|
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: "开阀错误"
|
})
|
}
|
});
|
},
|
//定时关阀式开阀
|
timeClose() {
|
const app = getApp();
|
wx.showLoading({
|
title: '正在开阀请稍候...', // 加载提示文字
|
mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
|
});
|
const data = {
|
intakeId: this.data.choseItem.intakeId, //取水口ID
|
minutes: this.data.postMinutes, //分钟
|
operator: app.globalData.clientId //操作员
|
};
|
post({
|
url: "wx/valve/timed_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: "开阀错误"
|
})
|
}
|
});
|
},
|
// 通过小时转换成分钟
|
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({
|
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: "开阀错误"
|
})
|
}
|
});
|
},
|
})
|