lxf 1 týždeň pred
rodič
commit
35cb44b585

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

@@ -11,4 +11,9 @@ module.exports = {
         url: config.base_dev_url + "container_farm_work_group/pendingFarmWork",
         type: "get",
     },
+    // 报告
+    reproductiveReport: {
+        url: config.base_dev_url + "container/reproductiveReport/listLatestByFarmRegion",
+        type: "get",
+    },
 }

+ 47 - 155
src/views/old_mini/growth_report/index.vue

@@ -8,22 +8,22 @@
         <div class="report-content-wrap" v-if="hasReport" v-loading="loading">
             <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">
+                    <div class="report-content has-report" :style="{ minHeight: `calc(100vh - ${tabBarHeight}px)` }">
                         <!-- <img src="@/assets/img/home/qrcode.png" alt="" class="code-icon" /> -->
                         <img class="header-img" src="@/assets/img/home/report.png" alt="" />
                         <div class="report-header">
                             <!-- <img class="header-book" src="@/assets/img/home/book.png" alt="" /> -->
-                            <div class="time-tag">{{ workItem?.reportDate }}</div>
-                            <div class="report-title">长势报告</div>
+                            <div class="time-tag">{{ workItems?.[0]?.reportDate }}</div>
+                            <div class="report-title">{{regionsData[currentIndex]?.regionName}}长势报告</div>
                             <div class="report-info">
                                 <div class="info-item">
                                     <img class="info-icon" src="@/assets/img/home/farm.png" alt="" />
-                                    <span class="info-text">{{ workItem?.orchardName }}</span>
+                                    <span class="info-text">{{ currentFarmName }}</span>
                                 </div>
                             </div>
 
                             <!-- 左滑查看更多 -->
-                            <div class="swipe-more-tag">
+                            <div class="swipe-more-tag" v-show="currentIndex < regionsData.length - 1">
                                 左滑查看更多分区
                             </div>
                         </div>
@@ -34,11 +34,11 @@
                                 <div class="row">
                                     <div v-for="(card, cardI) in todayPatrolFocus" :key="cardI" class="status-card" :class="card.type"
                                         >
-                                        <badge class="status-badge" dot 
+                                        <!-- <badge class="status-badge" dot 
                                             :offset="[80, -10]">
-                                        </badge>
+                                        </badge> -->
                                         <div class="status-title">
-                                            {{ card.typeName }}
+                                            {{ card.title }}
                                         </div>
                                         <div class="status-sub" v-if="card.source === 'NEXT_PHENOLOGY'">
                                             预计{{card.daysUntilNext}}天后进入
@@ -57,9 +57,9 @@
                                 <div class="row">
                                     <div v-for="(card, cardI) in pendingFarmWork" :key="cardI" class="status-card" :class="card.type"
                                         >
-                                        <badge class="status-badge" dot 
+                                        <!-- <badge class="status-badge" dot 
                                             :offset="[80, -10]">
-                                        </badge>
+                                        </badge> -->
                                         <div class="status-title">
                                             {{ card.name }}
                                         </div>
@@ -71,67 +71,29 @@
                             </div>
                         </div>
 
-                        <div class="report-box">
-                            <div class="box-title">物候与长势</div>
-                            <div class="box-text">
-                                <div class="box-bg">
-                                    <span class="box-subtitle">背景描述:</span>
-                                    <div v-html="workItem?.phenologyBackground"></div>
-                                </div>
-                                <div class="box-advice">
-                                    <span class="box-subtitle">对策建议:</span>
-                                    <div v-html="workItem?.phenologySuggestion"></div>
-                                </div>
-                                <div class="box-sum" v-html="workItem?.phenologySummary"></div>
-                            </div>
-                        </div>
-
-                        <div class="report-box">
-                            <div class="box-title">病虫害问题</div>
-                            <div class="box-text">
-                                <div class="box-bg">
-                                    <span class="box-subtitle">背景描述:</span>
-                                    <div v-html="workItem?.pestBackground"></div>
-                                </div>
-                                <div class="box-advice">
-                                    <span class="box-subtitle">对策建议:</span>
-                                    <div v-html="workItem?.pestSuggestion"></div>
-                                </div>
-                                <div class="box-sum">
-                                    <div v-html="workItem?.pestSummary"></div>
-                                </div>
-                            </div>
-                        </div>
-
-                        <div class="report-box">
-                            <div class="box-title">今日巡园重点</div>
-                            <div class="box-text">
-                                {{ workItem?.summaryAgricultural || "--" }}
-                            </div>
-                        </div>
-
-                        <div class="report-box">
-                            <div class="box-title">未来预测</div>
+                        <div class="report-box" v-for="(work, workI) in workItems" :key="workI">
+                            <div class="box-title">{{ work?.title }}</div>
                             <div class="box-text">
-                                <div class="box-bg">
+                                <div class="box-bg" v-show="work?.backgroundDesc">
                                     <span class="box-subtitle">背景描述:</span>
-                                    <div v-html="workItem?.forecastBackground"></div>
+                                    <div v-html="work?.backgroundDesc"></div>
                                 </div>
-                                <div class="box-advice">
+                                <div class="box-advice" v-show="work?.suggestion">
                                     <span class="box-subtitle">对策建议:</span>
-                                    <div v-html="workItem?.forecastSuggestion"></div>
+                                    <div v-html="work?.suggestion"></div>
                                 </div>
+                                <div class="box-sum" v-show="work?.summary" v-html="work?.summary"></div>
                             </div>
                         </div>
 
-                        <div class="report-box">
+                        <!-- <div class="report-box">
                             <div class="box-text next-info">
                                 <div class="box-bg">
                                     <span class="box-subtitle">下一次农情互动预告:</span>
                                     <div v-html="workItem?.nextInteractionPreview"></div>
                                 </div>
                             </div>
-                        </div>
+                        </div> -->
                     </div>
                 </swipe-item>
             </swipe>
@@ -143,12 +105,12 @@
                 <img class="header-img" src="@/assets/img/home/report.png" alt="" />
                 <div class="report-header">
                     <!-- <img class="header-book" src="@/assets/img/home/book.png" alt="" /> -->
-                    <div class="time-tag">{{ workItem?.reportDate }}</div>
+                    <div class="time-tag">{{ new Date().toISOString().split('T')[0] }}</div>
                     <div class="report-title">作物长势报告</div>
                     <div class="report-info pb-4">
                         <div class="info-item">
                             <img class="info-icon" src="@/assets/img/home/farm.png" alt="" />
-                            <span class="info-text">{{ workItem?.orchardName }}</span>
+                            <span class="info-text">示范农场</span>
                         </div>
                     </div>
                 </div>
@@ -167,7 +129,7 @@
         <div class="swipe-guide-mask" v-if="showSwipeGuide" @click="closeSwipeGuide">
             <div class="swipe-guide-content">
                 <img class="swipe-guide-icon" src="@/assets/img/home/point.png" alt="swipe" />
-                <div class="swipe-guide-text">左滑查看其它品种报告</div>
+                <div class="swipe-guide-text">左滑查看其它分区报告</div>
             </div>
         </div>
 
@@ -191,82 +153,7 @@ const route = useRoute();
 const router = useRouter();
 const loading = ref(false);
 const hasReport = ref(false);
-const workItem = ref({
-    reportDate: new Date().toISOString().split('T')[0],
-    executeDate: new Date().toISOString().split('T')[0],
-    orchardName: '示范农场',
-    farmName: '荔枝博览园',
-    resultInfo: '近7天时间地点,当下农情指标(物候期指标等等),面临的风险和出现的问题。',
-    growthInfo: {
-        description: '当前处于蒂蛀虫高发期,请及时采集。处于蒂蛀虫高发期',
-        advice: '根据问题写一下需要注意的事项有哪些;简单描述农事该怎么做(可以链接详细的操作贴);更加详细的意见,等待专家进一步确认。如果都没有问题,那么这个时期高发什么风险,需要密切关注。',
-    },
-    futureInfo: {
-        description: '为什么这个气象风险很重要,对产量有什么影响;',
-        advice: '如果需要做农事,就建议农事,如果暂时不需要做农事,就提醒密切关注长势动态。',
-    },
-    nextInfo: {
-        advice: '时间和主题,主要是为了什么互动,说明其重要性。',
-    },
-});
-function formatArea(val) {
-    const num = typeof val === "number" ? val : parseFloat(val);
-    if (Number.isNaN(num)) return val;
-    return Number.isInteger(num) ? num : num.toFixed(2) + "亩";
-}
-
-const todayRows = ref([
-    {
-        label: "农情",
-        cards: [
-            {
-                id: 1,
-                title: "新梢萌动",
-                sub: "预计3天后进入",
-                type: "risk-strong",
-            },
-            {
-                id: 2,
-                title: "冲梢异常",
-                sub: "占比3%",
-                type: "normal",
-                badge: true,
-            },
-            {
-                id: 3,
-                title: "病虫风险",
-                sub: "一级风险",
-                type: "danger",
-            },
-        ],
-    },
-]);
-const todoRows = ref([
-    {
-        label: "农事",
-        cards: [
-            {
-                id: 4,
-                title: "第一段防治",
-                sub: "待完成",
-                type: "risk-strong",
-            },
-            {
-                id: 5,
-                title: "控梢",
-                sub: "待触发",
-                type: "normal",
-            },
-            {
-                id: 6,
-                title: "无",
-                sub: "",
-                type: "disabled",
-            },
-        ],
-    },
-]);
-
+const workItems = ref([]);
 
 const paramsPage = ref({});
 const showBindSuccess = ref(false);
@@ -288,19 +175,16 @@ const handleMaskClick = () => {
     }
 };
 
+const currentFarmName = ref('');
 // 切换农场时,更新报告数据
-const changeGarden = ({ id }) => {
+const changeGarden = ({ id, name }) => {
     if (!id) return;
+    currentFarmName.value = name;
     paramsPage.value = {
         ...(paramsPage.value || {}),
-        farmId: id,
+        subjectId: id,
     };
     getRegions();
-    const guideKey = "GROWTH_REPORT_SWIPE_GUIDE_SHOWN";
-    if (!localStorage.getItem(guideKey)) {
-        showSwipeGuide.value = true;
-        localStorage.setItem(guideKey, "1");
-    }
 };
 
 onActivated(() => {
@@ -349,22 +233,25 @@ const setReadStatus = (id) => {
 const todayPatrolFocus = ref([]);
 const pendingFarmWork = ref([]);
 const getTodayPatrolFocus = () => {
-    VE_API.report.todayPatrolFocus({ farmId: paramsPage.value.regionId }).then(({ data }) => {
+    VE_API.report.todayPatrolFocus({ farmId: paramsPage.value.farmId, regionId:paramsPage.value.regionId }).then(({ data }) => {
         todayPatrolFocus.value = data || [];
     });
 }
 
 const getPendingFarmWork = () => {
-    VE_API.report.pendingFarmWork({ farmId: paramsPage.value.regionId }).then(({ data }) => {
+    VE_API.report.pendingFarmWork({ farmId: paramsPage.value.farmId, regionId: paramsPage.value.regionId }).then(({ data }) => {
         pendingFarmWork.value = data || [];
     });
 }
 
+const currentIndex = ref(0);
 const handleSwipeChange = (index) => {
-    if (paramsPage.value.regionId !== regionsData.value[index].farmId) {
+    currentIndex.value = index;
+    if (paramsPage.value.regionId !== regionsData.value[index].regionId) {
         paramsPage.value = {
             ...(paramsPage.value || {}),
-            regionId: regionsData.value[index].farmId,
+            farmId: regionsData.value[index].farmId,
+            regionId: regionsData.value[index].regionId,
         };
         getTodayPatrolFocus();
         getPendingFarmWork();
@@ -375,12 +262,12 @@ const handleSwipeChange = (index) => {
 const getDetail = () => {
     if (!paramsPage.value.farmId) return;
     loading.value = true;
-    VE_API.farm
-        .growthReportBySubject({ subjectId: paramsPage.value.farmId, limit: 20 })
+    VE_API.report
+        .reproductiveReport({ farmId: paramsPage.value.farmId, regionId: paramsPage.value.regionId })
         .then(({ data }) => {
             console.log('data', data);
-            workItem.value = data?.[0] || {};
-            data?.[0]?.id && setReadStatus(data[0]?.id);
+            workItems.value = data || [];
+            // data?.[0]?.id && setReadStatus(data[0]?.id);
         })
         .finally(() => {
             loading.value = false;
@@ -390,15 +277,20 @@ const getDetail = () => {
 const regionsData = ref([]);
 const getRegions = async () => {
     VE_API.monitor.listRegionsBySubjectId({
-        subjectId: paramsPage.value.farmId,
+        subjectId: paramsPage.value.subjectId,
     }).then(({ data }) => {
-        console.log('getRegions', data);
         regionsData.value = data || [];
         if(regionsData.value.length > 0) {
+            const guideKey = "GROWTH_REPORT_SWIPE_GUIDE_SHOWN";
+            if (!localStorage.getItem(guideKey)) {
+                showSwipeGuide.value = true;
+                localStorage.setItem(guideKey, "1");
+            }
             hasReport.value = true;
             paramsPage.value = {
                 ...(paramsPage.value || {}),
-                regionId: regionsData.value[0].farmId,
+                farmId: regionsData.value[0].farmId,
+                regionId: regionsData.value[0].regionId,
             };
             getTodayPatrolFocus();
             getPendingFarmWork();
@@ -411,7 +303,7 @@ const getRegions = async () => {
 
 // 清理数据的函数
 const clearData = () => {
-    workItem.value = {};
+    workItems.value = [];
     paramsPage.value = {};
     loading.value = false;
 };

+ 6 - 7
src/views/old_mini/interaction/index.vue

@@ -213,14 +213,13 @@ const handleConfirm = async () => {
     const varietyName = getFirstSelectedVarietyName();
     if (varietyName) {
         selectRegionTitle.value = `勾选 ${varietyName} 区域`;
-            showSelectRegionPopup.value = true;
     }
-    // const { code, msg } = await VE_API.farm_v3.initFarmData(params);
-    // if (code === 0) {
-    //     showSelectRegionPopup.value = true;
-    // } else {
-    //     ElMessage.error(msg || "提交失败");
-    // }
+    const { code, msg } = await VE_API.farm_v3.initFarmData(params);
+    if (code === 0) {
+        showSelectRegionPopup.value = true;
+    } else {
+        ElMessage.error(msg || "提交失败");
+    }
 };
 
 const handleSkipSelectRegion = () => {