|
|
@@ -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,
|