Model Selection.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. Page({
  2. data: {
  3. // 定义数据类型
  4. Model_name: [
  5. { value: 'reduce_model', label: '降酸模型' },
  6. { value: 'reflux_model', label: '反酸模型' }
  7. ],
  8. selectedModelType: '', // 当前选择的模型类型
  9. selectedModelLabel: '', // 当前选择的模型类型标签
  10. modelList: [], // 从后端获取的所有模型数据
  11. filteredModelList: [], // 根据类型过滤后的模型列表
  12. selectedModelId: null // 当前选择的模型ID
  13. },
  14. onLoad: function () {
  15. // 页面加载时获取模型列表
  16. this.fetchModelList();
  17. },
  18. // 从后端获取模型数据
  19. fetchModelList: function () {
  20. wx.request({
  21. url: 'https://soilgd.com:5000/models', // 后端接口
  22. method: 'GET',
  23. success: (res) => {
  24. if (res.data) {
  25. // 格式化数据并存储
  26. const models = res.data.map(model => ({
  27. ModelType: model.ModelType,
  28. ModelID: model.ModelID,
  29. ModelName: model.ModelName, // 包含模型名称
  30. PerformanceScore: (Number(model.PerformanceScore) || 0).toFixed(2),
  31. MAE: (Number(model.MAE) || 0).toFixed(2),
  32. RMSE: (Number(model.RMSE) || 0).toFixed(2)
  33. }));
  34. this.setData({
  35. modelList: models,
  36. filteredModelList: [] // 初始为空,待选择模型类型后填充
  37. });
  38. } else {
  39. wx.showToast({
  40. title: '模型数据为空',
  41. icon: 'none'
  42. });
  43. }
  44. },
  45. fail: (err) => {
  46. console.error('获取模型列表失败', err);
  47. wx.showToast({
  48. title: '获取模型失败',
  49. icon: 'none'
  50. });
  51. }
  52. });
  53. },
  54. // 切换模型类型时过滤模型列表
  55. onModelTypeChange: function (e) {
  56. const selectedType = this.data.Model_name[e.detail.value];
  57. const filteredModels = this.data.modelList.filter(
  58. model => model.ModelName === selectedType.value // 根据模型名称进行过滤
  59. );
  60. this.setData({
  61. selectedModelType: selectedType.value, // 记录选择的类型
  62. selectedModelLabel: selectedType.label, // 对应显示标签
  63. filteredModelList: filteredModels // 更新展示的模型列表
  64. });
  65. },
  66. // 选择具体模型
  67. onModelSelect: function (e) {
  68. const { modelId } = e.currentTarget.dataset;
  69. this.setData({
  70. selectedModelId: modelId
  71. });
  72. },
  73. // 提交选择
  74. onSubmitModel: function () {
  75. const { selectedModelId, selectedModelType } = this.data;
  76. console.log(selectedModelId, selectedModelType)
  77. if (!selectedModelId || !selectedModelType) {
  78. wx.showToast({
  79. title: '请先选择模型类型和具体模型',
  80. icon: 'none'
  81. });
  82. return;
  83. }
  84. wx.request({
  85. url: 'https://soilgd.com:5000/switch-model',
  86. method: 'POST',
  87. header: {
  88. 'Content-Type': 'application/json'
  89. },
  90. data: {
  91. model_id: selectedModelId,
  92. model_type: selectedModelType
  93. },
  94. success: (res) => {
  95. if (res.data && res.data.success) {
  96. wx.showToast({
  97. title: '模型切换成功',
  98. icon: 'success'
  99. });
  100. } else {
  101. wx.showToast({
  102. title: '模型切换失败',
  103. icon: 'none'
  104. });
  105. }
  106. },
  107. fail: (err) => {
  108. console.error('切换模型失败', err);
  109. wx.showToast({
  110. title: '切换模型失败',
  111. icon: 'none'
  112. });
  113. }
  114. });
  115. }
  116. });