Page({
  data: {
    result: '', // 存储计算结果
    init_pH: '',
    target_pH: '',
    OM: '', // 有机质含量
    CL: '', // 土壤粘粒重量
    H: '', // 氢离子含量
    Al: '', // 铝离子含量
    showModal: false, // 控制弹窗显示与隐藏
  },

  // 更新输入数据并验证
  validateInput: function(value) {
    // 正则表达式：只允许数字和小数点
    const regExp = /^[0-9]*\.?[0-9]*$/;
    // 如果输入符合格式，则返回，否则去掉最后一个字符
    return regExp.test(value) ? value : value.slice(0, -1);
  },

  // 更新土壤初始pH
  onInitPhChange: function (e) {
    this.setData({
      init_pH: this.validateInput(e.detail.value),
    });
  },

  // 更新土壤目标pH
  onTargetPhChange: function (e) {
    this.setData({
      target_pH: this.validateInput(e.detail.value),
    });
  },

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

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

  // 更新氢离子含量
  onHChange: function (e) {
    this.setData({
      H: this.validateInput(e.detail.value),
    });
  },

  // 更新铝离子含量
  onAlChange: function (e) {
    this.setData({
      Al: this.validateInput(e.detail.value),
    });
  },

  // 点击按钮后进行计算并提示结果
calculate: function () {
  console.log('开始计算...');
  const data = {
    model_id: 6,
    parameters: {
      init_pH: this.data.init_pH,
      target_pH: this.data.target_pH,
      OM: this.data.OM,
      CL: this.data.CL,
      H: this.data.H,
      Al: this.data.Al,
    },
  };

  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.result);

      // 确保结果显示两位小数
      let result = res.data.result;
      if (result !== null && !isNaN(result)) {
        result = parseFloat(result).toFixed(2);  // 将结果格式化为两位小数
      }

      // 更新计算结果
      this.setData({
        result: result,
        showModal: true, // 显示弹窗
      });
    },
    fail: (error) => {
      console.error('请求失败:', error);
      wx.showToast({
        title: '计算失败，请重试',
        icon: 'none',
      });
    },
  });
},

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