Page({
  data: {
    result: '', // 用于存储计算结果
    OM: '', // 有机质含量
    CL: '', // 土壤粘粒重量
    CEC: '', // 阳离子交换量
    H_plus: '', // 氢离子含量
    N: '', // 铵离子含量
    Al3_plus: '', // 铝离子含量
    delta_ph: '',
    showResultPopup: false, // 控制弹窗显示与否
  },

  // 仅允许输入数字或小数点
  validateNumberInput: function(value) {
    // 正则表达式：只允许数字和小数点
    const regExp = /^[0-9]*\.?[0-9]*$/;
    if (regExp.test(value)) {
      return value;
    }
    return value.slice(0, -1); // 删除最后一个字符
  },

  // 更新有机质含量
  onOMChange: function(e) {
    this.setData({
      OM: this.validateNumberInput(e.detail.value)
    });
  },

  // 更新土壤粘粒重量
  onCLChange: function(e) {
    this.setData({
      CL: this.validateNumberInput(e.detail.value)
    });
  },

  // 更新阳离子交换量
  onCECChange: function(e) {
    this.setData({
      CEC: this.validateNumberInput(e.detail.value)
    });
  },

  // 更新氢离子含量
  onH_plusChange: function(e) {
    this.setData({
      H_plus: this.validateNumberInput(e.detail.value)
    });
  },

  // 更新铵离子含量
  onNChange: function(e) {
    this.setData({
      N: this.validateNumberInput(e.detail.value)
    });
  },

  // 更新铝离子含量
  onAl3_plusChange: function(e) {
    this.setData({
      Al3_plus: this.validateNumberInput(e.detail.value)
    });
  },
  onDeltaPhChange: function(e) {
    this.setData({
      delta_ph: this.validateNumberInput(e.detail.value)
    });
  },

  // 计算方法
  calculate: function() {
    console.log('开始计算...');
    const data = {
      model_id: 24,
      parameters: {
        organic_matter: this.data.OM,
        chloride: this.data.CL,
        cec: this.data.CEC,
        h_concentration: this.data.H_plus,
        n: this.data.N,
        al_concentration: this.data.Al3_plus,
      },
    };

    wx.request({
      url: 'https://soilgd.com:5000/predict',
      method: 'POST',
      data: JSON.stringify(data),
      header: {
        'content-type': 'application/json' 
      },
      success: (res) => {
        console.log('预测结果:', res.data.predictions);

        // 直接更新页面的 result
        if (res.data.result && Array.isArray(res.data.result)) {
          const result = res.data.result[0] ? res.data.result[0].toString() : '无结果';
          this.setData({
            result: parseFloat(result).toFixed(2),
            showResultPopup: true, // 显示弹窗
          });
        } else {
          console.error('返回数据格式错误');
          wx.showToast({
            title: '预测结果无效',
            icon: 'none'
          });
        }
      },
      fail: (error) => {
        console.error('请求失败:', error);
        wx.showToast({
          title: '请求失败，请重试',
          icon: 'none'
        });
      }
    });
  },

  // 关闭弹窗
  closePopup: function() {
    this.setData({
      showResultPopup: false, // 隐藏弹窗
    });
  },

  // 页面加载时
  onLoad: function(options) {
    // 页面加载时，不再处理解码
  },
});
