|
|
@@ -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 {
|