huangxz
2026-08-12 fabd5af6b48efcf029919bb1cdb6ba471fcc2eb1
fix(fence): 前端运营区重叠校验排除测试中围栏

绘制/保存运营区时,仅将 areaStatus=1 的已启用运营区纳入
相交/包含判断,避免测试中围栏(areaStatus=2)误触发
"当前区域已有运营区"提示。
1个文件已修改
13 ■■■■■ 已修改文件
src/views/businessOperations/geofenceManagement/detail.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/businessOperations/geofenceManagement/detail.vue
@@ -364,17 +364,17 @@
      message.error('运营区域不允许自相交')
      return
    }
    const fenceArea = renderedPolygons.value.filter((item: any) => item.areaType === 1).find((item: any) => isPolygonIntersectOthers(fencePoints, item.points))
    const fenceArea = renderedPolygons.value.filter((item: any) => item.areaType === 1 && item.areaStatus === 1).find((item: any) => isPolygonIntersectOthers(fencePoints, item.points))
    if (fenceArea) {
      message.error(`当前区域已有运营区,若需修改,请编辑${fenceArea.areaName}`)
      return
    }
    const fenceContained = renderedPolygons.value.filter((item: any) => item.areaType === 1).find((item: any) => isPolygonContained(fencePoints, item.points))
    const fenceContained = renderedPolygons.value.filter((item: any) => item.areaType === 1 && item.areaStatus === 1).find((item: any) => isPolygonContained(fencePoints, item.points))
    if (fenceContained) {
      message.error(`当前区域已被${fenceContained.areaName}包含,若需修改,请编辑${fenceContained.areaName}`)
      return
    }
    const fenceContainOthers = renderedPolygons.value.filter((item: any) => item.areaType === 1).find((item: any) => isPolygonContainOthers(fencePoints, item.points))
    const fenceContainOthers = renderedPolygons.value.filter((item: any) => item.areaType === 1 && item.areaStatus === 1).find((item: any) => isPolygonContainOthers(fencePoints, item.points))
    if (fenceContainOthers) {
      message.error(`当前区域包含${fenceContainOthers.areaName},若需修改,请编辑${fenceContainOthers.areaName}`)
    }
@@ -1499,17 +1499,17 @@
    message.error('运营区域不允许自相交')
    return
  }
  const fenceArea = renderedPolygons.value.filter((item: any) => item.areaType === 1).find((item: any) => isPolygonIntersectOthers(fencePoints, item.points))
  const fenceArea = renderedPolygons.value.filter((item: any) => item.areaType === 1 && item.areaStatus === 1).find((item: any) => isPolygonIntersectOthers(fencePoints, item.points))
  if (fenceArea) {
    message.error(`当前区域已有运营区,若需修改,请编辑${fenceArea.areaName}`)
    return
  }
  const fenceContained = renderedPolygons.value.filter((item: any) => item.areaType === 1).find((item: any) => isPolygonContained(fencePoints, item.points))
  const fenceContained = renderedPolygons.value.filter((item: any) => item.areaType === 1 && item.areaStatus === 1).find((item: any) => isPolygonContained(fencePoints, item.points))
  if (fenceContained) {
    message.error(`当前区域已被${fenceContained.areaName}包含,若需修改,请编辑${fenceContained.areaName}`)
    return
  }
  const fenceContainOthers = renderedPolygons.value.filter((item: any) => item.areaType === 1).find((item: any) => isPolygonContainOthers(fencePoints, item.points))
  const fenceContainOthers = renderedPolygons.value.filter((item: any) => item.areaType === 1 && item.areaStatus === 1).find((item: any) => isPolygonContainOthers(fencePoints, item.points))
  if (fenceContainOthers) {
    message.error(`当前区域包含${fenceContainOthers.areaName},若需修改,请编辑${fenceContainOthers.areaName}`)
    return
@@ -1856,6 +1856,7 @@
        points,
        areaType: item.areaType,
        areaName: item.areaName,
        areaStatus: Number(item.areaStatus),
      })
    }
  })