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"}], })