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, // 隐藏弹窗 }); }, });