// pages/home/home.js const storage = require('../../utils/storage.js'); const { get, post } = require('../../api/request.js'); Page({ /** * 页面的初始数据 */ data: { sessionId: "", showConfirm: false, myItem: {}, waterIntakeName: "", image: "/images/ic_head_bg.jpg", userPhone: "158****0723", userName: "张三", scrollViewHeight: 0, listData: [], isRefreshing: false, isWXRefreshing: false }, openValve: function (e) { wx.navigateTo({ url: '/pages/waterIntake/waterIntake', }) }, calculateScrollViewHeight: function () { wx.createSelectorQuery().selectAll('.list-item').boundingClientRect((rects) => { let totalHeight = rects.reduce((sum, rect) => sum + rect.height, 0); this.setData({ scrollViewHeight: totalHeight, }); }).exec(); }, startPullDownRefresh() { if (!this.data.isWXRefreshing) { var self = this; console.log(this.data.isRefreshing); this.setData({ isRefreshing: true }); this.getOpenList(); } }, //获取用户数据 getUserData() { get('/items') .then((data) => { this.setData({ items: data }); }) .catch((error) => { console.error('Failed to fetch data:', error); }); }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { // 使用 wx.nextTick 等待页面渲染完成 wx.nextTick(() => { this.calculateScrollViewHeight(); }); //当开阀成功后调用刷新 console.log("onLoad:" + options.param); if (options.param) { wx.showToast({ title: '开阀成功', icon: 'success', duration: 3000 }) this.getOpenList(); } this.getUserDataBySession(); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { //判断本地是否保存sessionId if (storage.isHasKeySync("sessionId")) { storage.getItem('sessionId').then((data) => { this.setData({ sessionId: data }); if (sessionId !== "") {} }).catch((err) => { console.error('Failed to load parameter:', err); }); } else { console.log('Failed to load parameter:false'); } this.getOpenList(); }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { // 下拉刷新触发的逻辑,可以是请求数据等操作 // 例如,请求数据后更新页面内容 console.log(this.data.isRefreshing); this.setData({ isWXRefreshing: true }); console.log(this.data.isRefreshing); // 数据请求完成后,停止下拉刷新的动画 this.getOpenList(); }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { }, recharge() { // wx.navigateTo({ // url: '/pages/rechargeCard/rechargeCard', // }) wx.showToast({ title: '暂未开放', icon: 'none' }) }, openValveList() { // wx.navigateTo({ // url: '/pages/valveList/valveList', // }) wx.showToast({ title: '暂未开放', icon: 'none' }) }, feedBack() { wx.showToast({ title: '暂未开放', icon: 'none' }) }, handleChange(e) { const item = e.currentTarget.dataset.item; console.log(item); this.setData({ showConfirm: true, waterIntakeName: item.intakeNum, myItem: item }); }, closeDialog() { this.setData({ showConfirm: false }); }, /** * 关闭阀门 * @param {*} orderNo 订单号 * @param {*} rtuAddr 阀控器地址 * @param {*} vcNum 虚拟卡编号 */ postCloseValaue(orderNo, rtuAddr, vcNum) { wx.showLoading({ title: '正在关阀请稍候...', // 加载提示文字 mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false }); const app = getApp(); const data = { rtuAddr: rtuAddr, vcNum: vcNum, //虚拟卡ID orderNo: orderNo, operator: app.globalData.sessionId //操作员 }; console.log("postCloseValaue" + data); post({ url: "wx/valve/close_wx", data: data, isShowLoding: false }).then(response => { // 处理成功响应 console.log('请求成功:', response); // 加载完成后隐藏加载动画 wx.hideLoading(); this.getOpenList(); wx.showToast({ title: '关阀成功', icon: 'success', duration: 3000 }) }).catch(error => { wx.hideLoading(); if (error.code === "1002") { wx.showToast({ title: '关阀失败', icon: 'error', duration: 3000 // 提示的持续时间,单位毫秒 }) } // 处理错误响应 console.error('请求失败:', error); }); }, /** * 获取为关阀记录 */ getOpenList() { const app = getApp(); const params = { url: 'wx/valve/get', data: { operator: app.globalData.sessionId } }; get(params).then(data => { this.setData({ listData: data.content, isRefreshing: false, // 将triggered属性设置为false,表示下拉刷新已完成 isWXRefreshing: false, // 将triggered属性设置为false,表示下拉刷新已完成 }) }).catch(err => { // 错误回调 this.setData({ isRefreshing: false, // 将triggered属性设置为false,表示下拉刷新已完成 }) }); }, /** * 确认关闭回调 * @param {} item */ confirmDialog() { this.setData({ showConfirm: false }); this.postCloseValaue(this.data.myItem.orderNo, this.data.myItem.rtuAddr, this.data.myItem.vcNum); }, //根据session获取农户信息 getUserDataBySession() { const app = getApp(); const params = { url: 'sell/client/simple_info', data: { sessionId: app.globalData.sessionId } }; get(params).then(data => { this.setData({ userName: data.content.clientName, userPhone: this.maskPhoneNumber(data.content.phone) }) }).catch(err => { // 错误回调 }) }, maskPhoneNumber(phoneNumber) { if (phoneNumber.length !== 11) { throw new Error("Phone number must be 11 digits"); } // 使用正则表达式替换中间四位数字为星号 const maskedPhoneNumber = phoneNumber.replace(/^(\d{3})\d{4}(\d{4})$/, "$1****$2"); return maskedPhoneNumber; } })