刘秀芳 пре 4 дана
родитељ
комит
bd159737c9
1 измењених фајлова са 44 додато и 33 уклоњено
  1. 44 33
      src/views/old_mini/growth_report/index.vue

+ 44 - 33
src/views/old_mini/growth_report/index.vue

@@ -232,6 +232,36 @@ function startCheckWeatherReport() {
     pollWeatherReportGenerated();
     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 */
 /** 未来预警卡片:risk_report → explain_simple */
 async function fetchRiskReport() {
 async function fetchRiskReport() {
     const tel = resolveUserTel();
     const tel = resolveUserTel();
@@ -240,22 +270,16 @@ async function fetchRiskReport() {
         return;
         return;
     }
     }
     try {
     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 {
     } catch {
         weatherRiskExplain.value = "";
         weatherRiskExplain.value = "";
     }
     }
 }
 }
 
 
-/** 当下胁迫卡片:stress_report → explain_simple;空数组则轮询是否生成中 */
+/** 当下胁迫卡片:stress_report → explain_simple;reports 为空则轮询是否生成中 */
 async function fetchStressReport() {
 async function fetchStressReport() {
     const tel = resolveUserTel();
     const tel = resolveUserTel();
     if (!tel) {
     if (!tel) {
@@ -265,24 +289,17 @@ async function fetchStressReport() {
         return;
         return;
     }
     }
     try {
     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 = "";
             weatherStressExplain.value = "";
             startCheckWeatherReport();
             startCheckWeatherReport();
             return;
             return;
         }
         }
         stopCheckWeatherReport();
         stopCheckWeatherReport();
         reportGenerating.value = false;
         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 {
     } catch {
         weatherStressExplain.value = "";
         weatherStressExplain.value = "";
     }
     }
@@ -291,16 +308,10 @@ async function fetchStressReport() {
 /** 生成完成后只取正文,不再触发轮询 */
 /** 生成完成后只取正文,不再触发轮询 */
 async function fetchStressReportAfterReady(tel) {
 async function fetchStressReportAfterReady(tel) {
     try {
     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 {
     } catch {
         weatherStressExplain.value = "";
         weatherStressExplain.value = "";
     }
     }