Browse Source

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

lxf 1 week ago
parent
commit
c93ae8ba81

+ 13 - 4
src/views/old_mini/agri_record/index.vue

@@ -38,8 +38,9 @@
         </div>
     </div>
 
-    <tip-popup v-model:show="showFarmPopup" type="success" text="农场领取成功"
-        :overlay-style="{ 'backdrop-filter': 'blur(4px)' }" :closeOnClickOverlay="false" :zIndex="9999" />
+    <agri-execute-popup ref="agriExecutePopupRef" />
+
+    <start-interact-popup ref="startInteractPopupRef" />
 </template>
 
 <script setup>
@@ -49,10 +50,13 @@ import { useStore } from "vuex";
 import wx from "weixin-js-sdk";
 import weatherInfo from "@/components/weatherInfo.vue";
 import { useRouter, useRoute } from "vue-router";
-import farmInfoPopup from "../home/components/farmInfoPopup.vue";
-import tipPopup from "@/components/popup/tipPopup.vue";
 import { ElMessage, ElMessageBox } from "element-plus";
 import ArchivesFarmTimeLine from "@/components/pageComponents/ArchivesFarmTimeLine.vue";
+import agriExecutePopup from "@/components/popup/agriExecutePopup.vue";
+import startInteractPopup from "@/components/popup/startInteractPopup.vue";
+
+const agriExecutePopupRef = ref(null);
+const startInteractPopupRef = ref(null);
 
 const handleFarmInfoClick = () => {
     // const query = {
@@ -322,6 +326,11 @@ const changeGarden = ({ id }) => {
     broadcastList.value = [];
     getBroadcastList(1, false);
     getVarietyTabs();
+
+    if(varietyTabs.value.length) {
+        agriExecutePopupRef.value.showPopup(varietyTabs.value[activeVariety.value].farmId);
+    }
+    startInteractPopupRef.value.getPhenologyInitOrConfirmStatus();
 };
 </script>
 

+ 7 - 0
src/views/old_mini/growth_report/index.vue

@@ -143,6 +143,8 @@
         <tip-popup v-model:show="showBindSuccess" type="success" text="您的农场已绑定成功" />
 
         <start-interact-popup ref="startInteractPopupRef" />
+
+        <agri-execute-popup ref="agriExecutePopupRef" />
     </div>
 </template>
 
@@ -155,6 +157,7 @@ import { useStore } from "vuex";
 import { Swipe, SwipeItem, Badge } from 'vant';
 import tipPopup from "@/components/popup/tipPopup.vue";
 import startInteractPopup from "@/components/popup/startInteractPopup.vue";
+import agriExecutePopup from "@/components/popup/agriExecutePopup.vue";
 
 const store = useStore();
 const tabBarHeight = computed(() => store.state.home.tabBarHeight);
@@ -168,6 +171,7 @@ const workItems = ref([]);
 const paramsPage = ref({});
 const showBindSuccess = ref(false);
 const startInteractPopupRef = ref(null);
+const agriExecutePopupRef = ref(null);
 // 天气组件相关
 const isExpanded = ref(false);
 const weatherInfoRef = ref(null);
@@ -197,6 +201,9 @@ const changeGarden = ({ id, name }) => {
     };
     startInteractPopupRef.value.getPhenologyInitOrConfirmStatus();
     getRegions();
+    if(regionsData.value.length) {
+        agriExecutePopupRef.value.showPopup(regionsData.value[currentIndex.value].farmId);
+    }
 };
 
 onActivated(() => {

+ 30 - 23
src/views/old_mini/monitor/subPages/darwArea.vue

@@ -33,7 +33,7 @@
 <script setup>
 import customHeader from "@/components/customHeader.vue";
 import SaveRegionSuccessPopup from "@/components/popup/saveRegionSuccessPopup.vue";
-import { ref, computed, onMounted, onActivated, onDeactivated, nextTick } from "vue";
+import { ref, computed, onActivated, onDeactivated, nextTick } from "vue";
 import { useStore } from "vuex";
 import DrawRegionMap from "../../interactionList/map/drawRegionMap.js";
 import { useRouter, useRoute } from "vue-router";
@@ -67,7 +67,9 @@ const handleVarietyClick = (tab, index) => {
         drawRegionMap.kmap.polygonLayer.source.clear();
     }
     if (tab.geom?.length) {
-        drawRegionMap.setAreaGeometry([tab.geom], true);
+        setTimeout(() => {
+            drawRegionMap.setAreaGeometry([tab.geom], true);
+        }, 50);
     }
 };
 
@@ -77,43 +79,50 @@ const activeVarietyName = computed(() => {
 });
 const viewOnly = computed(() => route.query.type === "viewOnly");
 
-function fetchFarmSubjectDetail() {
-    VE_API.basic_farm.fetchFarmSubjectDetail({ subjectId: route.query.subjectId }).then(({ data }) => {
-        if(data?.regionList?.length) {
-            varietyTabs.value = data.regionList;
-            handleVarietyClick(varietyTabs.value[activeVariety.value], activeVariety.value);
+const point = ref(null);
+async function fetchFarmSubjectDetail() {
+    const subjectId = route.query?.subjectId;
+    if (!subjectId) return;
+
+    const { data } = await VE_API.basic_farm.fetchFarmSubjectDetail({ subjectId });
+
+    
+    if (data?.regionList?.length) {
+        if(route.query?.varietyId) {
+            activeVariety.value = data?.regionList.findIndex(item => item.typeId == route.query?.varietyId);
         }
-    });
+
+        point.value = data.farmLocation;
+        varietyTabs.value = data.regionList;
+        handleVarietyClick(varietyTabs.value[activeVariety.value], activeVariety.value);
+    }
 }
 
-onMounted(() => {
+onActivated(async () => {
+    activeVariety.value = 0;
+
     type.value = route.query.type;
-    const point = route.query.mapCenter || "POINT (113.6142086995688 23.585836479509055)";
     const editable = !viewOnly.value;
-    drawRegionMap.initMap(point, mapContainer.value, editable, true, true);
-    if (route.query?.subjectId) {
-        fetchFarmSubjectDetail();
-    }
-});
+    await fetchFarmSubjectDetail();
+
+    drawRegionMap.initMap(point.value, mapContainer.value, editable, true, true);
 
-onActivated(() => {
-    const point = route.query.mapCenter || "POINT (113.6142086995688 23.585836479509055)";
 
     // 从编辑态进入仅查看时,需重新初始化为不可编辑
     if (viewOnly.value && drawRegionMap.kmap && drawRegionMap.editable) {
         drawRegionMap.destroyMap();
-        drawRegionMap.initMap(point, mapContainer.value, false, true, false);
+        drawRegionMap.initMap(point.value, mapContainer.value, false, true, false);
     }
 
     // 从仅查看进入勾画(编辑)时,需重新初始化为可编辑
     if (!viewOnly.value && drawRegionMap.kmap && !drawRegionMap.editable) {
         drawRegionMap.destroyMap();
-        drawRegionMap.initMap(point, mapContainer.value, true, true, true);
+        drawRegionMap.initMap(point.value, mapContainer.value, true, true, true);
     }
 
     // 查看模式下已通过 fitAllRegions 适配;编辑模式再设置地图中心
     if (!viewOnly.value) {
-        drawRegionMap.setMapPosition(convertPointToArray(point));
+        drawRegionMap.setMapPosition(convertPointToArray(point.value));
     }
 });
 
@@ -264,8 +273,6 @@ const handleSelectNextVariety = () => {
 
 const handleEditRegion = () => {
     // 从查看态切换到可勾画编辑态:移除查看标记并重建地图(editable=true)
-    const point = route.query.mapCenter || "POINT (113.6142086995688 23.585836479509055)";
-
     const nextQuery = { ...route.query };
     delete nextQuery.type;
     delete nextQuery.viewOnly;
@@ -276,7 +283,7 @@ const handleEditRegion = () => {
             drawRegionMap.destroyMap();
         }
 
-        drawRegionMap.initMap(point, mapContainer.value, true, true, true);
+        drawRegionMap.initMap(point.value, mapContainer.value, true, true, true);
 
         if (varietyTabs.value.length && regionGeom.value.length) {
             drawRegionMap.setAreaGeometry([regionGeom.value],true);

+ 1 - 2
src/views/old_mini/monitor/subPages/farmInfo.vue

@@ -215,8 +215,7 @@ const handleEditMap = () => {
             path: "/draw_area",
             query: {
                 type: "viewOnly",
-                subjectId: route.query.subjectId,
-                mapCenter,
+                subjectId: route.query.subjectId
             },
         });
     } else {