瀏覽代碼

灌溉水支持不同土地类型自定义计算

yangtaodemon 3 月之前
父節點
當前提交
33da733903
共有 1 個文件被更改,包括 81 次插入26 次删除
  1. 81 26
      src/views/User/HmOutFlux/irrigationWater/irriWaterInputFlux.vue

+ 81 - 26
src/views/User/HmOutFlux/irrigationWater/irriWaterInputFlux.vue

@@ -18,19 +18,21 @@
                   <div class="input-column">
                     <div class="input-title">灌溉水用量 (m³/亩/年)</div>
                     <el-input
-                      v-model="irrigationWaterUsage"
+                      v-model="waterParams.irrigationWater"
                       placeholder="711"
                       size="large"
                       class="fixed-width-input"
+                      :disabled="!selectedLandTypes.includes('water')"
                     />
                   </div>
                   <div class="input-column">
                     <div class="input-title">有效利用率</div>
                     <el-input
-                      v-model="irrigationEfficiency"
+                      v-model="waterParams.utilizationRate"
                       placeholder="0.524"
                       size="large"
                       class="fixed-width-input"
+                      :disabled="!selectedLandTypes.includes('water')"
                     />
                   </div>
                 </div>
@@ -46,19 +48,21 @@
                   <div class="input-column">
                     <div class="input-title">灌溉水用量 (m³/亩/年)</div>
                     <el-input
-                      v-model="irrigatedWaterUsage"
+                      v-model="irrigatedParams.irrigationWater"
                       placeholder="427"
                       size="large"
                       class="fixed-width-input"
+                      :disabled="!selectedLandTypes.includes('irrigated')"
                     />
                   </div>
                   <div class="input-column">
                     <div class="input-title">有效利用率</div>
                     <el-input
-                      v-model="irrigatedEfficiency"
+                      v-model="irrigatedParams.utilizationRate"
                       placeholder="0.599"
                       size="large"
                       class="fixed-width-input"
+                      :disabled="!selectedLandTypes.includes('irrigated')"
                     />
                   </div>
                 </div>
@@ -74,19 +78,21 @@
                   <div class="input-column">
                     <div class="input-title">灌溉水用量 (m³/亩/年)</div>
                     <el-input
-                      v-model="dryWaterUsage"
+                      v-model="dryParams.irrigationWater"
                       placeholder="200"
                       size="large"
                       class="fixed-width-input"
+                      :disabled="!selectedLandTypes.includes('dry')"
                     />
                   </div>
                   <div class="input-column">
                     <div class="input-title">有效利用率</div>
                     <el-input
-                      v-model="dryEfficiency"
+                      v-model="dryParams.utilizationRate"
                       placeholder="0.7"
                       size="large"
                       class="fixed-width-input"
+                      :disabled="!selectedLandTypes.includes('dry')"
                     />
                   </div>
                 </div>
@@ -256,12 +262,23 @@ export default {
   setup() {
     // 计算页面数据
     const selectedLandTypes = ref(['water']);
-    const irrigationWaterUsage = ref('711');
-    const irrigationEfficiency = ref('0.524');
-    const irrigatedWaterUsage = ref('427');
-    const irrigatedEfficiency = ref('0.599');
-    const dryWaterUsage = ref('200');
-    const dryEfficiency = ref('0.7');
+    
+    // 为每种土地类型创建单独的参数对象
+    const waterParams = ref({
+      irrigationWater: '711',
+      utilizationRate: '0.524'
+    });
+    
+    const irrigatedParams = ref({
+      irrigationWater: '427',
+      utilizationRate: '0.599'
+    });
+    
+    const dryParams = ref({
+      irrigationWater: '200',
+      utilizationRate: '0.7'
+    });
+    
     const showCalculation = ref(true);
     const showResults = ref(false);
     const loading = ref(false);
@@ -355,17 +372,58 @@ export default {
         const landTypesChinese = selectedLandTypes.value.map(type => landTypeMap[type]);
         const landTypeParam = landTypesChinese.join('_');
         
-        mapImageUrl.value = await fetchDefaultMap(landTypeParam);
-        histogramImageUrl.value = await fetchDefaultHistogram(landTypeParam);
-        statisticsData.value = await fetchStatistics(landTypeParam);
+        // 创建FormData对象用于发送POST请求
+        const formData = new FormData();
+        
+        // 添加土地类型
+        landTypesChinese.forEach(type => {
+          formData.append('land_types', type);
+        });
+        
+        // 添加每种土地类型的参数(如果该类型被选中)
+        if (selectedLandTypes.value.includes('water')) {
+          formData.append('paddy_irrigation_water', parseFloat(waterParams.value.irrigationWater) || 711);
+          formData.append('paddy_utilization_rate', parseFloat(waterParams.value.utilizationRate) || 0.524);
+        }
         
-        showCalculation.value = false;
-        showResults.value = true;
+        if (selectedLandTypes.value.includes('irrigated')) {
+          formData.append('irrigated_irrigation_water', parseFloat(irrigatedParams.value.irrigationWater) || 427);
+          formData.append('irrigated_utilization_rate', parseFloat(irrigatedParams.value.utilizationRate) || 0.599);
+        }
         
-        ElMessage.success('计算完成,结果已展示');
+        if (selectedLandTypes.value.includes('dry')) {
+          formData.append('dry_irrigation_water', parseFloat(dryParams.value.irrigationWater) || 200);
+          formData.append('dry_utilization_rate', parseFloat(dryParams.value.utilizationRate) || 0.7);
+        }
+        
+        // 添加其他参数(使用默认值)
+        formData.append('color_map_name', '绿-黄-红-紫');
+        formData.append('output_size', 8);
+        
+        // 发送计算请求
+        const response = await api8000.post('/api/water/calculate', formData, {
+          headers: {
+            'Content-Type': 'multipart/form-data'
+          }
+        });
+        
+        // 获取计算结果
+        if (response.data && response.data.map_path) {
+          // 重新获取地图和直方图
+          mapImageUrl.value = await fetchDefaultMap(landTypeParam);
+          histogramImageUrl.value = await fetchDefaultHistogram(landTypeParam);
+          statisticsData.value = await fetchStatistics(landTypeParam);
+          
+          showCalculation.value = false;
+          showResults.value = true;
+          
+          ElMessage.success('计算完成,结果已展示');
+        } else {
+          ElMessage.error('计算失败,请重试');
+        }
       } catch (error) {
-        console.error('获取结果失败:', error);
-        ElMessage.error('获取结果失败,请重试');
+        console.error('计算失败:', error);
+        ElMessage.error('计算失败,请重试');
       } finally {
         loading.value = false;
       }
@@ -373,12 +431,9 @@ export default {
     
     return {
       selectedLandTypes,
-      irrigationWaterUsage,
-      irrigationEfficiency,
-      irrigatedWaterUsage,
-      irrigatedEfficiency,
-      dryWaterUsage,
-      dryEfficiency,
+      waterParams,
+      irrigatedParams,
+      dryParams,
       calculateFlux,
       showCalculation,
       showResults,