lxf 6 ore fa
parent
commit
e326148106

+ 14 - 0
src/api/modules/report.js

@@ -0,0 +1,14 @@
+const config = require("../config")
+
+module.exports = {
+    // 今日巡园重点
+    todayPatrolFocus: {
+        url: config.base_dev_url + "container_phenology_interaction/todayPatrolFocus",
+        type: "get",
+    },
+    // 待执行农事
+    pendingFarmWork: {
+        url: config.base_dev_url + "container_farm_work_group/pendingFarmWork",
+        type: "get",
+    },
+}

+ 1 - 0
src/components/weatherInfo.vue

@@ -215,6 +215,7 @@ function getFarmListWithoutGardenId() {
         // const fullData = data.filter(item => item.userType === 2);
         const fullData = data;
         farmList.value = fullData || [];
+        console.log('getFarmListWithoutGardenId', fullData);
         if (fullData && fullData.length > 0) {
             selectFarmFromList(fullData);
         } else {

+ 70 - 19
src/views/old_mini/growth_report/index.vue

@@ -6,8 +6,8 @@
         <weather-info ref="weatherInfoRef" class="weather-info" @weatherExpanded="weatherExpanded"
             @changeGarden="changeGarden" :isGarden="true"></weather-info>
         <div class="report-content-wrap" v-if="hasReport" v-loading="loading">
-            <swipe class="my-swipe" :loop="false" indicator-color="white">
-                <swipe-item v-for="(item, index) in 4" :key="index">
+            <swipe class="my-swipe" :loop="false" indicator-color="white" @change="handleSwipeChange">
+                <swipe-item v-for="(item, index) in regionsData" :key="index">
                     <div class="report-content has-report">
                         <!-- <img src="@/assets/img/home/qrcode.png" alt="" class="code-icon" /> -->
                         <img class="header-img" src="@/assets/img/home/report.png" alt="" />
@@ -31,17 +31,20 @@
                         <div class="report-box">
                             <div class="box-title warning">今日巡园重点</div>
                             <div class="box-text w-100">
-                                <div class="row" v-for="row in todayRows" :key="row.label">
-                                    <div v-for="card in row.cards" :key="card.id" class="status-card" :class="card.type"
-                                        @click="handleBlockClick(card, row.label)">
-                                        <badge class="status-badge" dot v-if="card.title === '冲楸异常'"
+                                <div class="row">
+                                    <div v-for="(card, cardI) in todayPatrolFocus" :key="cardI" class="status-card" :class="card.type"
+                                        >
+                                        <badge class="status-badge" dot 
                                             :offset="[80, -10]">
                                         </badge>
                                         <div class="status-title">
-                                            {{ card.title }}
+                                            {{ card.typeName }}
                                         </div>
-                                        <div class="status-sub" v-if="card.sub">
-                                            {{ card.sub }}
+                                        <div class="status-sub" v-if="card.source === 'NEXT_PHENOLOGY'">
+                                            预计{{card.daysUntilNext}}天后进入
+                                        </div>
+                                        <div class="status-sub" v-else>
+                                            {{ card.description }}
                                         </div>
                                     </div>
                                 </div>
@@ -51,17 +54,17 @@
                         <div class="report-box">
                             <div class="box-title warning">待执行农事</div>
                             <div class="box-text w-100">
-                                <div class="row" v-for="row in todoRows" :key="row.label">
-                                    <div v-for="card in row.cards" :key="card.id" class="status-card" :class="card.type"
-                                        @click="handleBlockClick(card, row.label)">
-                                        <badge class="status-badge" dot v-if="card.title === '冲楸异常'"
+                                <div class="row">
+                                    <div v-for="(card, cardI) in pendingFarmWork" :key="cardI" class="status-card" :class="card.type"
+                                        >
+                                        <badge class="status-badge" dot 
                                             :offset="[80, -10]">
                                         </badge>
                                         <div class="status-title">
-                                            {{ card.title }}
+                                            {{ card.name }}
                                         </div>
-                                        <div class="status-sub" v-if="card.sub">
-                                            {{ card.sub }}
+                                        <div class="status-sub">
+                                            {{ card.status }}
                                         </div>
                                     </div>
                                 </div>
@@ -292,7 +295,7 @@ const changeGarden = ({ id }) => {
         ...(paramsPage.value || {}),
         farmId: id,
     };
-    getDetail();
+    getRegions();
     const guideKey = "GROWTH_REPORT_SWIPE_GUIDE_SHOWN";
     if (!localStorage.getItem(guideKey)) {
         showSwipeGuide.value = true;
@@ -342,6 +345,33 @@ const setReadStatus = (id) => {
         console.log(data);
     });
 }
+
+const todayPatrolFocus = ref([]);
+const pendingFarmWork = ref([]);
+const getTodayPatrolFocus = () => {
+    VE_API.report.todayPatrolFocus({ farmId: paramsPage.value.regionId }).then(({ data }) => {
+        todayPatrolFocus.value = data || [];
+    });
+}
+
+const getPendingFarmWork = () => {
+    VE_API.report.pendingFarmWork({ farmId: paramsPage.value.regionId }).then(({ data }) => {
+        pendingFarmWork.value = data || [];
+    });
+}
+
+const handleSwipeChange = (index) => {
+    if (paramsPage.value.regionId !== regionsData.value[index].farmId) {
+        paramsPage.value = {
+            ...(paramsPage.value || {}),
+            regionId: regionsData.value[index].farmId,
+        };
+        getTodayPatrolFocus();
+        getPendingFarmWork();
+        getDetail();
+    }
+}
+
 const getDetail = () => {
     if (!paramsPage.value.farmId) return;
     loading.value = true;
@@ -349,15 +379,36 @@ const getDetail = () => {
         .growthReportBySubject({ subjectId: paramsPage.value.farmId, limit: 20 })
         .then(({ data }) => {
             console.log('data', data);
-            // workItem.value = data?.[0] || {};
+            workItem.value = data?.[0] || {};
             data?.[0]?.id && setReadStatus(data[0]?.id);
-            // hasReport.value = data && data.length > 0;
         })
         .finally(() => {
             loading.value = false;
         });
 };
 
+const regionsData = ref([]);
+const getRegions = async () => {
+    VE_API.monitor.listRegionsBySubjectId({
+        subjectId: paramsPage.value.farmId,
+    }).then(({ data }) => {
+        console.log('getRegions', data);
+        regionsData.value = data || [];
+        if(regionsData.value.length > 0) {
+            hasReport.value = true;
+            paramsPage.value = {
+                ...(paramsPage.value || {}),
+                regionId: regionsData.value[0].farmId,
+            };
+            getTodayPatrolFocus();
+            getPendingFarmWork();
+            getDetail();
+        } else {
+            hasReport.value = false;
+        }
+    });
+}
+
 // 清理数据的函数
 const clearData = () => {
     workItem.value = {};