管灌系统农户端微信小程序(嘉峪关应用)
zuoxiao
2024-06-13 942677c74b9177ee6e66b95c81a5fad10719a0ec
pages/home/home.js
@@ -1,42 +1,32 @@
// 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",
    userCode: "张三",
    userName: "1005535",
    userBalance: "100.5元",
    userPhone: "158****0723",
    userName: "张三",
    scrollViewHeight: 0,
    listData: [{
        name: '取水口 1',
        code: '1055201'
      },
      {
        name: '取水口 2',
        code: '1055201'
      },
      {
        name: '取水口 3',
        code: '1055201'
      },
      {
        name: '取水口 3',
        code: '1055201'
      },
      {
        name: '取水口 3',
        code: '1055201'
      }
    ]
    listData: [],
    isRefreshing: false,
    isWXRefreshing: false
  },
  rechageTap:function (e) {
   wx.navigateTo({
     url: '/pages/recharge/recharge',
   })
  openValve: function (e) {
    wx.navigateTo({
      url: '/pages/waterIntake/waterIntake',
    })
  },
  calculateScrollViewHeight: function () {
    wx.createSelectorQuery().selectAll('.list-item').boundingClientRect((rects) => {
@@ -46,23 +36,72 @@
      });
    }).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();
  });
    // 使用 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();
  },
  /**
@@ -90,7 +129,15 @@
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    // 下拉刷新触发的逻辑,可以是请求数据等操作
    // 例如,请求数据后更新页面内容
    console.log(this.data.isRefreshing);
    this.setData({
      isWXRefreshing: true
    });
    console.log(this.data.isRefreshing);
    // 数据请求完成后,停止下拉刷新的动画
    this.getOpenList();
  },
  /**
@@ -105,5 +152,156 @@
   */
  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;
  }
})