管灌系统农户端微信小程序(嘉峪关应用)
pages/groupDetail/groupDetail.js
@@ -46,74 +46,157 @@
      refreshing: true
    });
    
    console.log('加载取水口数据,灌溉状态:', this.data.isIrrigating);
    console.log('开始加载轮灌组详情,groupId:', this.data.groupId);
    
    // 模拟数据
    let mockData = {
      waterOutlets: []
    };
    // 生成取水口数据,所有取水口都有命令状态
    mockData.waterOutlets = [
      {
        id: 1,
        name: '取水口 A-1',
        status: 'online',
        commandStatus: 'sent' // 命令已下发
      },
      {
        id: 2,
        name: '取水口 A-2',
        status: 'online',
        commandStatus: 'unsent' // 命令未下发
      },
      {
        id: 3,
        name: '取水口 A-3',
        status: 'offline',
        commandStatus: 'unsent' // 命令未下发
    // 检查apiBaseUrl是否存在
    if (!app.globalData.apiBaseUrl) {
      try {
        // 从config模块获取基础URL
        const config = require('../../api/config');
        const { PROJECT_CONFIG } = require('../../utils/projectConfig');
        // 获取当前选中的项目标识
        const tag = wx.getStorageSync('projectTag') || app.globalData.tag || 'mq';
        // 根据tag找到对应项目配置
        let selectedProject = 'MQ'; // 默认为民勤项目
        for (const key in PROJECT_CONFIG) {
          if (PROJECT_CONFIG[key].tag === tag) {
            selectedProject = key;
            break;
          }
        }
        // 设置apiBaseUrl
        app.globalData.apiBaseUrl = PROJECT_CONFIG[selectedProject].serverUrl;
        console.log('从配置中获取apiBaseUrl:', app.globalData.apiBaseUrl);
      } catch (error) {
        console.error('获取apiBaseUrl失败:', error);
        // 使用请求库中的方法
        const { get } = require('../../api/request');
        get({
          url: '/wx/irrigation/getGroupDetails',
          data: { groupId: this.data.groupId },
          isShowLoding: true
        }).then(res => {
          if (res.success) {
            this.handleGroupDetailsResponse(res);
          } else {
            wx.showToast({
              title: res.msg || '获取数据失败',
              icon: 'none'
            });
          }
        }).catch(err => {
          console.error('请求失败:', err);
          wx.showToast({
            title: '网络错误',
            icon: 'none'
          });
        }).finally(() => {
          this.setData({
            refreshing: false
          });
        });
        return; // 已经使用请求库处理,直接返回
      }
    ];
    }
    
    // 模拟网络请求延迟
    setTimeout(() => {
    // 使用wx.request发送请求
    wx.request({
      url: `${app.globalData.apiBaseUrl}/wx/irrigation/getGroupDetails`,
      method: 'GET',
      data: {
        groupId: this.data.groupId
      },
      header: {
        'content-type': 'application/json',
        'Authorization': wx.getStorageSync('token') || '',
        'tag': wx.getStorageSync('projectTag') || app.globalData.tag || '',
        'appId': app.globalData.AppID || ''
      },
      success: (res) => {
        console.log('轮灌组详情接口返回:', res.data);
        if (res.data && res.data.success) {
          this.handleGroupDetailsResponse(res.data);
        } else {
          wx.showToast({
            title: res.data.msg || '获取数据失败',
            icon: 'none'
          });
          this.setData({
            refreshing: false
          });
        }
      },
      fail: (err) => {
        console.error('请求失败:', err);
        // 尝试使用请求库重试
        this.retryUsingRequestLib();
      }
    });
  },
  /**
   * 使用请求库重试获取数据
   */
  retryUsingRequestLib: function() {
    console.log('使用请求库重试获取数据');
    const { get } = require('../../api/request');
    get({
      url: '/wx/irrigation/getGroupDetails',
      data: { groupId: this.data.groupId },
      isShowLoding: true
    }).then(res => {
      if (res.success) {
        this.handleGroupDetailsResponse(res);
      } else {
        wx.showToast({
          title: res.msg || '获取数据失败',
          icon: 'none'
        });
      }
    }).catch(err => {
      console.error('请求库重试失败:', err);
      wx.showToast({
        title: '网络错误',
        icon: 'none'
      });
    }).finally(() => {
      this.setData({
        waterOutletList: mockData.waterOutlets,
        refreshing: false
      });
      console.log('设置取水口数据完成:', this.data.waterOutletList);
    }, 1000);
    });
  },
  /**
   * 处理轮灌组详情响应数据
   */
  handleGroupDetailsResponse: function(response) {
    const data = response.content;
    
    // 实际项目中应该使用wx.request获取数据
    // wx.request({
    //   url: `https://your-api-url/groups/${this.data.groupId}/waterOutlets`,
    //   method: 'GET',
    //   success: (res) => {
    //     if (res.data && res.data.code === 0) {
    //       this.setData({
    //         waterOutletList: res.data.data.waterOutlets,
    //         refreshing: false
    //       });
    //     } else {
    //       wx.showToast({
    //         title: '获取数据失败',
    //         icon: 'none'
    //       });
    //       this.setData({
    //         refreshing: false
    //       });
    //     }
    //   },
    //   fail: () => {
    //     wx.showToast({
    //       title: '网络错误',
    //       icon: 'none'
    //     });
    //     this.setData({
    //       refreshing: false
    //     });
    //   }
    // });
    // 处理取水口数据
    const waterOutletList = data.intakes.map(item => {
      return {
        id: item.rtuAddr, // 使用rtuAddr作为ID
        name: item.intakeName,
        rtuAddr: item.rtuAddr,
        status: item.isOnLine ? 'online' : 'offline'
      };
    });
    this.setData({
      projectName: data.projectName || this.data.projectName,
      groupName: data.groupName || this.data.groupName,
      waterOutletList: waterOutletList,
      refreshing: false
    });
    console.log('设置取水口数据完成:', this.data.waterOutletList);
  },
  /**