Pārlūkot izejas kodu

feat:修改勾选地块页面

wangsisi 5 dienas atpakaļ
vecāks
revīzija
8d93f61cb3

+ 5 - 3
src/components/popup/confirmDrawTypePopup.vue

@@ -44,6 +44,8 @@ const showValue = ref(false);
 const openPopup = (payload) => {
     remark.value = "";
     categoryMap.value.variety = payload.varietyTabs;
+    categoryMap.value.environment = payload.varietyTabs;
+    categoryMap.value.sleep = payload.varietyTabs;
     selectedType.value = payload.activeRegionType;
     selectedCategory.value = payload.activeVarietyIndex;
     showValue.value = true;
@@ -67,9 +69,9 @@ const typeOptions = [
 
 const categoryMap = ref({
     variety: [],
-    abnormal: ["黄叶", "病虫害", "缺肥", "其他异常"],
-    environment: ["干旱", "积水", "低温", "高温"],
-    sleep: ["休眠期", "待复耕", "待补种", "观察区"],
+    abnormal: [{regionName: "病害"}, {regionName: "虫害"}, {regionName: "长势过快"}, {regionName: "长势过慢"}],
+    environment: [],
+    sleep: [],
 });
 
 const selectedType = ref("");

+ 27 - 62
src/views/old_mini/monitor/subPages/darwArea.vue

@@ -21,7 +21,7 @@
         <div class="edit-map-content">
             <div class="edit-map-tip" v-if="!viewOnly">操作提示:拖动圆点,即可调整地块边界</div>
             <div class="map-container" ref="mapContainer"></div>
-            <div class="edit-map-footer">
+            <div class="edit-map-footer" :style="{ 'bottom': varietyTabs.length > 0 ? '75px' : '35px' }">
                 <div class="footer-back" @click="goBack">
                     <img class="back-icon" src="@/assets/img/home/go-back.png" alt="" />
                 </div>
@@ -34,12 +34,6 @@
                 </div>
             </div>
         </div>
-        <save-region-success-popup v-model:show="showSuccessPopup"
-            :title="`${activeVarietyName} 区域已保存成功`"
-            :has-next="varietyTabs.length > 0 && activeVariety < varietyTabs.length - 1" @know="handleKnow"
-            @next="handleSelectNextVariety" />
-
-
         <tip-popup v-model:show="showTipPopup" type="success" text="您的农情报告已生成" text2="请查看" buttonText="点击查看"
         @confirm="handleTipConfirm" />
 
@@ -52,7 +46,6 @@
 
 <script setup>
 import customHeader from "@/components/customHeader.vue";
-import SaveRegionSuccessPopup from "@/components/popup/saveRegionSuccessPopup.vue";
 import { ref, computed, onActivated, onDeactivated, nextTick } from "vue";
 import { useStore } from "vuex";
 import DrawRegionMap from "../../interactionList/map/drawRegionMap.js";
@@ -74,15 +67,12 @@ const route = useRoute();
 const mapContainer = ref(null);
 const drawRegionMap = new DrawRegionMap();
 
-const showSuccessPopup = ref(false);
 const confirmDrawTypePopupRef = ref(null);
 const selectedDrawTypeMeta = ref({
     type: "",
     category: "",
     remark: "",
 });
-// 是否从第一个品种开始的引导流程(需要全部品种都确认后再退出)
-const isGuidedFlow = ref(false);
 // 每个品种(tab)对应的地块数据草稿:key 为 tab index,value 为 { geomArr, geom }
 const regionsDraftByIndex = ref({});
 const submitting = ref(false);
@@ -102,8 +92,22 @@ const regionTypeTabs = [
 ];
 const activeRegionType = ref("variety");
 
+const categoryMap = {
+    variety: [],
+    abnormal: [{regionName: "病害"}, {regionName: "虫害"}, {regionName: "长势过快"}, {regionName: "长势过慢"}],
+    environment: [{regionName: "渍水不畅"}, {regionName: "密不透风"}, {regionName: "高温灼伤"}, {regionName: "低温冻害"}],
+    sleep: [],
+};
+
 const handleRegionTypeClick = (item) => {
     activeRegionType.value = item.value;
+    activeVariety.value = 0;
+    if (item.value === "variety") {
+        varietyTabs.value = farmVarietyList.value;
+    } else {
+        varietyTabs.value = categoryMap[item.value];
+    }
+    // handleVarietyClick(varietyTabs.value[activeVariety.value], activeVariety.value);
     if (drawRegionMap.kmap) {
         applyRegionStyles();
     }
@@ -268,7 +272,7 @@ const handleVarietyClick = (tab, index) => {
 
     // // 每次切换/重绘地块前先清空“当前可编辑图层”
     // if (drawRegionMap.kmap?.polygonLayer?.source) {
-    //     drawRegionMap.kmap.polygonLayer.source.clear();
+    //     drawRegionMap.kmap.polygonLayer.source.clear(); 
     // }
     // 渲染当前品种之前的已勾画地块(灰色只读 + 品种名)
     renderReadonlyVarietyRegions(index);
@@ -279,13 +283,10 @@ const handleVarietyClick = (tab, index) => {
     }
 };
 
-const activeVarietyName = computed(() => {
-    const current = varietyTabs.value[activeVariety.value];
-    return current?.regionName || "";
-});
 const viewOnly = computed(() => route.query.type === "viewOnly");
 
 const point = ref(null);
+const farmVarietyList = ref([]);
 async function fetchFarmSubjectDetail() {
     const subjectId = route.query?.subjectId;
     if (!subjectId) return;
@@ -300,6 +301,7 @@ async function fetchFarmSubjectDetail() {
         }
 
         point.value = data.farmLocation;
+        farmVarietyList.value = data.regionList;
         varietyTabs.value = data.regionList;
         handleVarietyClick(varietyTabs.value[activeVariety.value], activeVariety.value);
     }
@@ -459,9 +461,6 @@ const confirmArea = async () => {
     const geom = geometryArr.length === 1 ? geometryArr[0] : JSON.stringify(geometryArr);
     regionsDraftByIndex.value[activeVariety.value] = { geomArr: geometryArr, geom };
 
-    // 任意品种确认后都进入引导流程(中间品种也可继续“下一步”)
-    isGuidedFlow.value = true;
-
     // 每次确认都提交接口(携带目前已确认过的所有品种 regions)
     const ok = await submitRegions();
     await VE_API.basic_farm.updateLastViewTime({
@@ -470,14 +469,15 @@ const confirmArea = async () => {
     fetchFarmSubjectDetail()
     if (!ok) return;
 
-    // 引导流程:弹成功提示,由弹窗控制“下一步/完成”
-    if (isGuidedFlow.value) {
-        showSuccessPopup.value = true;
+    if (route.query.showTipPopup) {
+        showTipPopup.value = true;
         return;
     }
-
-    // 非引导流程:确认后返回上一页
-    router.back();
+    if (route.query.targetUrl) {
+        router.replace(route.query.targetUrl);
+        return;
+    }
+    router.go(-1);
 };
 
 const openConfirmDrawTypePopup = () => {
@@ -489,7 +489,7 @@ const openConfirmDrawTypePopup = () => {
     }
     confirmDrawTypePopupRef.value.openPopup(
         {
-            varietyTabs: varietyTabs.value,
+            varietyTabs: farmVarietyList.value,
             activeRegionType: activeRegionType.value,
             activeVarietyIndex: activeVariety.value,
         }
@@ -501,41 +501,6 @@ const handleConfirmDrawType = async (payload) => {
     await confirmArea();
 };
 
-const handleKnow = () => {
-    showSuccessPopup.value = false;
-    if (route.query.showTipPopup) {
-        showTipPopup.value = true;
-        return;
-    }
-    if(route.query.targetUrl) {
-        router.replace(route.query.targetUrl);
-        return;
-    }
-    router.back();
-};
-
-const handleSelectNextVariety = () => {
-    if (varietyTabs.value.length === 0) {
-        handleKnow();
-        return;
-    }
-    const nextIndex = activeVariety.value + 1;
-    if (nextIndex < varietyTabs.value.length) {
-        const nextTab = varietyTabs.value[nextIndex];
-
-        // 勾画当前品种完成后,先用统一的 clearLayer 方法重置图层,再切换到下一个品种
-        if (drawRegionMap && typeof drawRegionMap.clearLayer === "function") {
-            drawRegionMap.clearLayer();
-        }
-
-        handleVarietyClick(nextTab, nextIndex);
-        showSuccessPopup.value = false;
-    } else {
-        // 如果已经是最后一个品种,则直接返回上一页
-        handleKnow();
-    }
-};
-
 const handleEditRegion = () => {
     // 从查看态切换到可勾画编辑态:移除查看标记并重建地图(editable=true)
     const nextQuery = { ...route.query };
@@ -634,7 +599,7 @@ const handleTipConfirm = () => {
     .edit-map-content {
         width: 100%;
         margin-top: 10px;
-        height: calc(100% - 202px);
+        height: calc(100% - 162px);
         position: relative;
 
         .edit-map-tip {