Ver código fonte

Merge branch 'agriculture-demo' of http://www.sysuimars.cn:3000/feiniao/feiniao-farm-h5 into agriculture-demo

wangsisi 4 dias atrás
pai
commit
6a45dd0de2

BIN
src/assets/img/map/Flood_Waterlogging_Risk.png


BIN
src/assets/img/map/High_Humidity_Heat_Risk.png


+ 2 - 2
src/views/old_mini/agri_file/index.vue

@@ -516,7 +516,7 @@ async function fetchReportList() {
             id: 1,
             type: "risk",
             title: riskData
-                ? `未来预警: ${entry?.weatherRisk || riskData.risk_name || "预警"}`
+                ? `未来预警: ${riskData.risk_name || "预警"}`
                 : "",
             // 卡片简介:explain_simple
             desc: riskData?.explain_simple || "",
@@ -528,7 +528,7 @@ async function fetchReportList() {
             id: 2,
             type: "stress",
             title: stressData
-                ? `当下胁迫: ${entry?.weatherStress || stressData.stress_name || "胁迫"}`
+                ? `当下胁迫: ${stressData.stress_name || "胁迫"}`
                 : "",
             // 卡片简介:explain_simple
             desc: stressData?.explain_simple || "",

+ 49 - 37
src/views/old_mini/growth_report/index.vue

@@ -97,16 +97,16 @@ const menuIcon2 = require("@/assets/img/common/rain.png");
 const stressMenuItems = [
     {
         key: "stress",
-        line1: "暴雨",
-        line2: "涝渍",
+        line1: "渍根",
+        line2: "风险",
         icon: menuIcon,
         mapUrl: require("@/assets/img/map/Flood_Waterlogging_Risk.png"),
         extent: [115.7752805213905, 23.913245697921756, 116.55501818800624, 24.798086252779484],
     },
     {
         key: "hot-drought-1",
-        line1: "高温",
-        line2: "高湿",
+        line1: "病害",
+        line2: "风险",
         icon: menuIcon2,
         mapUrl: require("@/assets/img/map/High_Humidity_Heat_Risk.png"),
         extent: [115.77569718805717, 23.912588960529323, 116.55453653938879, 24.79742951538705],
@@ -232,6 +232,36 @@ function startCheckWeatherReport() {
     pollWeatherReportGenerated();
 }
 
+/**
+ * risk_report / stress_report:
+ * 新:{ current_time, reports: [...] }
+ * 旧:data 为报告对象或数组
+ */
+function unwrapRiskStressData(raw) {
+    const res = Array.isArray(raw) ? raw[0] : raw;
+    if (Number(res?.code) !== 200 || !res.data) {
+        return { reports: [], currentTime: "" };
+    }
+    const data = res.data;
+    if (Array.isArray(data)) {
+        return { reports: data, currentTime: "" };
+    }
+    if (Array.isArray(data.reports)) {
+        return {
+            reports: data.reports,
+            currentTime: data.current_time || "",
+        };
+    }
+    return {
+        reports: typeof data === "object" ? [data] : [],
+        currentTime: data.current_time || "",
+    };
+}
+
+function pickReportExplain(item) {
+    return item?.explain_simple || item?.interact_explain || "";
+}
+
 /** 未来预警卡片:risk_report → explain_simple */
 async function fetchRiskReport() {
     const tel = resolveUserTel();
@@ -240,22 +270,16 @@ async function fetchRiskReport() {
         return;
     }
     try {
-        const raw = await VE_API.questionnaire.riskReport({ tel });
-        const res = Array.isArray(raw) ? raw[0] : raw;
-        if (Number(res?.code) !== 200 || !res.data) {
-            weatherRiskExplain.value = "";
-            return;
-        }
-        const data = res.data;
-        const item = Array.isArray(data) ? data[0] : data;
-        weatherRiskExplain.value =
-            item?.explain_simple || item?.interact_explain || "";
+        const { reports } = unwrapRiskStressData(await VE_API.questionnaire.riskReport({ tel }));
+        const item = reports[0];
+        weatherRiskExplain.value = pickReportExplain(item);
+        if (item?.risk_name) weatherRisk.value = item.risk_name;
     } catch {
         weatherRiskExplain.value = "";
     }
 }
 
-/** 当下胁迫卡片:stress_report → explain_simple;空数组则轮询是否生成中 */
+/** 当下胁迫卡片:stress_report → explain_simple;reports 为空则轮询是否生成中 */
 async function fetchStressReport() {
     const tel = resolveUserTel();
     if (!tel) {
@@ -265,24 +289,17 @@ async function fetchStressReport() {
         return;
     }
     try {
-        const raw = await VE_API.questionnaire.stressReport({ tel });
-        const res = Array.isArray(raw) ? raw[0] : raw;
-        if (Number(res?.code) !== 200 || !res.data) {
-            weatherStressExplain.value = "";
-            return;
-        }
-        const data = res.data;
-        // 报告尚未落库:空数组 → 查生成状态
-        if (Array.isArray(data) && data.length === 0) {
+        const { reports } = unwrapRiskStressData(await VE_API.questionnaire.stressReport({ tel }));
+        if (!reports.length) {
             weatherStressExplain.value = "";
             startCheckWeatherReport();
             return;
         }
         stopCheckWeatherReport();
         reportGenerating.value = false;
-        const item = Array.isArray(data) ? data[0] : data;
-        weatherStressExplain.value =
-            item?.explain_simple || item?.interact_explain || "";
+        const item = reports[0];
+        weatherStressExplain.value = pickReportExplain(item);
+        if (item?.stress_name) weatherStress.value = item.stress_name;
     } catch {
         weatherStressExplain.value = "";
     }
@@ -291,16 +308,10 @@ async function fetchStressReport() {
 /** 生成完成后只取正文,不再触发轮询 */
 async function fetchStressReportAfterReady(tel) {
     try {
-        const raw = await VE_API.questionnaire.stressReport({ tel });
-        const res = Array.isArray(raw) ? raw[0] : raw;
-        if (Number(res?.code) !== 200 || !res.data) {
-            weatherStressExplain.value = "";
-            return;
-        }
-        const data = res.data;
-        const item = Array.isArray(data) ? data[0] : data;
-        weatherStressExplain.value =
-            item?.explain_simple || item?.interact_explain || "";
+        const { reports } = unwrapRiskStressData(await VE_API.questionnaire.stressReport({ tel }));
+        const item = reports[0];
+        weatherStressExplain.value = pickReportExplain(item);
+        if (item?.stress_name) weatherStress.value = item.stress_name;
     } catch {
         weatherStressExplain.value = "";
     }
@@ -583,6 +594,7 @@ onMounted(() => {
     initMap();
     tryOpenInviteEntryPopup();
     fetchAbnormalContent();
+    handleSelectMenu('stress');
 });
 onActivated(() => {
     syncEntryFarmData();