From e46ebf65753aa6b167289bd2fc6c12af8fd309e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=BE=E8=82=83?= <15833576927@163.com> Date: Mon, 20 May 2024 17:46:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=9C=B0=E5=9D=97=E5=89=8D?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=9C=B0=E5=9D=97=E9=87=8D=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/system/base/massifForm.vue | 47 +++++++++++++++++----------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/src/views/system/base/massifForm.vue b/src/views/system/base/massifForm.vue index 2fb9ee6..24b8ccf 100644 --- a/src/views/system/base/massifForm.vue +++ b/src/views/system/base/massifForm.vue @@ -8,7 +8,9 @@ import {isArray} from "@/utils/validate.js"; import {ElMessage} from "element-plus"; import {areaConversion} from "@/utils/ruoyi.js"; import * as turf from "@turf/turf"; -let { proxy } = getCurrentInstance(); +import {lazyAMapApiLoaderInstance} from "@vuemap/vue-amap"; + +let {proxy} = getCurrentInstance(); const uploadJsonData = ref([]) const props = defineProps({}) const settingsStore = useSettingsStore() @@ -109,27 +111,34 @@ const uploadJson = (file) => { } } const formRef = ref(null) +// 已有地块列表 +const polygonList = ref([]) const saveMassif = () => { - proxy.$refs["formRef"].validate(valid => { - if (valid){ - let newFormData = deepClone(formData.value) - for (let item of newFormData.coordinateList) { - if (!item.longitude || !item.latitude){ - ElMessage.error('请确认坐标是否完整') - return - } + lazyAMapApiLoaderInstance.then(() => { + let newFormData = deepClone(formData.value) + for (let item of newFormData.coordinateList) { + if (!item.longitude || !item.latitude || !newFormData.massifName) { + ElMessage.error('地块保存失败,请确认地块名称和坐标点均已填写。') + return } - if (formData.value.coordinateType === 2){ - newFormData.coordinateList = uploadJsonData.value + } + let polygonTemp = newFormData.coordinateList.map(item =>[item.longitude, item.latitude]) + for (let item of polygonList.value) { + if (AMap.GeometryUtil.doesRingRingIntersect(polygonTemp.value, item.path) || AMap.GeometryUtil.isRingInRing(polygonTemp.value, item.path) || AMap.GeometryUtil.isRingInRing(item.path, polygonTemp.value)) { + ElMessage.error('当前地块与已有地块边界重合,请修改后再确认') + return } - emit('beforeSubmit', formData.value) - loading.value = true - setTimeout(() => { - loading.value = false - emit('submitSuccess', formData.value) - showDrawer.value = false - }, 2000) } + if (formData.value.coordinateType === 2) { + newFormData.coordinateList = uploadJsonData.value + } + emit('beforeSubmit', formData.value) + loading.value = true + setTimeout(() => { + loading.value = false + emit('submitSuccess', formData.value) + showDrawer.value = false + }, 2000) }) } @@ -139,7 +148,7 @@ defineExpose({ toView }) const rules = ref({ - massifName: [{ required: true, message: "地块名称不能为空", trigger: "blur" }], + massifName: [{required: true, message: "地块名称不能为空", trigger: "blur"}], })