|
|
@@ -1,10 +1,7 @@
|
|
|
<template>
|
|
|
<div class="chart-list">
|
|
|
- <div class="chart-item weather-item">
|
|
|
- <chart-box name="气象风险">
|
|
|
- <!-- <template #title-right>
|
|
|
- <div class="button" @click="gybg">果园报告</div>
|
|
|
- </template> -->
|
|
|
+ <!-- <div class="chart-item weather-item">
|
|
|
+ <chart-box name="干热风险">
|
|
|
<div class="base-wrap">
|
|
|
<div class="base-item" v-for="(item, index) in baseData.labels" :key="index">
|
|
|
<div class="label">{{ item }}风险</div>
|
|
|
@@ -13,29 +10,54 @@
|
|
|
</div>
|
|
|
<weatherChart class="line-chart"></weatherChart>
|
|
|
</chart-box>
|
|
|
+ </div> -->
|
|
|
+ <div class="chart-item">
|
|
|
+ <chart-box name="干热风险">
|
|
|
+ <one-line-chart
|
|
|
+ class="line-chart"
|
|
|
+ key="tr"
|
|
|
+ name="阴天寡照"
|
|
|
+ :yData="[22, 20, 22, 30, 32, 22, 25]"
|
|
|
+ :minData="[]"
|
|
|
+ :chartDate="chartDate1"
|
|
|
+ ></one-line-chart>
|
|
|
+ <div class="box-bg tips">
|
|
|
+ <div class="text">
|
|
|
+ 这里是预警提示的内容,有点长,先用这些文字占位,后续开发会把内容不上的。这里是预警提示的内容,有点长,先用这些文字占位,后续开发会把内容不上的。
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </chart-box>
|
|
|
</div>
|
|
|
<div class="chart-item">
|
|
|
- <chart-box :name="riskKeys[1]">
|
|
|
- <template #title-right>
|
|
|
- <div class="import">导入</div>
|
|
|
- </template>
|
|
|
- <one-line-chart class="line-chart" key="tr" :name="riskKeys[1]" :yData="yData1" :minData="[]" :chartDate="chartDate1"></one-line-chart>
|
|
|
+ <chart-box name="阴天寡照">
|
|
|
+ <one-line-chart
|
|
|
+ class="line-chart"
|
|
|
+ key="tr"
|
|
|
+ name="阴天寡照"
|
|
|
+ :yData="[22, 20, 22, 30, 32, 22, 25]"
|
|
|
+ :minData="[]"
|
|
|
+ :chartDate="chartDate1"
|
|
|
+ ></one-line-chart>
|
|
|
<div class="box-bg tips">
|
|
|
<div class="text">
|
|
|
- {{ text1 }}
|
|
|
+ 这里是预警提示的内容,有点长,先用这些文字占位,后续开发会把内容不上的。这里是预警提示的内容,有点长,先用这些文字占位,后续开发会把内容不上的。
|
|
|
</div>
|
|
|
</div>
|
|
|
</chart-box>
|
|
|
</div>
|
|
|
<div class="chart-item">
|
|
|
<chart-box name="阴雨渍水">
|
|
|
- <template #title-right>
|
|
|
- <div class="import">导入</div>
|
|
|
- </template>
|
|
|
- <one-line-chart class="line-chart" :name="riskKeys[0]" :key="1" :yData="yData" :minData="[]" :chartDate="chartDate"></one-line-chart>
|
|
|
+ <one-line-chart
|
|
|
+ class="line-chart"
|
|
|
+ name="阴雨渍水"
|
|
|
+ :key="1"
|
|
|
+ :yData="[22, 20, 22, 30, 32, 22, 25]"
|
|
|
+ :minData="[]"
|
|
|
+ :chartDate="chartDate"
|
|
|
+ ></one-line-chart>
|
|
|
<div class="box-bg tips">
|
|
|
<div class="text">
|
|
|
- {{ text }}
|
|
|
+ 这里是预警提示的内容,有点长,先用这些文字占位,后续开发会把内容不上的。这里是预警提示的内容,有点长,先用这些文字占位,后续开发会把内容不上的。
|
|
|
</div>
|
|
|
</div>
|
|
|
</chart-box>
|
|
|
@@ -50,79 +72,64 @@ import { onMounted, ref, onUnmounted } from "vue";
|
|
|
import eventBus from "@/api/eventBus";
|
|
|
import weatherChart from "../weatherChart.vue";
|
|
|
|
|
|
-const riskKeys = ref([])
|
|
|
+const riskKeys = ref([]);
|
|
|
|
|
|
const yData = ref([]);
|
|
|
const yData1 = ref([]);
|
|
|
-const yData2 = ref([]);
|
|
|
-const yData3 = ref([]);
|
|
|
|
|
|
-const chartDate = ref([])
|
|
|
-const chartDate1 = ref([])
|
|
|
-const chartDate2 = ref([])
|
|
|
-const chartDate3 = ref([])
|
|
|
+const chartDate = ref([]);
|
|
|
+const chartDate1 = ref([]);
|
|
|
|
|
|
-const text = ref(null)
|
|
|
-const text1 = ref(null)
|
|
|
-const text2 = ref(null)
|
|
|
+const text = ref(null);
|
|
|
+const text1 = ref(null);
|
|
|
|
|
|
const baseData = ref({});
|
|
|
|
|
|
-const organId = ref(sessionStorage.getItem('farmId'));
|
|
|
-
|
|
|
-// onMounted(() => {
|
|
|
-// getList()
|
|
|
-// getBaseData()
|
|
|
-// getTimeIndex()
|
|
|
-// eventBus.on("area:id", changeAreaId);
|
|
|
-// });
|
|
|
-onUnmounted(()=>{
|
|
|
- eventBus.off("area:id", changeAreaId);
|
|
|
-})
|
|
|
-
|
|
|
-function changeAreaId({farmId}){
|
|
|
- organId.value = farmId
|
|
|
- getList()
|
|
|
- getBaseData()
|
|
|
- getTimeIndex()
|
|
|
+const organId = ref(sessionStorage.getItem("farmId"));
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ // getList();
|
|
|
+ // getBaseData()
|
|
|
+ // eventBus.on("area:id", changeAreaId);
|
|
|
+});
|
|
|
+onUnmounted(() => {
|
|
|
+ eventBus.off("area:id", changeAreaId);
|
|
|
+});
|
|
|
+
|
|
|
+function changeAreaId({ farmId }) {
|
|
|
+ organId.value = farmId;
|
|
|
+ getList();
|
|
|
+ getBaseData();
|
|
|
}
|
|
|
|
|
|
function getList() {
|
|
|
- riskKeys.value = []
|
|
|
- yData.value.value = []
|
|
|
- yData1.value.value = []
|
|
|
- yData2.value.value = []
|
|
|
- chartDate.value.value = []
|
|
|
- chartDate1.value.value = []
|
|
|
- chartDate2.value.value = []
|
|
|
- VE_API.farm.getFarmReport({ farmId: organId.value, type: "气象风险" }).then((res) => {
|
|
|
- // if (res.data["物候进程"]) {}
|
|
|
- // 使用 Object.keys() 提取对象中的键
|
|
|
- riskKeys.value = Object.keys(res.data);
|
|
|
- yData.value = res.data[riskKeys.value[0]].list.map((item) => parseFloat(item.value.toFixed(1)))
|
|
|
- yData1.value = res.data[riskKeys.value[1]].list.map((item) => parseFloat(item.value.toFixed(1)))
|
|
|
- yData2.value = res.data[riskKeys.value[2]].list.map((item) => parseFloat(item.value.toFixed(1)))
|
|
|
-
|
|
|
- chartDate.value = formattedDates(res.data[riskKeys.value[0]].list.map((item) => item.name))
|
|
|
- chartDate1.value = formattedDates(res.data[riskKeys.value[1]].list.map((item) => item.name))
|
|
|
- chartDate2.value = formattedDates(res.data[riskKeys.value[2]].list.map((item) => item.name))
|
|
|
-
|
|
|
- text.value = res.data[riskKeys.value[0]].text
|
|
|
- text1.value = res.data[riskKeys.value[1]].text
|
|
|
- text2.value = res.data[riskKeys.value[2]].text
|
|
|
- })
|
|
|
+ riskKeys.value = [];
|
|
|
+ yData.value.value = [];
|
|
|
+ yData1.value.value = [];
|
|
|
+ chartDate.value.value = [];
|
|
|
+ chartDate1.value.value = [];
|
|
|
+ // VE_API.farm.getFarmReport({ farmId: organId.value, type: "气象风险" }).then((res) => {
|
|
|
+ // // if (res.data["物候进程"]) {}
|
|
|
+ // // 使用 Object.keys() 提取对象中的键
|
|
|
+ // riskKeys.value = Object.keys(res.data);
|
|
|
+ // yData.value = res.data[riskKeys.value[0]].list.map((item) => parseFloat(item.value.toFixed(1)))
|
|
|
+ // yData1.value = res.data[riskKeys.value[1]].list.map((item) => parseFloat(item.value.toFixed(1)))
|
|
|
+
|
|
|
+ // chartDate.value = formattedDates(res.data[riskKeys.value[0]].list.map((item) => item.name))
|
|
|
+ // chartDate1.value = formattedDates(res.data[riskKeys.value[1]].list.map((item) => item.name))
|
|
|
+
|
|
|
+ // text.value = res.data[riskKeys.value[0]].text
|
|
|
+ // text1.value = res.data[riskKeys.value[1]].text
|
|
|
+ // })
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
function formattedDates(dates) {
|
|
|
- return dates.map(date => {
|
|
|
- const [year, month, day] = date.split('-');
|
|
|
+ return dates.map((date) => {
|
|
|
+ const [year, month, day] = date.split("-");
|
|
|
return `${month}-${day}`; // 使用模板字符串格式化为 MM/DD
|
|
|
- });
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
-
|
|
|
const getBaseData = () => {
|
|
|
const point = sessionStorage.getItem("point");
|
|
|
// 获取气象图表数据
|
|
|
@@ -130,14 +137,6 @@ const getBaseData = () => {
|
|
|
baseData.value = res.data || {};
|
|
|
});
|
|
|
};
|
|
|
-
|
|
|
-const getTimeIndex = () => {
|
|
|
- VE_API.farm.getTimeIndex({ farmId: organId.value }).then(({data}) =>{
|
|
|
- chartDate3.value = formattedDates(data.map((item) => item.date))
|
|
|
- yData3.value = data.map((item) => parseFloat(item.value.toFixed(3)))
|
|
|
- })
|
|
|
-}
|
|
|
-
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
@@ -145,20 +144,19 @@ const getTimeIndex = () => {
|
|
|
width: calc(100% - 54px - 10px);
|
|
|
height: 100%;
|
|
|
overflow: auto;
|
|
|
- padding: 8px 8px 0;
|
|
|
+ padding: 8px 8px 0 0;
|
|
|
box-sizing: border-box;
|
|
|
.chart-item {
|
|
|
width: 100%;
|
|
|
- // height: 240px;
|
|
|
box-sizing: border-box;
|
|
|
margin-bottom: 10px;
|
|
|
- height: calc((100% - 276px) / 2 - 10px);
|
|
|
- .import{
|
|
|
- font-size: 12px;
|
|
|
- background: rgba(255, 255, 255, 0.2);
|
|
|
- border-radius: 4px;
|
|
|
- padding: 5px 13px;
|
|
|
- cursor: pointer;
|
|
|
+ height: calc((100% - 277px) / 2);
|
|
|
+ .import {
|
|
|
+ font-size: 12px;
|
|
|
+ background: rgba(255, 255, 255, 0.2);
|
|
|
+ border-radius: 4px;
|
|
|
+ padding: 5px 13px;
|
|
|
+ cursor: pointer;
|
|
|
}
|
|
|
.line-chart {
|
|
|
width: 100%;
|
|
|
@@ -205,7 +203,7 @@ const getTimeIndex = () => {
|
|
|
}
|
|
|
|
|
|
.box-bg {
|
|
|
- margin-top: 8px;
|
|
|
+ margin-top: 8px;
|
|
|
border-radius: 2px 2px 0 0;
|
|
|
font-size: 12px;
|
|
|
padding: 3px 6px;
|