|
|
@@ -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);
|