Selaa lähdekoodia

feat:添加弹窗跳转逻辑

wangsisi 4 päivää sitten
vanhempi
commit
540167044e

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

@@ -47,4 +47,9 @@ module.exports = {
         url: config.base_dev_url + "farm_subject/getSubjectDetail",
         type: "get",
     },
+    //更新分区最后查看时间
+    updateLastViewTime: {
+        url: config.base_dev_url + "region/updateLastViewTime",
+        type: "get",
+    },
 }

+ 1 - 5
src/components/popup/selectRegionPopup.vue

@@ -1,5 +1,5 @@
 <template>
-    <popup v-model:show="showValue" round class="select-region-popup" z-index="9999" teleport="body">
+    <popup v-model:show="showValue" round class="select-region-popup" z-index="10000" teleport="body">
         <div class="image-wrapper">
             <div class="map-container" ref="mapContainer"></div>
         </div>
@@ -24,10 +24,6 @@ const props = defineProps({
         type: Boolean,
         default: false,
     },
-    image: {
-        type: String,
-        default: "",
-    },
     title: {
         type: String,
         default: "勾选 区域",

+ 37 - 2
src/views/old_mini/agri_record/index.vue

@@ -38,6 +38,10 @@
         </div>
     </div>
 
+    <!-- 勾选区域引导弹窗 -->
+    <select-region-popup v-model:show="showSelectRegionPopup" :title="titlePopup" @confirm="handleGoSelectRegion"
+        @skip="handleSkipSelectRegion" />
+
     <agri-execute-popup ref="agriExecutePopupRef" />
 
     <start-interact-popup ref="startInteractPopupRef" />
@@ -52,6 +56,7 @@ import weatherInfo from "@/components/weatherInfo.vue";
 import { useRouter, useRoute } from "vue-router";
 import { ElMessage, ElMessageBox } from "element-plus";
 import ArchivesFarmTimeLine from "@/components/pageComponents/ArchivesFarmTimeLine.vue";
+import selectRegionPopup from "@/components/popup/selectRegionPopup.vue";
 import agriExecutePopup from "@/components/popup/agriExecutePopup.vue";
 import startInteractPopup from "@/components/popup/startInteractPopup.vue";
 
@@ -75,7 +80,7 @@ const handleFarmInfoClick = () => {
 const varietyTabs = ref([]);
 const activeVariety = ref(0);
 
-const getVarietyTabs = async () => {
+const getVarietyTabs = async (isShowPopup = true) => {
     if (!gardenId.value) {
         return;
     }
@@ -86,7 +91,9 @@ const getVarietyTabs = async () => {
         varietyTabs.value = res.data || []
         if (varietyTabs.value.length > 0) {
             handleVarietyClick(varietyTabs.value[0], 0)
-            agriExecutePopupRef.value.showPopup(varietyTabs.value[activeVariety.value].farmId);
+            if(isShowPopup) {
+                agriExecutePopupRef.value.showPopup(varietyTabs.value[activeVariety.value].farmId);
+            }
         }
     } catch (error) {
         console.error("获取主体分区列表失败:", error);
@@ -96,11 +103,39 @@ const getVarietyTabs = async () => {
 const farmIdData = ref(null);
 const containerData = ref(null);
 const regionData = ref(null);
+const titlePopup = ref("");
+const currentVariety = ref(null);
+const showSelectRegionPopup = ref(false);
 const handleVarietyClick = (tab, index) => {
     activeVariety.value = index;
     farmIdData.value = tab.farmId;
     containerData.value = tab.containerId;
     regionData.value = tab.regionId;
+    currentVariety.value = tab;
+    if (tab.lastViewTime == null) {
+        titlePopup.value = `勾选 ${tab.regionName} 区域`;
+        showSelectRegionPopup.value = true;
+    }
+};
+
+const handleSkipSelectRegion = () => {
+    VE_API.basic_farm.updateLastViewTime({
+        regionId: currentVariety.value.regionId,
+    }).then(() => {
+        showSelectRegionPopup.value = false;
+        getVarietyTabs(false);
+    });
+};
+
+const handleGoSelectRegion = () => {
+    showSelectRegionPopup.value = false;
+    router.push({
+        path: "/draw_area",
+        query: {
+            subjectId: gardenId.value,
+            varietyId: currentVariety.value.typeId,
+        },
+    });
 };
 
 const showFarmPopup = ref(false); // 农场领取成功弹窗

+ 23 - 10
src/views/old_mini/monitor/index.vue

@@ -60,8 +60,8 @@
     </div>
 
     <!-- 勾选区域引导弹窗 -->
-    <select-region-popup v-model:show="showSelectRegionPopup" :image="selectRegionImage" :title="titlePopup"
-        sub-title="精准匹配农情信息,高效管理分区" @confirm="handleGoSelectRegion" @skip="handleSkipSelectRegion" />
+    <select-region-popup v-model:show="showSelectRegionPopup" :title="titlePopup" @confirm="handleGoSelectRegion"
+        @skip="handleSkipSelectRegion" />
 
     <!-- 农事执行弹窗 -->
     <agri-execute-popup ref="agriExecutePopupRef" />
@@ -94,7 +94,7 @@ const agriExecutePopupRef = ref(null);
 const varietyTabs = ref([]);
 const activeVariety = ref(0);
 
-const getVarietyTabs = async () => {
+const getVarietyTabs = async (isShowPopup = true) => {
     if (!gardenId.value) {
         return;
     }
@@ -104,8 +104,10 @@ const getVarietyTabs = async () => {
         });
         varietyTabs.value = res.data || []
         if (varietyTabs.value.length > 0) {
-            handleVarietyClick(varietyTabs.value[0], 0)
-            agriExecutePopupRef.value.showPopup(varietyTabs.value[activeVariety.value].farmId);
+            handleVarietyClick(varietyTabs.value[activeVariety.value], activeVariety.value)
+            if(isShowPopup) {
+                agriExecutePopupRef.value.showPopup(varietyTabs.value[activeVariety.value].farmId);
+            }
         }
     } catch (error) {
         console.error("获取主体分区列表失败:", error);
@@ -115,12 +117,13 @@ const getVarietyTabs = async () => {
 const farmIdData = ref(null);
 const regionData = ref(null);
 const titlePopup = ref("");
+const currentVariety = ref(null);
 const handleVarietyClick = (tab, index) => {
-    console.log(tab, 'tab');
     activeVariety.value = index;
     farmIdData.value = tab.farmId;
     regionData.value = tab.regionId;
-    if(tab.lastViewTime == null) {
+    currentVariety.value = tab;
+    if (tab.lastViewTime == null) {
         titlePopup.value = `勾选 ${tab.regionName} 区域`;
         showSelectRegionPopup.value = true;
     }
@@ -129,19 +132,29 @@ const handleVarietyClick = (tab, index) => {
 const date = ref(new Date());
 
 const showSelectRegionPopup = ref(false);
-const selectRegionImage = ref("");
 
 const handleAddVariety = () => {
     router.push("/interaction?addVariety=true&subjectId=" + gardenId.value);
 };
 
 const handleSkipSelectRegion = () => {
-    showSelectRegionPopup.value = false;
+    VE_API.basic_farm.updateLastViewTime({
+        regionId: currentVariety.value.regionId,
+    }).then(() => {
+        showSelectRegionPopup.value = false;
+        getVarietyTabs(false);
+    });
 };
 
 const handleGoSelectRegion = () => {
     showSelectRegionPopup.value = false;
-    router.push("/draw_area");
+    router.push({
+        path: "/draw_area",
+        query: {
+            subjectId: gardenId.value,
+            varietyId: currentVariety.value.typeId
+        },
+    });
 };
 
 const showFarmPopup = ref(false); // 农场领取成功弹窗

+ 3 - 0
src/views/old_mini/monitor/subPages/darwArea.vue

@@ -233,6 +233,9 @@ const confirmArea = async () => {
 
     // 每次确认都提交接口(携带目前已确认过的所有品种 regions)
     const ok = await submitRegions();
+    await VE_API.basic_farm.updateLastViewTime({
+        regionId: varietyTabs.value[activeVariety.value].regionId,
+    });
     fetchFarmSubjectDetail()
     if (!ok) return;