AcidNeutralizationModel.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. Page({
  2. data: {
  3. result: '', // 存储计算结果
  4. init_pH: '',
  5. target_pH: '',
  6. OM: '', // 有机质含量
  7. CL: '', // 土壤粘粒重量
  8. H: '', // 氢离子含量
  9. Al: '', // 铝离子含量
  10. showModal: false, // 控制弹窗显示与隐藏
  11. },
  12. // 更新输入数据并验证
  13. validateInput: function(value) {
  14. // 正则表达式:只允许数字和小数点
  15. const regExp = /^[0-9]*\.?[0-9]*$/;
  16. // 如果输入符合格式,则返回,否则去掉最后一个字符
  17. return regExp.test(value) ? value : value.slice(0, -1);
  18. },
  19. // 更新土壤初始pH
  20. onInitPhChange: function (e) {
  21. this.setData({
  22. init_pH: this.validateInput(e.detail.value),
  23. });
  24. },
  25. // 更新土壤目标pH
  26. onTargetPhChange: function (e) {
  27. this.setData({
  28. target_pH: this.validateInput(e.detail.value),
  29. });
  30. },
  31. // 更新有机质含量
  32. onOMChange: function (e) {
  33. this.setData({
  34. OM: this.validateInput(e.detail.value),
  35. });
  36. },
  37. // 更新土壤粘粒重量
  38. onCLChange: function (e) {
  39. this.setData({
  40. CL: this.validateInput(e.detail.value),
  41. });
  42. },
  43. // 更新氢离子含量
  44. onHChange: function (e) {
  45. this.setData({
  46. H: this.validateInput(e.detail.value),
  47. });
  48. },
  49. // 更新铝离子含量
  50. onAlChange: function (e) {
  51. this.setData({
  52. Al: this.validateInput(e.detail.value),
  53. });
  54. },
  55. // 点击按钮后进行计算并提示结果
  56. calculate: function () {
  57. console.log('开始计算...');
  58. const data = {
  59. model_id: 6,
  60. parameters: {
  61. init_pH: this.data.init_pH,
  62. target_pH: this.data.target_pH,
  63. OM: this.data.OM,
  64. CL: this.data.CL,
  65. H: this.data.H,
  66. Al: this.data.Al,
  67. },
  68. };
  69. wx.request({
  70. url: 'https://soilgd.com:5000/predict',
  71. method: 'POST',
  72. data: JSON.stringify(data),
  73. header: {
  74. 'content-type': 'application/json',
  75. },
  76. success: (res) => {
  77. console.log('预测结果:', res.data.result);
  78. // 确保结果显示两位小数
  79. let result = res.data.result;
  80. if (result !== null && !isNaN(result)) {
  81. result = parseFloat(result).toFixed(2); // 将结果格式化为两位小数
  82. }
  83. // 更新计算结果
  84. this.setData({
  85. result: result,
  86. showModal: true, // 显示弹窗
  87. });
  88. },
  89. fail: (error) => {
  90. console.error('请求失败:', error);
  91. wx.showToast({
  92. title: '计算失败,请重试',
  93. icon: 'none',
  94. });
  95. },
  96. });
  97. },
  98. // 关闭弹窗
  99. closeModal: function () {
  100. this.setData({
  101. showModal: false, // 隐藏弹窗
  102. });
  103. },
  104. });