@yimou6/common-ui 1.14.6 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"geoMark.mjs","sources":["../../../../../../../packages/components/geoMark/src/geoMark.ts"],"sourcesContent":["import type { ComponentPublicInstance, ExtractPropTypes, PropType } from \"vue\";\n\ntype FeatureTypeEnum = \"Areas\" | \"Devices\" | \"Facilities\" | \"Cameras\";\n\n// OpenLayers 相关类型定义\n// 说明:ol 库真实类型(Feature/Map/View/VectorSource 等)结构复杂,\n// 手写简化类型会与 ol 的强类型冲突,这里统一用 any 以兼容真实 ol 对象。\ntype OpenLayersFeature = any;\ntype OpenLayersGeometry = any;\ntype OpenLayersMap = any;\ntype OpenLayersView = any;\ntype OpenLayersVectorSource = any;\n\ninterface OpenLayersFormat {\n GeoJSON: {\n new (): {\n readFeatures: (geojson: any) => OpenLayersFeature[];\n writeFeatures: (features: OpenLayersFeature[]) => string;\n };\n };\n}\n\ninterface OpenLayersFeatureConstructor {\n new (properties: Record<string, any>): OpenLayersFeature;\n}\n\ninterface OpenLayersGeometryConstructor {\n Point: {\n new (coordinates: number[]): OpenLayersGeometry;\n };\n Polygon: {\n new (coordinates: number[][][]): OpenLayersGeometry;\n };\n}\n\n// 地图组件相关类型\ninterface MapComponent {\n getMap: () => OpenLayersMap;\n getVectorSource: () => OpenLayersVectorSource;\n getView: () => OpenLayersView;\n calculateAutoZoom: () => void;\n createIcon: (iconUrl: string, scale: number) => any;\n}\n\n// 事件相关类型\ninterface DragEvent {\n screenX: number;\n screenY: number;\n [key: string]: any;\n}\n\ninterface MapPointerEvent {\n pixel: number[];\n originalEvent: any;\n}\n\n// 颜色选择器类型\ninterface ColorPickerValue {\n rgba: {\n r: number;\n g: number;\n b: number;\n a: number;\n };\n hex?: string;\n hsl?: {\n h: number;\n s: number;\n l: number;\n };\n}\n\n// 楼层组件类型\ninterface FloorComponent {\n init: (floors: Floor[], defaultFloor: Floor) => void;\n}\n\n// 扩展原有的接口定义\ninterface Device {\n code: string;\n deviceType?: string;\n deviceTypeName?: string;\n videoName?: string;\n remark?: string;\n floor?: string | number;\n [key: string]: any;\n}\n\ninterface Floor {\n floor: string | number;\n bucketName?: string;\n geojson?: any;\n videoGeoJson?: any;\n facilityGeoJson?: any;\n [key: string]: any;\n}\n\ninterface ConfigIcon {\n [code: string]: string;\n}\n\ninterface ConfigTopBarItem {\n name: string;\n icon: string;\n value: string;\n}\n\ninterface ConfigBottomBarItem {\n name: string;\n icon: string;\n}\n\ninterface MenuItem {\n text: string;\n icon: string;\n callback: (val: any) => void;\n classname?: string;\n}\n\ninterface OptionType {\n label: string;\n value: string;\n key: string;\n}\n\ninterface QueryDeviceListType {\n activatedDeviceType: string;\n activatedManufacturer: string;\n activatedDeviceModel: string;\n}\n\ninterface OpenParams {\n listFloor: Floor[];\n listDevice: Device[];\n defaultFloor?: Floor | null;\n waring?: string | number | null;\n listTitle?: string;\n configIcon?: ConfigIcon;\n configTopBar?: ConfigTopBarItem[];\n type?: string;\n featureType?: FeatureTypeEnum[] | [];\n /**\n * 是否按底图真实像素尺寸建立坐标系。\n * - true(默认):按当前楼层底图的 naturalWidth/Height 动态设置 extent。\n * - false:保持旧版本行为,extent/size 固定为 [0,0,800,600],兼容旧点位数据。\n */\n useRealImageSize?: boolean;\n}\n\ninterface MapEvent {\n pixel: number[];\n coordinate: number[];\n feature?: OpenLayersFeature;\n geometry?: OpenLayersGeometry;\n}\n\ninterface DrawEvent {\n feature: OpenLayersFeature;\n type?: string;\n}\n\ninterface StyleUpdateParams {\n feature?: OpenLayersFeature;\n isSelected?: boolean;\n offset?: number;\n}\n\ninterface SaveResult {\n geojson: string;\n floor: Floor | undefined;\n}\n\n// 组件事件类型\ninterface ComponentEmits {\n closeMain: [];\n saveMain: [result: SaveResult];\n}\n\n// 组件Props类型\ninterface ComponentProps {\n type?: string;\n}\n\n// 注入的类型\ninterface Injections {\n \"ol-format\": OpenLayersFormat;\n \"ol-feature\": OpenLayersFeatureConstructor;\n \"ol-geom\": OpenLayersGeometryConstructor;\n}\n\nexport type {\n ColorPickerValue,\n ComponentEmits,\n ComponentProps,\n ConfigBottomBarItem,\n ConfigIcon,\n ConfigTopBarItem,\n Device,\n DragEvent,\n DrawEvent,\n FeatureTypeEnum,\n Floor,\n FloorComponent,\n Injections,\n MapComponent,\n MapEvent,\n MapPointerEvent,\n MenuItem,\n OpenLayersFeature,\n OpenLayersFeatureConstructor,\n OpenLayersFormat,\n OpenLayersGeometry,\n OpenLayersGeometryConstructor,\n OpenLayersMap,\n OpenLayersVectorSource,\n OpenLayersView,\n OpenParams,\n OptionType,\n QueryDeviceListType,\n SaveResult,\n StyleUpdateParams,\n};\n\nexport const GeoMarkProps = {\n type: { type: String as PropType<string>, default: \"\" },\n};\n\nexport type GeoMarkPropsType = ExtractPropTypes<typeof GeoMarkProps>;\nexport type GeoMarkInstance = ComponentPublicInstance & {\n open: (params: OpenParams) => Promise<void>;\n};\n"],"names":[],"mappings":"AA+NO,MAAM,YAAe,GAAA;AAAA,EAC1B,IAAM,EAAA,EAAE,IAAM,EAAA,MAAA,EAA4B,SAAS,EAAG;AACxD;;;;"}
1
+ {"version":3,"file":"geoMark.mjs","sources":["../../../../../../../packages/components/geoMark/src/geoMark.ts"],"sourcesContent":["import type { ComponentPublicInstance, ExtractPropTypes, PropType } from \"vue\";\n\ntype FeatureTypeEnum = \"Areas\" | \"Devices\" | \"Facilities\" | \"Cameras\";\n\n// OpenLayers 相关类型定义\n// 说明:ol 库真实类型(Feature/Map/View/VectorSource 等)结构复杂,\n// 手写简化类型会与 ol 的强类型冲突,这里统一用 any 以兼容真实 ol 对象。\ntype OpenLayersFeature = any;\ntype OpenLayersGeometry = any;\ntype OpenLayersMap = any;\ntype OpenLayersView = any;\ntype OpenLayersVectorSource = any;\n\ninterface OpenLayersFormat {\n GeoJSON: {\n new (): {\n readFeatures: (geojson: any) => OpenLayersFeature[];\n writeFeatures: (features: OpenLayersFeature[]) => string;\n };\n };\n}\n\ninterface OpenLayersFeatureConstructor {\n new (properties: Record<string, any>): OpenLayersFeature;\n}\n\ninterface OpenLayersGeometryConstructor {\n Point: {\n new (coordinates: number[]): OpenLayersGeometry;\n };\n Polygon: {\n new (coordinates: number[][][]): OpenLayersGeometry;\n };\n}\n\n// 地图组件相关类型\ninterface MapComponent {\n getMap: () => OpenLayersMap;\n getVectorSource: () => OpenLayersVectorSource;\n getView: () => OpenLayersView;\n calculateAutoZoom: () => void;\n createIcon: (iconUrl: string, scale: number) => any;\n}\n\n// 事件相关类型\ninterface DragEvent {\n screenX: number;\n screenY: number;\n [key: string]: any;\n}\n\ninterface MapPointerEvent {\n pixel: number[];\n originalEvent: any;\n}\n\n// 颜色选择器类型\ninterface ColorPickerValue {\n rgba: {\n r: number;\n g: number;\n b: number;\n a: number;\n };\n hex?: string;\n hsl?: {\n h: number;\n s: number;\n l: number;\n };\n}\n\n// 楼层组件类型\ninterface FloorComponent {\n init: (floors: Floor[], defaultFloor: Floor) => void;\n}\n\n// 扩展原有的接口定义\ninterface Device {\n code: string;\n deviceType?: string;\n deviceTypeName?: string;\n videoName?: string;\n remark?: string;\n floor?: string | number;\n [key: string]: any;\n}\n\ninterface Floor {\n floor: string | number;\n bucketName?: string;\n geojson?: any;\n videoGeoJson?: any;\n facilityGeoJson?: any;\n [key: string]: any;\n}\n\ninterface ConfigIcon {\n [code: string]: string;\n}\n\ninterface ConfigTopBarItem {\n name: string;\n icon: string;\n value: string;\n}\n\ninterface ConfigBottomBarItem {\n name: string;\n icon: string;\n}\n\ninterface MenuItem {\n text: string;\n icon: string;\n callback: (val: any) => void;\n classname?: string;\n}\n\ninterface OptionType {\n label: string;\n value: string;\n key: string;\n}\n\ninterface QueryDeviceListType {\n activatedDeviceType: string;\n activatedManufacturer: string;\n activatedDeviceModel: string;\n}\n\ninterface OpenParams {\n listFloor: Floor[];\n listDevice: Device[];\n defaultFloor?: Floor | null;\n waring?: string | number | null;\n listTitle?: string;\n configIcon?: ConfigIcon;\n configTopBar?: ConfigTopBarItem[];\n type?: string;\n featureType?: FeatureTypeEnum[] | [];\n /**\n * 是否按底图真实像素尺寸建立坐标系。\n * - false(默认):保持旧版本行为,extent/size 固定为 [0,0,1024,968],兼容旧点位数据。\n * - true:按当前楼层底图的 naturalWidth/Height 动态设置 extent(新项目推荐)。\n */\n useRealImageSize?: boolean;\n}\n\ninterface MapEvent {\n pixel: number[];\n coordinate: number[];\n feature?: OpenLayersFeature;\n geometry?: OpenLayersGeometry;\n}\n\ninterface DrawEvent {\n feature: OpenLayersFeature;\n type?: string;\n}\n\ninterface StyleUpdateParams {\n feature?: OpenLayersFeature;\n isSelected?: boolean;\n offset?: number;\n}\n\ninterface SaveResult {\n geojson: string;\n floor: Floor | undefined;\n}\n\n// 组件事件类型\ninterface ComponentEmits {\n closeMain: [];\n saveMain: [result: SaveResult];\n}\n\n// 组件Props类型\ninterface ComponentProps {\n type?: string;\n}\n\n// 注入的类型\ninterface Injections {\n \"ol-format\": OpenLayersFormat;\n \"ol-feature\": OpenLayersFeatureConstructor;\n \"ol-geom\": OpenLayersGeometryConstructor;\n}\n\nexport type {\n ColorPickerValue,\n ComponentEmits,\n ComponentProps,\n ConfigBottomBarItem,\n ConfigIcon,\n ConfigTopBarItem,\n Device,\n DragEvent,\n DrawEvent,\n FeatureTypeEnum,\n Floor,\n FloorComponent,\n Injections,\n MapComponent,\n MapEvent,\n MapPointerEvent,\n MenuItem,\n OpenLayersFeature,\n OpenLayersFeatureConstructor,\n OpenLayersFormat,\n OpenLayersGeometry,\n OpenLayersGeometryConstructor,\n OpenLayersMap,\n OpenLayersVectorSource,\n OpenLayersView,\n OpenParams,\n OptionType,\n QueryDeviceListType,\n SaveResult,\n StyleUpdateParams,\n};\n\nexport const GeoMarkProps = {\n type: { type: String as PropType<string>, default: \"\" },\n};\n\nexport type GeoMarkPropsType = ExtractPropTypes<typeof GeoMarkProps>;\nexport type GeoMarkInstance = ComponentPublicInstance & {\n open: (params: OpenParams) => Promise<void>;\n};\n"],"names":[],"mappings":"AA+NO,MAAM,YAAe,GAAA;AAAA,EAC1B,IAAM,EAAA,EAAE,IAAM,EAAA,MAAA,EAA4B,SAAS,EAAG;AACxD;;;;"}
@@ -293,7 +293,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
293
293
  configIcon: {},
294
294
  configTopBar: [],
295
295
  featureType: ["Areas"],
296
- useRealImageSize: true
296
+ useRealImageSize: false
297
297
  }) => {
298
298
  var _a, _b, _c;
299
299
  if (params.featureType && params.featureType.length > 0) {
@@ -305,7 +305,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
305
305
  if (params.listTitle) {
306
306
  listTitle.value = params.listTitle;
307
307
  }
308
- useRealImageSize.value = (_a = params.useRealImageSize) != null ? _a : true;
308
+ useRealImageSize.value = (_a = params.useRealImageSize) != null ? _a : false;
309
309
  listFloor.value = params.listFloor;
310
310
  listDevice.value = params.listDevice;
311
311
  listAllDevice.value = params.listDevice;
@@ -1 +1 @@
1
- {"version":3,"file":"geoMark.vue2.mjs","sources":["../../../../../../../packages/components/geoMark/src/geoMark.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @ts-nocheck\nimport { isNil } from \"lodash-es\";\nimport {\n never,\n platformModifierKeyOnly,\n primaryAction,\n} from \"ol/events/condition.js\";\n\nimport Feature from \"ol/Feature\";\nimport GeoJSON from \"ol/format/GeoJSON.js\";\n\nimport Point from \"ol/geom/Point.js\";\nimport Polygon from \"ol/geom/Polygon.js\";\nimport Draw from \"ol/interaction/Draw.js\";\nimport Modify from \"ol/interaction/Modify.js\";\nimport Translate from \"ol/interaction/Translate.js\";\nimport VectorLayer from \"ol/layer/Vector.js\";\n\nimport { Fill, Stroke, Text } from \"ol/style\";\nimport CircleStyle from \"ol/style/Circle.js\";\nimport Style from \"ol/style/Style\";\nimport { computed, nextTick, onMounted, onUnmounted, ref } from \"vue\";\nimport defaultImage from \"./assets/default.png\";\nimport waringIcon from \"./assets/waring.png\";\n\nimport saveIcon from \"./assets/保存.png\";\nimport deleteIcon from \"./assets/删除.png\";\nimport svgOverlay from \"./assets/新弹框.png\";\nimport defaultIcon from \"./assets/灭火器.png\";\nimport editIcon from \"./assets/编辑.png\";\nimport colorIcon from \"./assets/颜色.png\";\nimport FloorMark from \"./floor.vue\";\nimport { GeoMarkProps } from \"./geoMark\";\nimport openMapNew from \"./openMap.vue\";\nimport type {\n ConfigBottomBarItem,\n ConfigIcon,\n ConfigTopBarItem,\n Device,\n DragEvent,\n DrawEvent,\n FeatureTypeEnum,\n Floor,\n MenuItem,\n OpenLayersFeature,\n OpenParams,\n OptionType,\n QueryDeviceListType,\n} from \"./geoMark\";\n\ndefineOptions({ name: \"IGeoMark\" });\n\n// 组件props定义\nconst props = defineProps(GeoMarkProps);\n\n// 事件定义\nconst emit = defineEmits<{\n closeMain: [];\n saveMain: [result: { geojson: string; floor: Floor | undefined }];\n}>();\n\n// 警告气泡坐标\nconst activatedPositionOverlayWaring = ref<number[]>([]);\n\n// 新增响应式数据\nconst drawInteraction = ref<any>(null);\nconst modifyInteraction = ref<any>(null);\nconst translateInteraction = ref<any>(null);\nconst currentDrawType = ref<string>(\"Polygon\");\n\n// -------------------- 生命周期钩子 --------------------\nonMounted(() => {\n window.addEventListener(\"popstate\", (e: PopStateEvent) => {\n document.documentElement.classList.remove(\"dark\");\n e.preventDefault();\n });\n});\n\nonUnmounted(() => {\n document.documentElement.classList.remove(\"dark\");\n});\n\n// -------------------- 业务状态与交互 --------------------\nconst activatedList = ref<boolean>(true); // 信息面板tab切换\nconst activatedFold = ref<boolean>(false); // 信息面板折叠\nconst FnUpdateActivatedFold = (): void => {\n activatedFold.value = !activatedFold.value;\n};\n\nconst listFloor = ref<Floor[]>([]);\nconst listDevice = ref<Device[]>([]);\nconst listAllDevice = ref<Device[]>([]); // Devices/Facilities\nconst listTitle = ref<string>(\"设备信息列表\");\n\nconst configIcon = ref<ConfigIcon>({});\n\n// 顶部栏配置\nconst configTopBar = ref<ConfigTopBarItem[]>([\n { name: `单位名:`, icon: \"icon-jianzhu02-L\", value: \"-----\" },\n { name: `建筑名:`, icon: \"icon-jianzhu03-L\", value: \"-----\" },\n { name: \"退出\", icon: \"icon-fanhui3\", value: \"-----\" },\n]);\n\n// 底部栏配置\nconst configBottomBar = ref<ConfigBottomBarItem[]>([\n { name: \"选择\", icon: \"icon-xuanze\" },\n { name: \"编辑\", icon: \"icon-xiugai\" },\n { name: \"重置\", icon: \"icon-zhongzhi1\" },\n { name: \"放大\", icon: \"icon-fangda\" },\n { name: \"缩小\", icon: \"icon-suoxiao\" },\n { name: \"颜色\", icon: \"icon-yanse\" },\n { name: \"区域设置\", icon: \"icon-shezhi\" },\n { name: \"原始尺寸\", icon: \"icon-chicun\" },\n { name: \"保存\", icon: \"icon-Save\" },\n]);\n\nconst configBottomBar2 = ref<ConfigBottomBarItem[]>([\n { name: \"区域模板\", icon: \"icon-moban2\" },\n { name: \"区域绘制\", icon: \"icon-pencel\" },\n]);\n\nconst activatedMode = computed<string>(() => {\n return props.type || \"edit\";\n});\n\nconst activatedBottomBar = ref<string>(\"选择\");\nconst activatedFloor = ref<Floor | undefined>();\nconst refFloor = ref<InstanceType<typeof FloorMark> | null>(null);\nconst alarmType = ref<string>(\"fire\");\nconst filtrationType = ref<FeatureTypeEnum[]>([]);\n// 告警设备 code(string/number/null),空字符串/null 视为无告警\nconst waring = ref<string | number | null>(null);\n\n// 是否按底图真实像素尺寸建立坐标系(默认 true,按真实像素;旧 1024×968 数据需显式传 false)\n// 切换楼层时也沿用 open() 时的设置,确保同一组件实例行为一致\nconst useRealImageSize = ref<boolean>(false);\n\n// 是否存在有效的告警配置\nconst hasWaring = computed<boolean>(() => {\n const w = waring.value;\n return w != null && w !== \"\";\n});\n\n// code 是否命中告警设备(单值比较)\nconst isWaringCode = (code: unknown): boolean => {\n const w = waring.value;\n return w != null && w !== \"\" && w === code;\n};\n\n// 地图相关数据\nconst imgUrl = ref<string>(defaultImage);\nconst rrefMap = ref<any>(null);\n// openMap 子组件(v-if 条件渲染)是否已挂载就绪,以及就绪前缓存的待初始化楼层。\n// 解决首次渲染时 rrefMap 尚未就绪导致矢量标注丢失、视图缩放不生效的问题\nconst mapReady = ref<boolean>(false);\nconst pendingInit = ref<Floor | null>(null);\nconst activatedPositionOverlay = ref<number[]>([]);\nconst activatedPropertiesOverlay = ref<Record<string, any>>({});\nconst activatedArrayFeatures = ref<OpenLayersFeature[]>([]);\nconst activatedFeature = ref<OpenLayersFeature | null>(null);\nconst move1 = ref<number[]>([]);\n\n// 区域默认颜色(颜色面板选择后,后续绘制/模板使用)\nconst defaultColor = ref<string>(\"rgba(255,255,51,0.2)\");\n\n// 颜色面板选项\nconst colorList = ref<{ name: string; value: string }[]>([\n { name: \"黄色\", value: \"rgba(255,255,51,0.2)\" },\n { name: \"红色\", value: \"rgba(255,0,0,0.25)\" },\n { name: \"绿色\", value: \"rgba(0,255,0,0.25)\" },\n { name: \"蓝色\", value: \"rgba(0,120,255,0.25)\" },\n { name: \"橙色\", value: \"rgba(255,150,0,0.3)\" },\n { name: \"紫色\", value: \"rgba(150,0,255,0.25)\" },\n]);\n\n// 地图中心、缩放等配置\nconst center = ref<number[]>([0, 0]);\nconst zoom = ref<number>(1); // 修改默认缩放级别为1,确保完整显示图片\nconst projection = ref<string>(\"EPSG:3857\");\nconst size = ref<number[]>([1024, 968]);\nconst extent = ref<number[]>([0, 0, 1024, 968]);\n\n// 选项配置\nconst configOptionsDeviceType = ref<OptionType[]>([]);\nconst configOptionsDeviceModel = ref<OptionType[]>([]);\nconst configOptionsManufacturer = ref<OptionType[]>([]);\n\n// 查询设备列表\nconst queryDeviceList = ref<QueryDeviceListType>({\n activatedDeviceType: \"\",\n activatedManufacturer: \"\",\n activatedDeviceModel: \"\",\n});\n\n// 拖拽相关\nconst activatedDragItem = ref<Device>();\n\n// 筛选条件\nconst deviceTypeSet = new Set<string>(); // 设备类型\nconst manufacturerSet = new Set<string>(); // 生产商\nconst deviceModelSet = new Set<string>(); // 设备型号\n\n// -------------------- 方法定义 --------------------\n\n/**\n * 创建要素样式\n */\nconst createAdvancedStyle = (_feature: OpenLayersFeature) => {\n return [\n new Style({\n fill: new Fill({ color: \"rgba(255, 255, 255, 0.2)\" }),\n stroke: new Stroke({ color: \"#ffcc33\", width: 2 }),\n image: new CircleStyle({\n radius: 7,\n fill: new Fill({ color: \"#ffcc33\" }),\n }),\n }),\n ];\n};\n\n/**\n * 初始化高级修改交互\n */\nconst initAdvancedModify = () => {\n if (!rrefMap.value) return;\n\n const source = rrefMap.value.getVectorSource();\n\n // 移除现有的修改交互\n if (modifyInteraction.value) {\n rrefMap.value.getMap().removeInteraction(modifyInteraction.value);\n }\n\n // 创建新的修改交互\n modifyInteraction.value = new Modify({\n source,\n condition(event: any) {\n return primaryAction(event) && !platformModifierKeyOnly(event);\n },\n deleteCondition: never,\n insertVertexCondition: never,\n style(feature: OpenLayersFeature, resolution: number) {\n // 应用高级样式\n return createAdvancedStyle(feature);\n },\n });\n\n // 添加修改开始事件\n modifyInteraction.value.on(\"modifystart\", (event: any) => {\n event.features.forEach((feature: OpenLayersFeature) => {\n feature.set(\n \"modifyGeometry\",\n { geometry: feature.getGeometry().clone() },\n true,\n );\n });\n });\n\n // 添加修改结束事件\n modifyInteraction.value.on(\"modifyend\", (event: any) => {\n event.features.forEach((feature: OpenLayersFeature) => {\n const modifyGeometry = feature.get(\"modifyGeometry\");\n if (modifyGeometry) {\n feature.setGeometry(modifyGeometry.geometry);\n feature.unset(\"modifyGeometry\", true);\n }\n });\n });\n\n rrefMap.value.getMap().addInteraction(modifyInteraction.value);\n};\n\n/**\n * 初始化平移交互\n */\nconst initTranslate = () => {\n if (!rrefMap.value) return;\n\n // 移除现有的平移交互\n if (translateInteraction.value) {\n rrefMap.value.getMap().removeInteraction(translateInteraction.value);\n }\n\n // 创建新的平移交互\n translateInteraction.value = new Translate({\n condition(event: any) {\n return primaryAction(event) && platformModifierKeyOnly(event);\n },\n layers: [\n rrefMap.value\n .getMap()\n .getLayers()\n .getArray()\n .filter((layer: any) => layer instanceof VectorLayer),\n ],\n });\n\n rrefMap.value.getMap().addInteraction(translateInteraction.value);\n};\n\n/**\n * 初始化绘制交互\n */\nconst initDraw = (type: string = \"Polygon\") => {\n if (!rrefMap.value) return;\n\n // 移除现有的绘制交互\n if (drawInteraction.value) {\n rrefMap.value.getMap().removeInteraction(drawInteraction.value);\n }\n\n // 创建新的绘制交互\n drawInteraction.value = new Draw({\n source: rrefMap.value.getVectorSource(),\n type: type as any,\n });\n\n // 添加绘制完成事件\n drawInteraction.value.on(\"drawend\", (event: any) => {\n const feature = event.feature;\n feature.set(\"color\", defaultColor.value);\n feature.set(\"text\", \"新绘制区域\");\n\n // 应用高级样式\n feature.setStyle(createAdvancedStyle(feature));\n });\n\n rrefMap.value.getMap().addInteraction(drawInteraction.value);\n};\n\n/**\n * 打开地图主入口,初始化各类数据\n * @param params 业务参数\n */\nconst open = async (\n params: OpenParams = {\n listFloor: [],\n listDevice: [],\n defaultFloor: null,\n waring: null,\n listTitle: \"设备信息列表\",\n configIcon: {},\n configTopBar: [],\n featureType: [\"Areas\"] as FeatureTypeEnum[],\n useRealImageSize: true,\n },\n): Promise<void> => {\n if (params.featureType && params.featureType.length > 0) {\n filtrationType.value = params.featureType;\n }\n if (params.type) {\n alarmType.value = params.type;\n }\n if (params.listTitle) {\n listTitle.value = params.listTitle;\n }\n // 尊重调用方传参;默认 true 按底图真实像素建立坐标系(旧 1024×968 点位数据需传 false 兼容)\n useRealImageSize.value = params.useRealImageSize ?? true;\n listFloor.value = params.listFloor;\n listDevice.value = params.listDevice;\n listAllDevice.value = params.listDevice;\n configIcon.value = params.configIcon || {};\n configTopBar.value = params.configTopBar || [];\n waring.value = params.waring ?? null;\n const defaultFloor = params.defaultFloor\n ? params.defaultFloor\n : listFloor.value[0];\n refFloor.value?.init(listFloor.value, defaultFloor);\n\n // 提取筛选条件\n const floorList = listFloor.value.map((item: Floor) => item.floor);\n listAllDevice.value\n .filter((ls) => ls.floor != null && floorList.includes(ls.floor))\n .forEach((item: Device) => {\n if (item.deviceTypeName) deviceTypeSet.add(item.deviceTypeName);\n if (item.manufacturerName) manufacturerSet.add(item.manufacturerName);\n if (item.deviceModelName) deviceModelSet.add(item.deviceModelName);\n });\n // 初始化选项配置\n configOptionsDeviceType.value = Array.from(deviceTypeSet)\n .map((type) => ({\n label: type,\n value: type,\n key: type,\n }))\n .filter((e) => !isNil(e.label));\n configOptionsManufacturer.value = Array.from(manufacturerSet)\n .map((manufacturer) => ({\n label: manufacturer,\n value: manufacturer,\n key: manufacturer,\n }))\n .filter((e) => !isNil(e.label));\n configOptionsDeviceModel.value = Array.from(deviceModelSet)\n .map((deviceModel) => ({\n label: deviceModel,\n value: deviceModel,\n key: deviceModel,\n }))\n .filter((e) => !isNil(e.label));\n\n // 地图初始化交给 openMap 的 @ready 事件:组件挂载完成后再执行,\n // 避免首次渲染时 rrefMap 尚未就绪导致标注丢失、视图缩放不生效(需点两次的问题)\n if (mapReady.value) {\n initMap(activatedFloor.value || defaultFloor);\n } else {\n // openMap 为 v-if 条件渲染(依赖 activatedFloor?.bucketName),\n // 先设置默认楼层以触发其渲染,待 @ready 后再完成数据加载\n activatedFloor.value = defaultFloor;\n pendingInit.value = defaultFloor;\n }\n};\n\n/**\n * openMap 子组件挂载完成(@ready)后回调。\n * 此时 rrefMap / getVectorSource / getView 均已可用,可安全初始化地图。\n */\nconst handleMapReady = (): void => {\n mapReady.value = true;\n const floor = pendingInit.value || activatedFloor.value;\n if (floor) {\n pendingInit.value = null;\n initMap(floor);\n }\n};\n\n// 查找告警设备并应用告警效果:\n// - 命中告警的要素 → 补上告警气泡(activatedPositionOverlayWaring)\n// - centerOnWarning=true(open/initMap 初始化场景):弹出设备信息面板并定位视图;\n// false(楼层切换场景):只补气泡,不打扰浏览\n// 定位必须放在宏任务中执行:图片加载适配(loadingSource → nextTick 后 fit 全图,\n// 以及 openMap 内 extent watch → nextTick calculateAutoZoom)都在微任务链中完成,\n// 若定位紧跟在这些逻辑之前执行,会被后续的 fit 全图 / setCenter(图片中心) 覆盖,\n// 造成\"打开时不自动定位到告警设备、要等鼠标悬停(overlay autoPan)才定位\"的现象。\nconst locateWaringFeature = (centerOnWarning: boolean): void => {\n if (!hasWaring.value || !rrefMap.value) return;\n const features = rrefMap.value.getVectorSource().getFeatures();\n const target = features.find((feature: OpenLayersFeature) =>\n isWaringCode(feature.get(\"code\")),\n );\n if (!target) return;\n const position = target.getGeometry()!.getCoordinates() as number[];\n activatedPositionOverlayWaring.value = position;\n if (centerOnWarning) {\n activatedPositionOverlay.value = position;\n activatedPropertiesOverlay.value = target.getProperties();\n // 仅居中、不放大(产品确认):zoom 保持全图适配级别\n setTimeout(() => {\n rrefMap.value?.getView()?.setCenter(position);\n }, 0);\n }\n};\n\nfunction loadFeaturesAndHandleWarning(\n geojson: any,\n centerOnWarning = true,\n): void {\n const features = new GeoJSON().readFeatures(geojson);\n activatedArrayFeatures.value = features;\n rrefMap.value?.getVectorSource().addFeatures(features);\n rrefMap.value?.getVectorSource().on(\"addfeature\", (event: any) => {\n // 新要素添加逻辑\n });\n\n // 要素添加后再执行告警匹配(addFeatures 同步完成,此处 setTimeout 主要做兜底,\n // 实际定位动作在 locateWaringFeature 内也已通过宏任务后置)\n setTimeout(() => {\n locateWaringFeature(centerOnWarning);\n });\n}\n\nasync function initMap(defaultFloor: Floor): Promise<void> {\n rrefMap.value?.getVectorSource().clear();\n // loadingSource 内部已获取图片尺寸并设置 extent/imgUrl/视图\n // eslint-disable-next-line no-use-before-define\n await loadingSource(defaultFloor);\n\n rrefMap.value?.getMap().on(\"pointermove\", (evt: any) => {\n const pixel = rrefMap.value?.getMap().getEventPixel(evt.originalEvent);\n const viewCoordinate = rrefMap.value\n ?.getMap()\n .getCoordinateFromPixel(pixel);\n if (viewCoordinate) {\n move1.value = viewCoordinate;\n }\n if (activatedBottomBar.value === \"编辑\") {\n return;\n }\n let feature: OpenLayersFeature | undefined;\n if (rrefMap.value?.getMap().hasFeatureAtPixel(pixel)) {\n if (hasWaring.value) {\n activatedPositionOverlay.value = [];\n }\n const viewCoordinate = rrefMap.value\n ?.getMap()\n .getCoordinateFromPixel(pixel);\n if (viewCoordinate) {\n activatedPositionOverlay.value = viewCoordinate;\n }\n feature = rrefMap.value\n ?.getMap()\n .forEachFeatureAtPixel(\n pixel,\n (feature: OpenLayersFeature, layer: any) => {\n return feature;\n },\n );\n if (feature) {\n activatedPropertiesOverlay.value = feature.getProperties();\n }\n } else {\n // 移到空白处收起信息弹窗。原先只在 edit 模式收起,view 模式下弹窗会一直残留在\n // 最后悬停的设备上;告警的常驻标记是 activatedPositionOverlayWaring 气泡,与此无关。\n activatedPositionOverlay.value = [];\n }\n });\n\n rrefMap.value?.getMap().on(\"contextmenu\", (event: any) => {\n activatedFeature.value =\n rrefMap.value\n ?.getMap()\n .forEachFeatureAtPixel(\n event.pixel,\n (feature: OpenLayersFeature) => feature,\n ) || null;\n activatedBottomBar.value = \"选择\"; // 右键后切换为选择模式\n });\n\n rrefMap.value?.getVectorSource().on(\"change\", (item: any) => {\n const features = rrefMap.value?.getVectorSource().getFeatures() || [];\n activatedArrayFeatures.value = features;\n });\n\n // 初始化高级交互;view 为只读展示,不绑定绘制/修改/平移交互\n if (activatedMode.value !== \"view\") {\n nextTick(() => {\n initAdvancedModify();\n initTranslate();\n initDraw(currentDrawType.value);\n });\n }\n}\n\n/**\n * 获取图片的真实尺寸\n * @param imageUrl 图片URL\n * @returns Promise 返回图片的宽度和高度\n */\n// 图片尺寸缓存:已加载过的图片直接读缓存,跳过 getImageDimensions 的异步等待,\n// 避免每次切楼层都用 new Image() 重复加载只为拿尺寸(ol-source-image-static 还会再加载一次用于渲染)。\nconst imageDimensionsCache = new Map<\n string,\n { width: number; height: number }\n>();\n\nconst getImageDimensions = (\n imageUrl: string,\n): Promise<{ width: number; height: number }> => {\n const cached = imageDimensionsCache.get(imageUrl);\n if (cached) return Promise.resolve(cached);\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n const dims = { width: img.naturalWidth, height: img.naturalHeight };\n imageDimensionsCache.set(imageUrl, dims);\n resolve(dims);\n };\n img.onerror = reject;\n img.src = imageUrl;\n });\n};\n\n// 楼层加载序号:await getImageDimensions 期间用户可能再次切换楼层,旧调用后完成时\n// 会用旧楼层的 extent/imgUrl 覆盖新状态(偶发底图错位的根源之一),\n// 因此每个 await 恢复后先比对序号,过期则放弃本次后续写入。\nlet loadSeq = 0;\n\nconst loadingSource = async (\n data: Floor,\n centerOnWarning = true,\n): Promise<void> => {\n const token = ++loadSeq;\n // 切换楼层时清空弹窗与选中状态,避免上一楼层的 popup 残留\n activatedPositionOverlay.value = [];\n activatedPositionOverlayWaring.value = [];\n activatedPropertiesOverlay.value = {};\n activatedFeature.value = null;\n // 无楼层数据时,清空设备列表与底图,避免残留上一层的图片\n if (!data) {\n listDevice.value = [];\n activatedFloor.value = undefined;\n rrefMap.value?.getVectorSource().clear();\n imgUrl.value = \"\";\n return;\n }\n listDevice.value = listAllDevice.value.filter((item) => {\n return item.floor === data.floor;\n });\n activatedFloor.value = data;\n rrefMap.value?.getVectorSource().clear();\n\n // 计算当前楼层使用的坐标系 extent/size:\n // - useRealImageSize=false:extent/size 固定 [0,0,1024,968],兼容旧点位数据(不调用 getImageDimensions)\n // - useRealImageSize=true:按底图真实像素尺寸建立坐标系(新项目推荐)\n // 两种模式下 extent/imgUrl 都在同一同步块内赋值,避免 ol-image-layer 的 key 出现中间态\n // (中间态 newUrl|oldExtent 会把新图片拉伸到旧尺寸 → 图标错位,需切换楼层才恢复)\n const url = data.bucketName || defaultImage;\n let dims: { width: number; height: number };\n if (!useRealImageSize.value) {\n // 旧版行为:固定 1024×968(旧版组件的固定逻辑坐标系,底图拉伸显示),\n // 不调用 getImageDimensions(避免被缓存的真实尺寸干扰)\n dims = { width: 1024, height: 968 };\n imgUrl.value = url;\n } else {\n try {\n dims = await getImageDimensions(url);\n if (token !== loadSeq) return;\n imgUrl.value = url;\n } catch {\n // 图片加载失败(404/CORS),回退默认图\n try {\n dims = await getImageDimensions(defaultImage);\n if (token !== loadSeq) return;\n imgUrl.value = defaultImage;\n } catch {\n if (token !== loadSeq) return;\n dims = { width: 1024, height: 968 };\n imgUrl.value = \"\";\n }\n }\n }\n // 先设 extent 再设 imgUrl——同一同步块内 Vue 会批量更新,key 只变一次\n size.value = [dims.width, dims.height];\n extent.value = [0, 0, dims.width, dims.height];\n center.value = [dims.width / 2, dims.height / 2];\n\n // 视图适配统一收敛到 calculateAutoZoom(fit extent)这一个来源。\n // 此前这里同步 setCenter/setZoom(1) 并立即 fit——但 props.extent/size 要等父组件\n // 重渲染才传到 openMap,那次 fit 读到的还是旧值;它与 openMap extent watch 里的\n // nextTick fit 相互覆盖,最终生效的那个取决于图片加载快慢,导致偶发\n // \"底图左下角停在视口中央\"。nextTick 等 props 更新后再 fit,读到的一定是新值;\n // openMap extent watch 的 fit 与这里是同一 extent,幂等。\n await nextTick();\n if (token !== loadSeq) return;\n rrefMap.value?.calculateAutoZoom();\n\n if (data?.bucketName) {\n if (filtrationType.value && filtrationType.value.length > 0) {\n const geoConfig: Record<\n FeatureTypeEnum,\n { geojson?: string; geomType: \"Polygon\" | \"Point\" }\n > = {\n Areas: { geojson: data?.geojson, geomType: \"Polygon\" },\n Devices: { geojson: data?.geojson, geomType: \"Point\" },\n Facilities: { geojson: data?.facilityGeoJson, geomType: \"Point\" },\n Cameras: { geojson: data?.videoGeoJson, geomType: \"Point\" },\n };\n filtrationType.value.forEach((element) => {\n const conf = geoConfig[element];\n if (!conf?.geojson) return;\n const filtered = JSON.parse(conf.geojson).features.filter(\n (feature: any) =>\n feature.geometry && feature.geometry.type === conf.geomType,\n );\n loadFeaturesAndHandleWarning(\n JSON.stringify({ type: \"FeatureCollection\", features: filtered }),\n centerOnWarning,\n );\n });\n } else {\n // 视频模式\n if (data?.videoGeoJson && alarmType.value === \"video\") {\n if (!data?.videoGeoJson) {\n return;\n }\n loadFeaturesAndHandleWarning(data?.videoGeoJson, centerOnWarning);\n } else {\n // 普通geojson\n if (!data?.geojson) {\n return;\n }\n loadFeaturesAndHandleWarning(data?.geojson, centerOnWarning);\n }\n }\n }\n};\n\n// 切换楼层:保留告警配置(不清空 waring),切到含告警设备的楼层时由\n// loadFeaturesAndHandleWarning 自动重新补上告警气泡;centerOnWarning=false 表示切换场景不自动定位\nconst FnUpdateFloor = (item: Floor): void => {\n loadingSource(item, false);\n};\n\nconst fnUpdateDrawFeature2 = (event: DrawEvent): void => {\n event.feature.set(\"color\", defaultColor.value);\n event.feature.set(\"drawType\", \"lineString\");\n};\n\nconst fnUpdateDrawFeature = (event: DrawEvent): void => {\n event.feature.set(\"color\", defaultColor.value);\n event.feature.set(\"text\", \"重点防控区域\");\n};\n\nconst fnOverrideStyle = (feature: OpenLayersFeature, style: any): any => {\n const code = feature.getProperties()?.code;\n const iconUrl = configIcon.value[code] || defaultIcon;\n if (code && iconUrl) {\n const isWarningOrEdit =\n isWaringCode(code) || activatedMode.value === \"edit\";\n\n // scale 是「高度倍率」,不是 Icon 的 scale 选项:最终高度 = ICON_SIZE * scale(在 createIcon 内计算),\n // 即告警/编辑态 40px、普通态 32px;宽度按原图宽高比自动计算,不变形。\n const scale = isWarningOrEdit ? 1 : 0.8;\n // 设备状态(0故障 1报警 2正常 4离线 -1未启用):以 listDevice 实时数据为准,\n // 缺失时回退图纸 feature 属性(other 中嵌入了设备对象)\n const deviceState =\n listDevice.value.find((item: Device) => item.code === code)?.state ??\n feature.get(\"other\")?.state ??\n feature.get(\"state\");\n const iconStyle = rrefMap.value?.createIcon(iconUrl, scale, deviceState);\n\n feature.setStyle(iconStyle);\n } else {\n // eslint-disable-next-line no-use-before-define\n updateFeatureStyle(feature);\n }\n return style;\n};\n\nconst deleteFeature = (feature: OpenLayersFeature): void => {\n rrefMap.value?.getVectorSource().removeFeature(feature);\n};\n\nconst updateFeatureStyle = (\n feature = activatedFeature.value,\n isSelected = false,\n _offset = 0.4,\n): void => {\n if (!feature) {\n return;\n }\n const text = new Text({\n overflow: true,\n textBaseline: \"middle\",\n font: \"normal 14px 微软雅黑\",\n text: feature.get(\"text\") || \"重点区域\",\n fill: new Fill({\n color: \"red\",\n }),\n backgroundFill: new Fill({\n color: \"white\",\n }),\n padding: [2, 5, 2, 5],\n });\n const textStyle = new Style({\n text,\n fill: new Fill({\n color: feature.get(\"color\") || \"rgba(255,255,51,0.2)\",\n }),\n stroke: new Stroke({\n color: feature.get(\"color\") || \"rgba(255,255,51,0.2)\",\n width: isSelected ? 4 : 1,\n }),\n });\n feature.setStyle(textStyle);\n};\n\nconst FnSetColor = (color: string): void => {\n defaultColor.value = color;\n if (activatedFeature.value) {\n activatedFeature.value.set(\"color\", color);\n updateFeatureStyle(activatedFeature.value, true);\n }\n activatedBottomBar.value = \"选择\";\n};\n\nconst handlerChecked = (key: string): void => {\n activatedBottomBar.value = key;\n switch (key) {\n case \"保存\":\n // eslint-disable-next-line no-use-before-define\n FnSaveMain();\n break;\n case \"重置\":\n rrefMap.value?.getVectorSource().clear();\n break;\n case \"放大\": {\n const view = rrefMap.value?.getView();\n if (view) view.setZoom((view.getZoom() ?? 1) + 1);\n break;\n }\n case \"缩小\": {\n const view = rrefMap.value?.getView();\n if (view) view.setZoom((view.getZoom() ?? 1) - 1);\n break;\n }\n case \"区域模板\":\n (function () {\n const feature = new Feature({\n geometry: new Polygon([\n [\n [786.3792005168201, 338.76241851619795],\n [745.2306619461384, 268.6210691239884],\n [720.3979398123276, 226.2914822164155],\n [689.3061489176491, 181.81733917636961],\n [650.6757212309868, 224.32142350364663],\n [635.9358768302526, 239.17937425863389],\n [628.3098681327549, 250.58557144777728],\n [607.7260105988584, 269.24237742792496],\n [657.7235396817343, 346.765203291549],\n [667.2401356802386, 362.85727288146916],\n [709.1159873844781, 428.26685621909996],\n [786.3792005168201, 338.76241851619795],\n ],\n ]),\n text: \"重点消防区域仓库\",\n color: defaultColor.value,\n });\n rrefMap.value?.getVectorSource().addFeature(feature);\n })();\n break;\n case \"原始尺寸\":\n rrefMap.value?.getView().setZoom(1);\n break;\n default:\n break;\n }\n};\n\nconst dragStart = (item: Device): void => {\n activatedDragItem.value = item;\n};\n\n// DragIcon 的 dragend 不携带数据:放置坐标以地图 pointermove 持续写入的 move1 为准,\n// 延迟一拍再取值,等拖拽结束后的最后一次 pointermove 落定。\nconst dragEnd = (): void => {\n setTimeout(() => {\n const viewCoordinate = move1.value;\n if (activatedDragItem.value && viewCoordinate) {\n const feature = new Feature({\n geometry: new Point([viewCoordinate[0], viewCoordinate[1]]),\n type: \"灭火器\",\n deviceType: activatedDragItem.value.deviceType,\n code: activatedDragItem.value.code,\n other: activatedDragItem.value,\n });\n rrefMap.value?.getVectorSource().addFeature(feature);\n }\n }, 100);\n};\n\n/**\n * 计算设备列表\n */\nconst listUnitDevice = computed(() => {\n const codeArr = activatedArrayFeatures.value.reduce(\n (acc: string[], item: any) => {\n if (item.values_.geometry.getType() === \"Point\") {\n acc.push(item.values_.code);\n }\n return acc;\n },\n [],\n ); // 初始化一个空数组来收集 code\n\n let _listUnitDevice = listDevice.value.filter((item: Device) => {\n return !codeArr.some((code: string) => item.code === code);\n });\n if (queryDeviceList.value.activatedDeviceModel) {\n _listUnitDevice = _listUnitDevice.filter((item: Device) => {\n return (\n item.deviceModelName === queryDeviceList.value.activatedDeviceModel\n );\n });\n }\n if (queryDeviceList.value.activatedDeviceType) {\n _listUnitDevice = _listUnitDevice.filter((item: Device) => {\n return item.deviceTypeName === queryDeviceList.value.activatedDeviceType;\n });\n }\n if (queryDeviceList.value.activatedManufacturer) {\n _listUnitDevice = _listUnitDevice.filter((item: Device) => {\n return (\n item.manufacturerName === queryDeviceList.value.activatedManufacturer\n );\n });\n }\n return _listUnitDevice;\n});\n\n/**\n * 关闭主界面\n */\nconst FnCloseMain = (): void => {\n emit(\"closeMain\");\n};\n\nconst FnSaveMain = (): void => {\n document.documentElement.classList.remove(\"dark\");\n const features = rrefMap.value?.getVectorSource().getFeatures() || [];\n const jsonObj = new GeoJSON().writeFeatures(features);\n\n emit(\"saveMain\", { geojson: jsonObj, floor: activatedFloor.value });\n};\n\n// 右键菜单配置(回调依赖 rrefMap / activatedFeature / activatedBottomBar / FnSaveMain,需后置声明)\nconst configMenuItems = ref<MenuItem[]>([\n {\n text: \"删除\",\n icon: deleteIcon,\n callback: (val: any) => {\n if (rrefMap.value.getVectorSource()) {\n rrefMap.value.getVectorSource().removeFeature(activatedFeature.value);\n }\n },\n },\n {\n text: \"编辑\",\n icon: editIcon,\n classname: \"some-style-class\",\n callback: (val: any) => {\n activatedBottomBar.value = \"编辑\";\n },\n },\n {\n text: \"颜色\",\n icon: colorIcon,\n classname: \"some-style-class\",\n callback: (val: any) => {\n activatedBottomBar.value = \"颜色\";\n },\n },\n {\n text: \"保存\",\n icon: saveIcon,\n classname: \"some-style-class\",\n callback: (val: any) => {\n FnSaveMain();\n },\n },\n]);\n\n// 鼠标移出整个组件容器时收起信息弹窗:此时地图不再派发 pointermove,\n// 弹窗会停留在最后一次悬停的设备上不消失\nconst clearHoverOverlay = (): void => {\n activatedPositionOverlay.value = [];\n};\n\ndefineExpose({\n open,\n});\n</script>\n\n<template>\n <div\n id=\"ypc-map-container\"\n class=\"relative w-full h-full overflow-hidden t-geo-mark\"\n @pointerleave=\"clearHoverOverlay\"\n >\n <FloorMark ref=\"refFloor\" @change-floor=\"FnUpdateFloor\" />\n\n <el-card v-if=\"activatedMode === 'edit'\" class=\"t-top-bar\">\n <div class=\"flex items-center justify-between h-full\">\n <div\n v-for=\"o in configTopBar\"\n :key=\"o.name\"\n class=\"t-top-bar__item\"\n :class=\"{ 't-top-bar__item--exit': o.name === '退出' }\"\n @click=\"FnCloseMain()\"\n >\n <i class=\"iconfont\" :class=\"[o.icon]\" />\n {{ o.name }}\n <span v-if=\"o.name !== '退出'\" class=\"t-top-bar__value\">{{\n o.value\n }}</span>\n </div>\n </div>\n </el-card>\n\n <el-card v-if=\"activatedMode === 'edit'\" class=\"t-bottom-bar\">\n <div class=\"t-bottom-bar__inner\">\n <template v-for=\"o in configBottomBar\" :key=\"o.name\">\n <div\n v-if=\"o.name !== '颜色' && o.name !== '区域设置'\"\n class=\"t-bottom-bar__item\"\n :class=\"[activatedBottomBar === o.name ? 't-bbar-active' : '']\"\n @click=\"handlerChecked(o.name)\"\n >\n <span>\n <i class=\"iconfont\" :class=\"[o.icon]\" />\n {{ o.name }}\n </span>\n </div>\n\n <el-popover\n v-else-if=\"o.name === '区域设置'\"\n :width=\"250\"\n style=\"height: 350px !important\"\n placement=\"top\"\n trigger=\"click\"\n popper-class=\"t-popper\"\n >\n <template #reference>\n <div\n class=\"t-bottom-bar__item\"\n :class=\"[activatedBottomBar === o.name ? 't-bbar-active' : '']\"\n @click=\"handlerChecked(o.name)\"\n >\n <span>\n <i class=\"iconfont\" :class=\"[o.icon]\" />\n {{ o.name }}\n </span>\n </div>\n </template>\n <template #default>\n <div\n v-for=\"o in configBottomBar2\"\n :key=\"o.name\"\n class=\"t-bottom-bar__item\"\n :class=\"[activatedBottomBar === o.name ? 't-bbar-active' : '']\"\n @click=\"handlerChecked(o.name)\"\n >\n <span>\n <i class=\"iconfont\" :class=\"[o.icon]\" />\n {{ o.name }}\n </span>\n </div>\n </template>\n </el-popover>\n\n <el-popover\n v-else\n :width=\"250\"\n style=\"height: 350px !important\"\n placement=\"top\"\n trigger=\"click\"\n popper-class=\"t-popper\"\n >\n <template #reference>\n <div\n class=\"t-bottom-bar__item\"\n :class=\"[activatedBottomBar === o.name ? 't-bbar-active' : '']\"\n @click=\"handlerChecked(o.name)\"\n >\n <span>\n <i class=\"iconfont\" :class=\"[o.icon]\" />\n {{ o.name }}\n </span>\n </div>\n </template>\n <template #default>\n <div class=\"grid grid-cols-3 gap-2 p-1\">\n <div\n v-for=\"c in colorList\"\n :key=\"c.value\"\n class=\"flex flex-col items-center cursor-pointer\"\n @click=\"FnSetColor(c.value)\"\n >\n <span\n class=\"w-8 h-8 rounded border border-gray-300\"\n :style=\"{ backgroundColor: c.value }\"\n />\n <span class=\"text-xs mt-1\">{{ c.name }}</span>\n </div>\n </div>\n </template>\n </el-popover>\n </template>\n </div>\n </el-card>\n\n <el-card\n v-if=\"activatedMode === 'edit'\"\n class=\"t-info-panel\"\n :class=\"[activatedFold === true ? 't-fold' : 't-unfold']\"\n >\n <div class=\"t-info-panel__header\">\n <div class=\"t-info-panel__tabs\">\n <span\n class=\"t-info-panel__tab\"\n :class=\"{ 't-info-panel__tab--active': activatedList }\"\n @click=\"activatedList = true\"\n >\n {{ listTitle }}\n </span>\n <span\n class=\"t-info-panel__tab\"\n :class=\"{ 't-info-panel__tab--active': !activatedList }\"\n @click=\"activatedList = false\"\n >\n 标注信息列表\n </span>\n </div>\n <span class=\"t-info-panel__fold\" @click=\"FnUpdateActivatedFold\">\n {{ activatedFold ? \"展开\" : \"收起\" }}\n </span>\n </div>\n\n <div class=\"t-info-panel__filters\">\n <el-select\n v-model=\"queryDeviceList.activatedDeviceType\"\n clearable\n style=\"width: 32%\"\n class=\"mr-2\"\n placeholder=\"请选择类型\"\n :teleported=\"false\"\n >\n <el-option\n v-for=\"item in configOptionsDeviceType\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n\n <el-select\n v-model=\"queryDeviceList.activatedDeviceModel\"\n clearable\n style=\"width: 32%\"\n class=\"mr-2\"\n placeholder=\"请选择型号\"\n :teleported=\"false\"\n >\n <el-option\n v-for=\"item in configOptionsDeviceModel\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n\n <el-select\n v-model=\"queryDeviceList.activatedManufacturer\"\n clearable\n style=\"width: 32%\"\n placeholder=\"请选择厂商\"\n :teleported=\"false\"\n >\n <el-option\n v-for=\"item in configOptionsManufacturer\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n </div>\n\n <div\n v-if=\"activatedList\"\n class=\"grid gap-1 mt-4 px-3.5 w-full grid-cols-12\"\n >\n <span class=\"col-span-1\">图标</span>\n <span class=\"col-span-4\">编号</span>\n <!-- <span class=\"col-span-2 text-center\">楼层</span> -->\n <span class=\"col-span-4\">{{\n listTitle === \"设备信息列表\" ? \"设备类型\" : \"设施类型\"\n }}</span>\n <span class=\"col-span-3\">位置</span>\n </div>\n\n <div v-else class=\"grid gap-1 mt-4 px-3.5 w-full grid-cols-12\">\n <span class=\"col-span-1\">序号</span>\n <span class=\"col-span-1\">图标</span>\n <span class=\"col-span-8\">名称</span>\n <span class=\"col-span-2\">操作</span>\n </div>\n\n <div\n v-if=\"activatedList\"\n style=\"height: calc(100% - 100px)\"\n class=\"w-full mt-4 pb-5 overflow-x-hidden overflow-y-auto panel\"\n >\n <!-- {{ listUnitDevice.length }} -->\n <template v-for=\"(item, index) in listUnitDevice\" :key=\"index\">\n <div\n class=\"t-info-panel__row grid gap-1 mt-4 px-3.5 w-full grid-cols-12\"\n :title=\"item.deviceTypeName\"\n >\n <span class=\"col-span-1 cursor-pointer\">\n <!-- 可拖拽设备图标:dragstart 直接带出设备项,dragend 触发放置逻辑 -->\n <img\n :src=\"configIcon[item.code] || defaultIcon\"\n draggable=\"true\"\n class=\"!w-8\"\n @dragstart=\"dragStart(item)\"\n @dragend=\"dragEnd\"\n />\n </span>\n <span class=\"col-span-4 break-words\">{{ item.code }}</span>\n <span\n class=\"col-span-4 break-words\"\n :title=\"item.remark || item.deviceTypeName || item.videoName\"\n >\n {{ item.remark || item.deviceTypeName || item.videoName }}\n </span>\n <span class=\"col-span-3 break-words\" :title=\"item.locationDesc\">{{\n item.locationDesc || item.addressDesc\n }}</span>\n </div>\n </template>\n </div>\n\n <div\n v-else\n style=\"height: calc(100% - 100px)\"\n class=\"w-full mt-4 overflow-x-hidden overflow-y-auto panel\"\n >\n <template v-for=\"(item, index) in activatedArrayFeatures\" :key=\"item\">\n <div\n class=\"t-info-panel__row grid gap-1 mt-4 px-3.5 w-full grid-cols-12\"\n >\n <span class=\"col-span-1\">{{ index + 1 }} </span>\n <span class=\"col-span-1\">\n <div\n v-if=\"item.values_.geometry.getType() === 'Point'\"\n class=\"!w-8 h-full t-image-point\" />\n\n <div\n v-else\n class=\"!w-8 h-full\"\n :style=\"`background-color:${item.values_.color}`\"\n /></span>\n\n <span class=\"col-span-8\">\n <el-input\n v-if=\"item.values_.geometry.getType() === 'Point'\"\n v-model=\"item.values_.type\"\n size=\"large\"\n clearable\n />\n <el-input\n v-else\n v-model=\"item.values_.text\"\n size=\"large\"\n clearable\n @change=\"updateFeatureStyle(item)\"\n />\n </span>\n\n <span\n class=\"flex items-center justify-center col-span-2 cursor-pointer\"\n @click=\"deleteFeature(item)\"\n >\n <i class=\"iconfont icon-shanchu\" />\n </span>\n </div>\n </template>\n </div>\n </el-card>\n\n <openMapNew\n v-if=\"listFloor.length > 0 && activatedFloor\"\n ref=\"rrefMap\"\n api-key=\"AjtUzWJBHlI3Ma_Ke6Qv2fGRXEs0ua5hUQi54ECwfXTiWsitll4AkETZDihjcfeI\"\n :center=\"center\"\n :zoom=\"zoom\"\n :projection=\"projection\"\n :img-url=\"imgUrl\"\n :size=\"size\"\n :extent=\"extent\"\n :config-menu-items=\"configMenuItems\"\n :activated-bottom-bar=\"activatedBottomBar\"\n :waring=\"hasWaring ? waring : null\"\n :activated-position-overlay-waring=\"activatedPositionOverlayWaring\"\n :activated-position-overlay=\"activatedPositionOverlay\"\n :activated-properties-overlay=\"activatedPropertiesOverlay\"\n :list-title=\"listTitle\"\n :alarm-type=\"alarmType\"\n :svg-overlay=\"svgOverlay\"\n :waring-icon=\"waringIcon\"\n :fn-update-draw-feature=\"fnUpdateDrawFeature\"\n :fn-update-draw-feature2=\"fnUpdateDrawFeature2\"\n :fn-override-style=\"fnOverrideStyle\"\n @ready=\"handleMapReady\"\n >\n <template #overlay>\n <template\n v-if=\"activatedPropertiesOverlay.type && listTitle === '设备信息列表'\"\n >\n <div\n class=\"flex flex-col justify-start text-white opacity-80 t-bg-overlay flex-nowrap\"\n >\n <img :src=\"svgOverlay\" alt=\"\" class=\"absolute w-full h-full\" />\n <div\n class=\"flex t-overlay-item items-center w-full !mt-10 justify-items-start\"\n >\n 设备编码: {{ activatedPropertiesOverlay.other?.code }}\n </div>\n\n <div\n class=\"flex items-center w-full t-overlay-item justify-items-start\"\n >\n 创建日期: {{ activatedPropertiesOverlay.other?.createTime }}\n </div>\n\n <div\n class=\"flex items-center w-full t-overlay-item justify-items-start\"\n >\n 设备位置:\n <div\n class=\"w-52 flex justify-start items-center text-gradient2 truncate ...\"\n :title=\"\n activatedPropertiesOverlay.other?.videoName ||\n activatedPropertiesOverlay.other?.addressDesc\n \"\n >\n {{\n alarmType === \"video\"\n ? activatedPropertiesOverlay.other?.videoName\n : activatedPropertiesOverlay.other?.addressDesc\n }}\n </div>\n </div>\n <div\n class=\"flex items-center w-full t-overlay-item justify-items-start\"\n >\n 设备类型:\n <div\n class=\"w-52 flex justify-start items-center text-gradient2 truncate ...\"\n :title=\"\n activatedPropertiesOverlay.other?.remark ||\n activatedPropertiesOverlay.other?.deviceTypeName ||\n activatedPropertiesOverlay.other?.facilityTypeName\n \"\n >\n {{\n alarmType === \"video\"\n ? \"摄像头\"\n : activatedPropertiesOverlay.other?.remark ||\n activatedPropertiesOverlay.other?.facilityTypeName ||\n activatedPropertiesOverlay.other?.deviceTypeName\n }}\n </div>\n </div>\n </div>\n </template>\n\n <!-- 设施信息弹窗 -->\n <template\n v-if=\"activatedPropertiesOverlay.type && listTitle === '设施信息列表'\"\n >\n <div\n class=\"flex flex-col justify-start text-white opacity-80 t-bg-overlay flex-nowrap\"\n >\n <img :src=\"svgOverlay\" alt=\"\" class=\"absolute w-full h-full\" />\n <div\n class=\"flex t-overlay-item items-center w-full !mt-10 justify-items-start\"\n >\n 设施编码: {{ activatedPropertiesOverlay.other?.code }}\n </div>\n\n <div\n class=\"flex items-center w-full t-overlay-item justify-items-start\"\n >\n 创建日期: {{ activatedPropertiesOverlay.other?.createTime }}\n </div>\n\n <div\n class=\"flex items-center w-full t-overlay-item justify-items-start\"\n >\n 设施型号: {{ activatedPropertiesOverlay.other?.deviceModelName }}\n </div>\n <div\n class=\"flex items-center w-full t-overlay-item justify-items-start\"\n >\n 设施厂商:\n {{ activatedPropertiesOverlay.other?.manufacturerName }}\n </div>\n </div>\n </template>\n </template>\n </openMapNew>\n <img\n v-else\n :src=\"defaultImage\"\n alt=\"默认底图\"\n :style=\"{ width: `${size[0]}px`, height: `${size[1]}px` }\"\n />\n </div>\n</template>\n"],"names":["defaultImage","_a","_b","_c","viewCoordinate","_d","feature","defaultIcon","deleteIcon","editIcon","colorIcon","saveIcon","_createElementBlock","_createVNode","FloorMark","_createBlock","_createElementVNode","_Fragment","_renderList","_normalizeClass","_createTextVNode","_toDisplayString","_openBlock","o","_normalizeStyle","_createCommentVNode","_unref","openMapNew","svgOverlay","waringIcon"],"mappings":"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"}
1
+ {"version":3,"file":"geoMark.vue2.mjs","sources":["../../../../../../../packages/components/geoMark/src/geoMark.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @ts-nocheck\nimport { isNil } from \"lodash-es\";\nimport {\n never,\n platformModifierKeyOnly,\n primaryAction,\n} from \"ol/events/condition.js\";\n\nimport Feature from \"ol/Feature\";\nimport GeoJSON from \"ol/format/GeoJSON.js\";\n\nimport Point from \"ol/geom/Point.js\";\nimport Polygon from \"ol/geom/Polygon.js\";\nimport Draw from \"ol/interaction/Draw.js\";\nimport Modify from \"ol/interaction/Modify.js\";\nimport Translate from \"ol/interaction/Translate.js\";\nimport VectorLayer from \"ol/layer/Vector.js\";\n\nimport { Fill, Stroke, Text } from \"ol/style\";\nimport CircleStyle from \"ol/style/Circle.js\";\nimport Style from \"ol/style/Style\";\nimport { computed, nextTick, onMounted, onUnmounted, ref } from \"vue\";\nimport defaultImage from \"./assets/default.png\";\nimport waringIcon from \"./assets/waring.png\";\n\nimport saveIcon from \"./assets/保存.png\";\nimport deleteIcon from \"./assets/删除.png\";\nimport svgOverlay from \"./assets/新弹框.png\";\nimport defaultIcon from \"./assets/灭火器.png\";\nimport editIcon from \"./assets/编辑.png\";\nimport colorIcon from \"./assets/颜色.png\";\nimport FloorMark from \"./floor.vue\";\nimport { GeoMarkProps } from \"./geoMark\";\nimport openMapNew from \"./openMap.vue\";\nimport type {\n ConfigBottomBarItem,\n ConfigIcon,\n ConfigTopBarItem,\n Device,\n DragEvent,\n DrawEvent,\n FeatureTypeEnum,\n Floor,\n MenuItem,\n OpenLayersFeature,\n OpenParams,\n OptionType,\n QueryDeviceListType,\n} from \"./geoMark\";\n\ndefineOptions({ name: \"IGeoMark\" });\n\n// 组件props定义\nconst props = defineProps(GeoMarkProps);\n\n// 事件定义\nconst emit = defineEmits<{\n closeMain: [];\n saveMain: [result: { geojson: string; floor: Floor | undefined }];\n}>();\n\n// 警告气泡坐标\nconst activatedPositionOverlayWaring = ref<number[]>([]);\n\n// 新增响应式数据\nconst drawInteraction = ref<any>(null);\nconst modifyInteraction = ref<any>(null);\nconst translateInteraction = ref<any>(null);\nconst currentDrawType = ref<string>(\"Polygon\");\n\n// -------------------- 生命周期钩子 --------------------\nonMounted(() => {\n window.addEventListener(\"popstate\", (e: PopStateEvent) => {\n document.documentElement.classList.remove(\"dark\");\n e.preventDefault();\n });\n});\n\nonUnmounted(() => {\n document.documentElement.classList.remove(\"dark\");\n});\n\n// -------------------- 业务状态与交互 --------------------\nconst activatedList = ref<boolean>(true); // 信息面板tab切换\nconst activatedFold = ref<boolean>(false); // 信息面板折叠\nconst FnUpdateActivatedFold = (): void => {\n activatedFold.value = !activatedFold.value;\n};\n\nconst listFloor = ref<Floor[]>([]);\nconst listDevice = ref<Device[]>([]);\nconst listAllDevice = ref<Device[]>([]); // Devices/Facilities\nconst listTitle = ref<string>(\"设备信息列表\");\n\nconst configIcon = ref<ConfigIcon>({});\n\n// 顶部栏配置\nconst configTopBar = ref<ConfigTopBarItem[]>([\n { name: `单位名:`, icon: \"icon-jianzhu02-L\", value: \"-----\" },\n { name: `建筑名:`, icon: \"icon-jianzhu03-L\", value: \"-----\" },\n { name: \"退出\", icon: \"icon-fanhui3\", value: \"-----\" },\n]);\n\n// 底部栏配置\nconst configBottomBar = ref<ConfigBottomBarItem[]>([\n { name: \"选择\", icon: \"icon-xuanze\" },\n { name: \"编辑\", icon: \"icon-xiugai\" },\n { name: \"重置\", icon: \"icon-zhongzhi1\" },\n { name: \"放大\", icon: \"icon-fangda\" },\n { name: \"缩小\", icon: \"icon-suoxiao\" },\n { name: \"颜色\", icon: \"icon-yanse\" },\n { name: \"区域设置\", icon: \"icon-shezhi\" },\n { name: \"原始尺寸\", icon: \"icon-chicun\" },\n { name: \"保存\", icon: \"icon-Save\" },\n]);\n\nconst configBottomBar2 = ref<ConfigBottomBarItem[]>([\n { name: \"区域模板\", icon: \"icon-moban2\" },\n { name: \"区域绘制\", icon: \"icon-pencel\" },\n]);\n\nconst activatedMode = computed<string>(() => {\n return props.type || \"edit\";\n});\n\nconst activatedBottomBar = ref<string>(\"选择\");\nconst activatedFloor = ref<Floor | undefined>();\nconst refFloor = ref<InstanceType<typeof FloorMark> | null>(null);\nconst alarmType = ref<string>(\"fire\");\nconst filtrationType = ref<FeatureTypeEnum[]>([]);\n// 告警设备 code(string/number/null),空字符串/null 视为无告警\nconst waring = ref<string | number | null>(null);\n\n// 是否按底图真实像素尺寸建立坐标系(默认 false,固定 1024×968 旧坐标系;新项目按真实像素标注的需显式传 true)\n// 切换楼层时也沿用 open() 时的设置,确保同一组件实例行为一致\nconst useRealImageSize = ref<boolean>(false);\n\n// 是否存在有效的告警配置\nconst hasWaring = computed<boolean>(() => {\n const w = waring.value;\n return w != null && w !== \"\";\n});\n\n// code 是否命中告警设备(单值比较)\nconst isWaringCode = (code: unknown): boolean => {\n const w = waring.value;\n return w != null && w !== \"\" && w === code;\n};\n\n// 地图相关数据\nconst imgUrl = ref<string>(defaultImage);\nconst rrefMap = ref<any>(null);\n// openMap 子组件(v-if 条件渲染)是否已挂载就绪,以及就绪前缓存的待初始化楼层。\n// 解决首次渲染时 rrefMap 尚未就绪导致矢量标注丢失、视图缩放不生效的问题\nconst mapReady = ref<boolean>(false);\nconst pendingInit = ref<Floor | null>(null);\nconst activatedPositionOverlay = ref<number[]>([]);\nconst activatedPropertiesOverlay = ref<Record<string, any>>({});\nconst activatedArrayFeatures = ref<OpenLayersFeature[]>([]);\nconst activatedFeature = ref<OpenLayersFeature | null>(null);\nconst move1 = ref<number[]>([]);\n\n// 区域默认颜色(颜色面板选择后,后续绘制/模板使用)\nconst defaultColor = ref<string>(\"rgba(255,255,51,0.2)\");\n\n// 颜色面板选项\nconst colorList = ref<{ name: string; value: string }[]>([\n { name: \"黄色\", value: \"rgba(255,255,51,0.2)\" },\n { name: \"红色\", value: \"rgba(255,0,0,0.25)\" },\n { name: \"绿色\", value: \"rgba(0,255,0,0.25)\" },\n { name: \"蓝色\", value: \"rgba(0,120,255,0.25)\" },\n { name: \"橙色\", value: \"rgba(255,150,0,0.3)\" },\n { name: \"紫色\", value: \"rgba(150,0,255,0.25)\" },\n]);\n\n// 地图中心、缩放等配置\nconst center = ref<number[]>([0, 0]);\nconst zoom = ref<number>(1); // 修改默认缩放级别为1,确保完整显示图片\nconst projection = ref<string>(\"EPSG:3857\");\nconst size = ref<number[]>([1024, 968]);\nconst extent = ref<number[]>([0, 0, 1024, 968]);\n\n// 选项配置\nconst configOptionsDeviceType = ref<OptionType[]>([]);\nconst configOptionsDeviceModel = ref<OptionType[]>([]);\nconst configOptionsManufacturer = ref<OptionType[]>([]);\n\n// 查询设备列表\nconst queryDeviceList = ref<QueryDeviceListType>({\n activatedDeviceType: \"\",\n activatedManufacturer: \"\",\n activatedDeviceModel: \"\",\n});\n\n// 拖拽相关\nconst activatedDragItem = ref<Device>();\n\n// 筛选条件\nconst deviceTypeSet = new Set<string>(); // 设备类型\nconst manufacturerSet = new Set<string>(); // 生产商\nconst deviceModelSet = new Set<string>(); // 设备型号\n\n// -------------------- 方法定义 --------------------\n\n/**\n * 创建要素样式\n */\nconst createAdvancedStyle = (_feature: OpenLayersFeature) => {\n return [\n new Style({\n fill: new Fill({ color: \"rgba(255, 255, 255, 0.2)\" }),\n stroke: new Stroke({ color: \"#ffcc33\", width: 2 }),\n image: new CircleStyle({\n radius: 7,\n fill: new Fill({ color: \"#ffcc33\" }),\n }),\n }),\n ];\n};\n\n/**\n * 初始化高级修改交互\n */\nconst initAdvancedModify = () => {\n if (!rrefMap.value) return;\n\n const source = rrefMap.value.getVectorSource();\n\n // 移除现有的修改交互\n if (modifyInteraction.value) {\n rrefMap.value.getMap().removeInteraction(modifyInteraction.value);\n }\n\n // 创建新的修改交互\n modifyInteraction.value = new Modify({\n source,\n condition(event: any) {\n return primaryAction(event) && !platformModifierKeyOnly(event);\n },\n deleteCondition: never,\n insertVertexCondition: never,\n style(feature: OpenLayersFeature, resolution: number) {\n // 应用高级样式\n return createAdvancedStyle(feature);\n },\n });\n\n // 添加修改开始事件\n modifyInteraction.value.on(\"modifystart\", (event: any) => {\n event.features.forEach((feature: OpenLayersFeature) => {\n feature.set(\n \"modifyGeometry\",\n { geometry: feature.getGeometry().clone() },\n true,\n );\n });\n });\n\n // 添加修改结束事件\n modifyInteraction.value.on(\"modifyend\", (event: any) => {\n event.features.forEach((feature: OpenLayersFeature) => {\n const modifyGeometry = feature.get(\"modifyGeometry\");\n if (modifyGeometry) {\n feature.setGeometry(modifyGeometry.geometry);\n feature.unset(\"modifyGeometry\", true);\n }\n });\n });\n\n rrefMap.value.getMap().addInteraction(modifyInteraction.value);\n};\n\n/**\n * 初始化平移交互\n */\nconst initTranslate = () => {\n if (!rrefMap.value) return;\n\n // 移除现有的平移交互\n if (translateInteraction.value) {\n rrefMap.value.getMap().removeInteraction(translateInteraction.value);\n }\n\n // 创建新的平移交互\n translateInteraction.value = new Translate({\n condition(event: any) {\n return primaryAction(event) && platformModifierKeyOnly(event);\n },\n layers: [\n rrefMap.value\n .getMap()\n .getLayers()\n .getArray()\n .filter((layer: any) => layer instanceof VectorLayer),\n ],\n });\n\n rrefMap.value.getMap().addInteraction(translateInteraction.value);\n};\n\n/**\n * 初始化绘制交互\n */\nconst initDraw = (type: string = \"Polygon\") => {\n if (!rrefMap.value) return;\n\n // 移除现有的绘制交互\n if (drawInteraction.value) {\n rrefMap.value.getMap().removeInteraction(drawInteraction.value);\n }\n\n // 创建新的绘制交互\n drawInteraction.value = new Draw({\n source: rrefMap.value.getVectorSource(),\n type: type as any,\n });\n\n // 添加绘制完成事件\n drawInteraction.value.on(\"drawend\", (event: any) => {\n const feature = event.feature;\n feature.set(\"color\", defaultColor.value);\n feature.set(\"text\", \"新绘制区域\");\n\n // 应用高级样式\n feature.setStyle(createAdvancedStyle(feature));\n });\n\n rrefMap.value.getMap().addInteraction(drawInteraction.value);\n};\n\n/**\n * 打开地图主入口,初始化各类数据\n * @param params 业务参数\n */\nconst open = async (\n params: OpenParams = {\n listFloor: [],\n listDevice: [],\n defaultFloor: null,\n waring: null,\n listTitle: \"设备信息列表\",\n configIcon: {},\n configTopBar: [],\n featureType: [\"Areas\"] as FeatureTypeEnum[],\n useRealImageSize: false,\n },\n): Promise<void> => {\n if (params.featureType && params.featureType.length > 0) {\n filtrationType.value = params.featureType;\n }\n if (params.type) {\n alarmType.value = params.type;\n }\n if (params.listTitle) {\n listTitle.value = params.listTitle;\n }\n // 尊重调用方传参;默认 false 保持旧版 1024×968 固定坐标系(按真实像素标注的新数据需显式传 true)\n useRealImageSize.value = params.useRealImageSize ?? false;\n listFloor.value = params.listFloor;\n listDevice.value = params.listDevice;\n listAllDevice.value = params.listDevice;\n configIcon.value = params.configIcon || {};\n configTopBar.value = params.configTopBar || [];\n waring.value = params.waring ?? null;\n const defaultFloor = params.defaultFloor\n ? params.defaultFloor\n : listFloor.value[0];\n refFloor.value?.init(listFloor.value, defaultFloor);\n\n // 提取筛选条件\n const floorList = listFloor.value.map((item: Floor) => item.floor);\n listAllDevice.value\n .filter((ls) => ls.floor != null && floorList.includes(ls.floor))\n .forEach((item: Device) => {\n if (item.deviceTypeName) deviceTypeSet.add(item.deviceTypeName);\n if (item.manufacturerName) manufacturerSet.add(item.manufacturerName);\n if (item.deviceModelName) deviceModelSet.add(item.deviceModelName);\n });\n // 初始化选项配置\n configOptionsDeviceType.value = Array.from(deviceTypeSet)\n .map((type) => ({\n label: type,\n value: type,\n key: type,\n }))\n .filter((e) => !isNil(e.label));\n configOptionsManufacturer.value = Array.from(manufacturerSet)\n .map((manufacturer) => ({\n label: manufacturer,\n value: manufacturer,\n key: manufacturer,\n }))\n .filter((e) => !isNil(e.label));\n configOptionsDeviceModel.value = Array.from(deviceModelSet)\n .map((deviceModel) => ({\n label: deviceModel,\n value: deviceModel,\n key: deviceModel,\n }))\n .filter((e) => !isNil(e.label));\n\n // 地图初始化交给 openMap 的 @ready 事件:组件挂载完成后再执行,\n // 避免首次渲染时 rrefMap 尚未就绪导致标注丢失、视图缩放不生效(需点两次的问题)\n if (mapReady.value) {\n initMap(activatedFloor.value || defaultFloor);\n } else {\n // openMap 为 v-if 条件渲染(依赖 activatedFloor?.bucketName),\n // 先设置默认楼层以触发其渲染,待 @ready 后再完成数据加载\n activatedFloor.value = defaultFloor;\n pendingInit.value = defaultFloor;\n }\n};\n\n/**\n * openMap 子组件挂载完成(@ready)后回调。\n * 此时 rrefMap / getVectorSource / getView 均已可用,可安全初始化地图。\n */\nconst handleMapReady = (): void => {\n mapReady.value = true;\n const floor = pendingInit.value || activatedFloor.value;\n if (floor) {\n pendingInit.value = null;\n initMap(floor);\n }\n};\n\n// 查找告警设备并应用告警效果:\n// - 命中告警的要素 → 补上告警气泡(activatedPositionOverlayWaring)\n// - centerOnWarning=true(open/initMap 初始化场景):弹出设备信息面板并定位视图;\n// false(楼层切换场景):只补气泡,不打扰浏览\n// 定位必须放在宏任务中执行:图片加载适配(loadingSource → nextTick 后 fit 全图,\n// 以及 openMap 内 extent watch → nextTick calculateAutoZoom)都在微任务链中完成,\n// 若定位紧跟在这些逻辑之前执行,会被后续的 fit 全图 / setCenter(图片中心) 覆盖,\n// 造成\"打开时不自动定位到告警设备、要等鼠标悬停(overlay autoPan)才定位\"的现象。\nconst locateWaringFeature = (centerOnWarning: boolean): void => {\n if (!hasWaring.value || !rrefMap.value) return;\n const features = rrefMap.value.getVectorSource().getFeatures();\n const target = features.find((feature: OpenLayersFeature) =>\n isWaringCode(feature.get(\"code\")),\n );\n if (!target) return;\n const position = target.getGeometry()!.getCoordinates() as number[];\n activatedPositionOverlayWaring.value = position;\n if (centerOnWarning) {\n activatedPositionOverlay.value = position;\n activatedPropertiesOverlay.value = target.getProperties();\n // 仅居中、不放大(产品确认):zoom 保持全图适配级别\n setTimeout(() => {\n rrefMap.value?.getView()?.setCenter(position);\n }, 0);\n }\n};\n\nfunction loadFeaturesAndHandleWarning(\n geojson: any,\n centerOnWarning = true,\n): void {\n const features = new GeoJSON().readFeatures(geojson);\n activatedArrayFeatures.value = features;\n rrefMap.value?.getVectorSource().addFeatures(features);\n rrefMap.value?.getVectorSource().on(\"addfeature\", (event: any) => {\n // 新要素添加逻辑\n });\n\n // 要素添加后再执行告警匹配(addFeatures 同步完成,此处 setTimeout 主要做兜底,\n // 实际定位动作在 locateWaringFeature 内也已通过宏任务后置)\n setTimeout(() => {\n locateWaringFeature(centerOnWarning);\n });\n}\n\nasync function initMap(defaultFloor: Floor): Promise<void> {\n rrefMap.value?.getVectorSource().clear();\n // loadingSource 内部已获取图片尺寸并设置 extent/imgUrl/视图\n // eslint-disable-next-line no-use-before-define\n await loadingSource(defaultFloor);\n\n rrefMap.value?.getMap().on(\"pointermove\", (evt: any) => {\n const pixel = rrefMap.value?.getMap().getEventPixel(evt.originalEvent);\n const viewCoordinate = rrefMap.value\n ?.getMap()\n .getCoordinateFromPixel(pixel);\n if (viewCoordinate) {\n move1.value = viewCoordinate;\n }\n if (activatedBottomBar.value === \"编辑\") {\n return;\n }\n let feature: OpenLayersFeature | undefined;\n if (rrefMap.value?.getMap().hasFeatureAtPixel(pixel)) {\n if (hasWaring.value) {\n activatedPositionOverlay.value = [];\n }\n const viewCoordinate = rrefMap.value\n ?.getMap()\n .getCoordinateFromPixel(pixel);\n if (viewCoordinate) {\n activatedPositionOverlay.value = viewCoordinate;\n }\n feature = rrefMap.value\n ?.getMap()\n .forEachFeatureAtPixel(\n pixel,\n (feature: OpenLayersFeature, layer: any) => {\n return feature;\n },\n );\n if (feature) {\n activatedPropertiesOverlay.value = feature.getProperties();\n }\n } else {\n // 移到空白处收起信息弹窗。原先只在 edit 模式收起,view 模式下弹窗会一直残留在\n // 最后悬停的设备上;告警的常驻标记是 activatedPositionOverlayWaring 气泡,与此无关。\n activatedPositionOverlay.value = [];\n }\n });\n\n rrefMap.value?.getMap().on(\"contextmenu\", (event: any) => {\n activatedFeature.value =\n rrefMap.value\n ?.getMap()\n .forEachFeatureAtPixel(\n event.pixel,\n (feature: OpenLayersFeature) => feature,\n ) || null;\n activatedBottomBar.value = \"选择\"; // 右键后切换为选择模式\n });\n\n rrefMap.value?.getVectorSource().on(\"change\", (item: any) => {\n const features = rrefMap.value?.getVectorSource().getFeatures() || [];\n activatedArrayFeatures.value = features;\n });\n\n // 初始化高级交互;view 为只读展示,不绑定绘制/修改/平移交互\n if (activatedMode.value !== \"view\") {\n nextTick(() => {\n initAdvancedModify();\n initTranslate();\n initDraw(currentDrawType.value);\n });\n }\n}\n\n/**\n * 获取图片的真实尺寸\n * @param imageUrl 图片URL\n * @returns Promise 返回图片的宽度和高度\n */\n// 图片尺寸缓存:已加载过的图片直接读缓存,跳过 getImageDimensions 的异步等待,\n// 避免每次切楼层都用 new Image() 重复加载只为拿尺寸(ol-source-image-static 还会再加载一次用于渲染)。\nconst imageDimensionsCache = new Map<\n string,\n { width: number; height: number }\n>();\n\nconst getImageDimensions = (\n imageUrl: string,\n): Promise<{ width: number; height: number }> => {\n const cached = imageDimensionsCache.get(imageUrl);\n if (cached) return Promise.resolve(cached);\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n const dims = { width: img.naturalWidth, height: img.naturalHeight };\n imageDimensionsCache.set(imageUrl, dims);\n resolve(dims);\n };\n img.onerror = reject;\n img.src = imageUrl;\n });\n};\n\n// 楼层加载序号:await getImageDimensions 期间用户可能再次切换楼层,旧调用后完成时\n// 会用旧楼层的 extent/imgUrl 覆盖新状态(偶发底图错位的根源之一),\n// 因此每个 await 恢复后先比对序号,过期则放弃本次后续写入。\nlet loadSeq = 0;\n\nconst loadingSource = async (\n data: Floor,\n centerOnWarning = true,\n): Promise<void> => {\n const token = ++loadSeq;\n // 切换楼层时清空弹窗与选中状态,避免上一楼层的 popup 残留\n activatedPositionOverlay.value = [];\n activatedPositionOverlayWaring.value = [];\n activatedPropertiesOverlay.value = {};\n activatedFeature.value = null;\n // 无楼层数据时,清空设备列表与底图,避免残留上一层的图片\n if (!data) {\n listDevice.value = [];\n activatedFloor.value = undefined;\n rrefMap.value?.getVectorSource().clear();\n imgUrl.value = \"\";\n return;\n }\n listDevice.value = listAllDevice.value.filter((item) => {\n return item.floor === data.floor;\n });\n activatedFloor.value = data;\n rrefMap.value?.getVectorSource().clear();\n\n // 计算当前楼层使用的坐标系 extent/size:\n // - useRealImageSize=false:extent/size 固定 [0,0,1024,968],兼容旧点位数据(不调用 getImageDimensions)\n // - useRealImageSize=true:按底图真实像素尺寸建立坐标系(新项目推荐)\n // 两种模式下 extent/imgUrl 都在同一同步块内赋值,避免 ol-image-layer 的 key 出现中间态\n // (中间态 newUrl|oldExtent 会把新图片拉伸到旧尺寸 → 图标错位,需切换楼层才恢复)\n const url = data.bucketName || defaultImage;\n let dims: { width: number; height: number };\n if (!useRealImageSize.value) {\n // 旧版行为:固定 1024×968(旧版组件的固定逻辑坐标系,底图拉伸显示),\n // 不调用 getImageDimensions(避免被缓存的真实尺寸干扰)\n dims = { width: 1024, height: 968 };\n imgUrl.value = url;\n } else {\n try {\n dims = await getImageDimensions(url);\n if (token !== loadSeq) return;\n imgUrl.value = url;\n } catch {\n // 图片加载失败(404/CORS),回退默认图\n try {\n dims = await getImageDimensions(defaultImage);\n if (token !== loadSeq) return;\n imgUrl.value = defaultImage;\n } catch {\n if (token !== loadSeq) return;\n dims = { width: 1024, height: 968 };\n imgUrl.value = \"\";\n }\n }\n }\n // 先设 extent 再设 imgUrl——同一同步块内 Vue 会批量更新,key 只变一次\n size.value = [dims.width, dims.height];\n extent.value = [0, 0, dims.width, dims.height];\n center.value = [dims.width / 2, dims.height / 2];\n\n // 视图适配统一收敛到 calculateAutoZoom(fit extent)这一个来源。\n // 此前这里同步 setCenter/setZoom(1) 并立即 fit——但 props.extent/size 要等父组件\n // 重渲染才传到 openMap,那次 fit 读到的还是旧值;它与 openMap extent watch 里的\n // nextTick fit 相互覆盖,最终生效的那个取决于图片加载快慢,导致偶发\n // \"底图左下角停在视口中央\"。nextTick 等 props 更新后再 fit,读到的一定是新值;\n // openMap extent watch 的 fit 与这里是同一 extent,幂等。\n await nextTick();\n if (token !== loadSeq) return;\n rrefMap.value?.calculateAutoZoom();\n\n if (data?.bucketName) {\n if (filtrationType.value && filtrationType.value.length > 0) {\n const geoConfig: Record<\n FeatureTypeEnum,\n { geojson?: string; geomType: \"Polygon\" | \"Point\" }\n > = {\n Areas: { geojson: data?.geojson, geomType: \"Polygon\" },\n Devices: { geojson: data?.geojson, geomType: \"Point\" },\n Facilities: { geojson: data?.facilityGeoJson, geomType: \"Point\" },\n Cameras: { geojson: data?.videoGeoJson, geomType: \"Point\" },\n };\n filtrationType.value.forEach((element) => {\n const conf = geoConfig[element];\n if (!conf?.geojson) return;\n const filtered = JSON.parse(conf.geojson).features.filter(\n (feature: any) =>\n feature.geometry && feature.geometry.type === conf.geomType,\n );\n loadFeaturesAndHandleWarning(\n JSON.stringify({ type: \"FeatureCollection\", features: filtered }),\n centerOnWarning,\n );\n });\n } else {\n // 视频模式\n if (data?.videoGeoJson && alarmType.value === \"video\") {\n if (!data?.videoGeoJson) {\n return;\n }\n loadFeaturesAndHandleWarning(data?.videoGeoJson, centerOnWarning);\n } else {\n // 普通geojson\n if (!data?.geojson) {\n return;\n }\n loadFeaturesAndHandleWarning(data?.geojson, centerOnWarning);\n }\n }\n }\n};\n\n// 切换楼层:保留告警配置(不清空 waring),切到含告警设备的楼层时由\n// loadFeaturesAndHandleWarning 自动重新补上告警气泡;centerOnWarning=false 表示切换场景不自动定位\nconst FnUpdateFloor = (item: Floor): void => {\n loadingSource(item, false);\n};\n\nconst fnUpdateDrawFeature2 = (event: DrawEvent): void => {\n event.feature.set(\"color\", defaultColor.value);\n event.feature.set(\"drawType\", \"lineString\");\n};\n\nconst fnUpdateDrawFeature = (event: DrawEvent): void => {\n event.feature.set(\"color\", defaultColor.value);\n event.feature.set(\"text\", \"重点防控区域\");\n};\n\nconst fnOverrideStyle = (feature: OpenLayersFeature, style: any): any => {\n const code = feature.getProperties()?.code;\n const iconUrl = configIcon.value[code] || defaultIcon;\n if (code && iconUrl) {\n const isWarningOrEdit =\n isWaringCode(code) || activatedMode.value === \"edit\";\n\n // scale 是「高度倍率」,不是 Icon 的 scale 选项:最终高度 = ICON_SIZE * scale(在 createIcon 内计算),\n // 即告警/编辑态 40px、普通态 32px;宽度按原图宽高比自动计算,不变形。\n const scale = isWarningOrEdit ? 1 : 0.8;\n // 设备状态(0故障 1报警 2正常 4离线 -1未启用):以 listDevice 实时数据为准,\n // 缺失时回退图纸 feature 属性(other 中嵌入了设备对象)\n const deviceState =\n listDevice.value.find((item: Device) => item.code === code)?.state ??\n feature.get(\"other\")?.state ??\n feature.get(\"state\");\n const iconStyle = rrefMap.value?.createIcon(iconUrl, scale, deviceState);\n\n feature.setStyle(iconStyle);\n } else {\n // eslint-disable-next-line no-use-before-define\n updateFeatureStyle(feature);\n }\n return style;\n};\n\nconst deleteFeature = (feature: OpenLayersFeature): void => {\n rrefMap.value?.getVectorSource().removeFeature(feature);\n};\n\nconst updateFeatureStyle = (\n feature = activatedFeature.value,\n isSelected = false,\n _offset = 0.4,\n): void => {\n if (!feature) {\n return;\n }\n const text = new Text({\n overflow: true,\n textBaseline: \"middle\",\n font: \"normal 14px 微软雅黑\",\n text: feature.get(\"text\") || \"重点区域\",\n fill: new Fill({\n color: \"red\",\n }),\n backgroundFill: new Fill({\n color: \"white\",\n }),\n padding: [2, 5, 2, 5],\n });\n const textStyle = new Style({\n text,\n fill: new Fill({\n color: feature.get(\"color\") || \"rgba(255,255,51,0.2)\",\n }),\n stroke: new Stroke({\n color: feature.get(\"color\") || \"rgba(255,255,51,0.2)\",\n width: isSelected ? 4 : 1,\n }),\n });\n feature.setStyle(textStyle);\n};\n\nconst FnSetColor = (color: string): void => {\n defaultColor.value = color;\n if (activatedFeature.value) {\n activatedFeature.value.set(\"color\", color);\n updateFeatureStyle(activatedFeature.value, true);\n }\n activatedBottomBar.value = \"选择\";\n};\n\nconst handlerChecked = (key: string): void => {\n activatedBottomBar.value = key;\n switch (key) {\n case \"保存\":\n // eslint-disable-next-line no-use-before-define\n FnSaveMain();\n break;\n case \"重置\":\n rrefMap.value?.getVectorSource().clear();\n break;\n case \"放大\": {\n const view = rrefMap.value?.getView();\n if (view) view.setZoom((view.getZoom() ?? 1) + 1);\n break;\n }\n case \"缩小\": {\n const view = rrefMap.value?.getView();\n if (view) view.setZoom((view.getZoom() ?? 1) - 1);\n break;\n }\n case \"区域模板\":\n (function () {\n const feature = new Feature({\n geometry: new Polygon([\n [\n [786.3792005168201, 338.76241851619795],\n [745.2306619461384, 268.6210691239884],\n [720.3979398123276, 226.2914822164155],\n [689.3061489176491, 181.81733917636961],\n [650.6757212309868, 224.32142350364663],\n [635.9358768302526, 239.17937425863389],\n [628.3098681327549, 250.58557144777728],\n [607.7260105988584, 269.24237742792496],\n [657.7235396817343, 346.765203291549],\n [667.2401356802386, 362.85727288146916],\n [709.1159873844781, 428.26685621909996],\n [786.3792005168201, 338.76241851619795],\n ],\n ]),\n text: \"重点消防区域仓库\",\n color: defaultColor.value,\n });\n rrefMap.value?.getVectorSource().addFeature(feature);\n })();\n break;\n case \"原始尺寸\":\n rrefMap.value?.getView().setZoom(1);\n break;\n default:\n break;\n }\n};\n\nconst dragStart = (item: Device): void => {\n activatedDragItem.value = item;\n};\n\n// DragIcon 的 dragend 不携带数据:放置坐标以地图 pointermove 持续写入的 move1 为准,\n// 延迟一拍再取值,等拖拽结束后的最后一次 pointermove 落定。\nconst dragEnd = (): void => {\n setTimeout(() => {\n const viewCoordinate = move1.value;\n if (activatedDragItem.value && viewCoordinate) {\n const feature = new Feature({\n geometry: new Point([viewCoordinate[0], viewCoordinate[1]]),\n type: \"灭火器\",\n deviceType: activatedDragItem.value.deviceType,\n code: activatedDragItem.value.code,\n other: activatedDragItem.value,\n });\n rrefMap.value?.getVectorSource().addFeature(feature);\n }\n }, 100);\n};\n\n/**\n * 计算设备列表\n */\nconst listUnitDevice = computed(() => {\n const codeArr = activatedArrayFeatures.value.reduce(\n (acc: string[], item: any) => {\n if (item.values_.geometry.getType() === \"Point\") {\n acc.push(item.values_.code);\n }\n return acc;\n },\n [],\n ); // 初始化一个空数组来收集 code\n\n let _listUnitDevice = listDevice.value.filter((item: Device) => {\n return !codeArr.some((code: string) => item.code === code);\n });\n if (queryDeviceList.value.activatedDeviceModel) {\n _listUnitDevice = _listUnitDevice.filter((item: Device) => {\n return (\n item.deviceModelName === queryDeviceList.value.activatedDeviceModel\n );\n });\n }\n if (queryDeviceList.value.activatedDeviceType) {\n _listUnitDevice = _listUnitDevice.filter((item: Device) => {\n return item.deviceTypeName === queryDeviceList.value.activatedDeviceType;\n });\n }\n if (queryDeviceList.value.activatedManufacturer) {\n _listUnitDevice = _listUnitDevice.filter((item: Device) => {\n return (\n item.manufacturerName === queryDeviceList.value.activatedManufacturer\n );\n });\n }\n return _listUnitDevice;\n});\n\n/**\n * 关闭主界面\n */\nconst FnCloseMain = (): void => {\n emit(\"closeMain\");\n};\n\nconst FnSaveMain = (): void => {\n document.documentElement.classList.remove(\"dark\");\n const features = rrefMap.value?.getVectorSource().getFeatures() || [];\n const jsonObj = new GeoJSON().writeFeatures(features);\n\n emit(\"saveMain\", { geojson: jsonObj, floor: activatedFloor.value });\n};\n\n// 右键菜单配置(回调依赖 rrefMap / activatedFeature / activatedBottomBar / FnSaveMain,需后置声明)\nconst configMenuItems = ref<MenuItem[]>([\n {\n text: \"删除\",\n icon: deleteIcon,\n callback: (val: any) => {\n if (rrefMap.value.getVectorSource()) {\n rrefMap.value.getVectorSource().removeFeature(activatedFeature.value);\n }\n },\n },\n {\n text: \"编辑\",\n icon: editIcon,\n classname: \"some-style-class\",\n callback: (val: any) => {\n activatedBottomBar.value = \"编辑\";\n },\n },\n {\n text: \"颜色\",\n icon: colorIcon,\n classname: \"some-style-class\",\n callback: (val: any) => {\n activatedBottomBar.value = \"颜色\";\n },\n },\n {\n text: \"保存\",\n icon: saveIcon,\n classname: \"some-style-class\",\n callback: (val: any) => {\n FnSaveMain();\n },\n },\n]);\n\n// 鼠标移出整个组件容器时收起信息弹窗:此时地图不再派发 pointermove,\n// 弹窗会停留在最后一次悬停的设备上不消失\nconst clearHoverOverlay = (): void => {\n activatedPositionOverlay.value = [];\n};\n\ndefineExpose({\n open,\n});\n</script>\n\n<template>\n <div\n id=\"ypc-map-container\"\n class=\"relative w-full h-full overflow-hidden t-geo-mark\"\n @pointerleave=\"clearHoverOverlay\"\n >\n <FloorMark ref=\"refFloor\" @change-floor=\"FnUpdateFloor\" />\n\n <el-card v-if=\"activatedMode === 'edit'\" class=\"t-top-bar\">\n <div class=\"flex items-center justify-between h-full\">\n <div\n v-for=\"o in configTopBar\"\n :key=\"o.name\"\n class=\"t-top-bar__item\"\n :class=\"{ 't-top-bar__item--exit': o.name === '退出' }\"\n @click=\"FnCloseMain()\"\n >\n <i class=\"iconfont\" :class=\"[o.icon]\" />\n {{ o.name }}\n <span v-if=\"o.name !== '退出'\" class=\"t-top-bar__value\">{{\n o.value\n }}</span>\n </div>\n </div>\n </el-card>\n\n <el-card v-if=\"activatedMode === 'edit'\" class=\"t-bottom-bar\">\n <div class=\"t-bottom-bar__inner\">\n <template v-for=\"o in configBottomBar\" :key=\"o.name\">\n <div\n v-if=\"o.name !== '颜色' && o.name !== '区域设置'\"\n class=\"t-bottom-bar__item\"\n :class=\"[activatedBottomBar === o.name ? 't-bbar-active' : '']\"\n @click=\"handlerChecked(o.name)\"\n >\n <span>\n <i class=\"iconfont\" :class=\"[o.icon]\" />\n {{ o.name }}\n </span>\n </div>\n\n <el-popover\n v-else-if=\"o.name === '区域设置'\"\n :width=\"250\"\n style=\"height: 350px !important\"\n placement=\"top\"\n trigger=\"click\"\n popper-class=\"t-popper\"\n >\n <template #reference>\n <div\n class=\"t-bottom-bar__item\"\n :class=\"[activatedBottomBar === o.name ? 't-bbar-active' : '']\"\n @click=\"handlerChecked(o.name)\"\n >\n <span>\n <i class=\"iconfont\" :class=\"[o.icon]\" />\n {{ o.name }}\n </span>\n </div>\n </template>\n <template #default>\n <div\n v-for=\"o in configBottomBar2\"\n :key=\"o.name\"\n class=\"t-bottom-bar__item\"\n :class=\"[activatedBottomBar === o.name ? 't-bbar-active' : '']\"\n @click=\"handlerChecked(o.name)\"\n >\n <span>\n <i class=\"iconfont\" :class=\"[o.icon]\" />\n {{ o.name }}\n </span>\n </div>\n </template>\n </el-popover>\n\n <el-popover\n v-else\n :width=\"250\"\n style=\"height: 350px !important\"\n placement=\"top\"\n trigger=\"click\"\n popper-class=\"t-popper\"\n >\n <template #reference>\n <div\n class=\"t-bottom-bar__item\"\n :class=\"[activatedBottomBar === o.name ? 't-bbar-active' : '']\"\n @click=\"handlerChecked(o.name)\"\n >\n <span>\n <i class=\"iconfont\" :class=\"[o.icon]\" />\n {{ o.name }}\n </span>\n </div>\n </template>\n <template #default>\n <div class=\"grid grid-cols-3 gap-2 p-1\">\n <div\n v-for=\"c in colorList\"\n :key=\"c.value\"\n class=\"flex flex-col items-center cursor-pointer\"\n @click=\"FnSetColor(c.value)\"\n >\n <span\n class=\"w-8 h-8 rounded border border-gray-300\"\n :style=\"{ backgroundColor: c.value }\"\n />\n <span class=\"text-xs mt-1\">{{ c.name }}</span>\n </div>\n </div>\n </template>\n </el-popover>\n </template>\n </div>\n </el-card>\n\n <el-card\n v-if=\"activatedMode === 'edit'\"\n class=\"t-info-panel\"\n :class=\"[activatedFold === true ? 't-fold' : 't-unfold']\"\n >\n <div class=\"t-info-panel__header\">\n <div class=\"t-info-panel__tabs\">\n <span\n class=\"t-info-panel__tab\"\n :class=\"{ 't-info-panel__tab--active': activatedList }\"\n @click=\"activatedList = true\"\n >\n {{ listTitle }}\n </span>\n <span\n class=\"t-info-panel__tab\"\n :class=\"{ 't-info-panel__tab--active': !activatedList }\"\n @click=\"activatedList = false\"\n >\n 标注信息列表\n </span>\n </div>\n <span class=\"t-info-panel__fold\" @click=\"FnUpdateActivatedFold\">\n {{ activatedFold ? \"展开\" : \"收起\" }}\n </span>\n </div>\n\n <div class=\"t-info-panel__filters\">\n <el-select\n v-model=\"queryDeviceList.activatedDeviceType\"\n clearable\n style=\"width: 32%\"\n class=\"mr-2\"\n placeholder=\"请选择类型\"\n :teleported=\"false\"\n >\n <el-option\n v-for=\"item in configOptionsDeviceType\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n\n <el-select\n v-model=\"queryDeviceList.activatedDeviceModel\"\n clearable\n style=\"width: 32%\"\n class=\"mr-2\"\n placeholder=\"请选择型号\"\n :teleported=\"false\"\n >\n <el-option\n v-for=\"item in configOptionsDeviceModel\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n\n <el-select\n v-model=\"queryDeviceList.activatedManufacturer\"\n clearable\n style=\"width: 32%\"\n placeholder=\"请选择厂商\"\n :teleported=\"false\"\n >\n <el-option\n v-for=\"item in configOptionsManufacturer\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n </div>\n\n <div\n v-if=\"activatedList\"\n class=\"grid gap-1 mt-4 px-3.5 w-full grid-cols-12\"\n >\n <span class=\"col-span-1\">图标</span>\n <span class=\"col-span-4\">编号</span>\n <!-- <span class=\"col-span-2 text-center\">楼层</span> -->\n <span class=\"col-span-4\">{{\n listTitle === \"设备信息列表\" ? \"设备类型\" : \"设施类型\"\n }}</span>\n <span class=\"col-span-3\">位置</span>\n </div>\n\n <div v-else class=\"grid gap-1 mt-4 px-3.5 w-full grid-cols-12\">\n <span class=\"col-span-1\">序号</span>\n <span class=\"col-span-1\">图标</span>\n <span class=\"col-span-8\">名称</span>\n <span class=\"col-span-2\">操作</span>\n </div>\n\n <div\n v-if=\"activatedList\"\n style=\"height: calc(100% - 100px)\"\n class=\"w-full mt-4 pb-5 overflow-x-hidden overflow-y-auto panel\"\n >\n <!-- {{ listUnitDevice.length }} -->\n <template v-for=\"(item, index) in listUnitDevice\" :key=\"index\">\n <div\n class=\"t-info-panel__row grid gap-1 mt-4 px-3.5 w-full grid-cols-12\"\n :title=\"item.deviceTypeName\"\n >\n <span class=\"col-span-1 cursor-pointer\">\n <!-- 可拖拽设备图标:dragstart 直接带出设备项,dragend 触发放置逻辑 -->\n <img\n :src=\"configIcon[item.code] || defaultIcon\"\n draggable=\"true\"\n class=\"!w-8\"\n @dragstart=\"dragStart(item)\"\n @dragend=\"dragEnd\"\n />\n </span>\n <span class=\"col-span-4 break-words\">{{ item.code }}</span>\n <span\n class=\"col-span-4 break-words\"\n :title=\"item.remark || item.deviceTypeName || item.videoName\"\n >\n {{ item.remark || item.deviceTypeName || item.videoName }}\n </span>\n <span class=\"col-span-3 break-words\" :title=\"item.locationDesc\">{{\n item.locationDesc || item.addressDesc\n }}</span>\n </div>\n </template>\n </div>\n\n <div\n v-else\n style=\"height: calc(100% - 100px)\"\n class=\"w-full mt-4 overflow-x-hidden overflow-y-auto panel\"\n >\n <template v-for=\"(item, index) in activatedArrayFeatures\" :key=\"item\">\n <div\n class=\"t-info-panel__row grid gap-1 mt-4 px-3.5 w-full grid-cols-12\"\n >\n <span class=\"col-span-1\">{{ index + 1 }} </span>\n <span class=\"col-span-1\">\n <div\n v-if=\"item.values_.geometry.getType() === 'Point'\"\n class=\"!w-8 h-full t-image-point\" />\n\n <div\n v-else\n class=\"!w-8 h-full\"\n :style=\"`background-color:${item.values_.color}`\"\n /></span>\n\n <span class=\"col-span-8\">\n <el-input\n v-if=\"item.values_.geometry.getType() === 'Point'\"\n v-model=\"item.values_.type\"\n size=\"large\"\n clearable\n />\n <el-input\n v-else\n v-model=\"item.values_.text\"\n size=\"large\"\n clearable\n @change=\"updateFeatureStyle(item)\"\n />\n </span>\n\n <span\n class=\"flex items-center justify-center col-span-2 cursor-pointer\"\n @click=\"deleteFeature(item)\"\n >\n <i class=\"iconfont icon-shanchu\" />\n </span>\n </div>\n </template>\n </div>\n </el-card>\n\n <openMapNew\n v-if=\"listFloor.length > 0 && activatedFloor\"\n ref=\"rrefMap\"\n api-key=\"AjtUzWJBHlI3Ma_Ke6Qv2fGRXEs0ua5hUQi54ECwfXTiWsitll4AkETZDihjcfeI\"\n :center=\"center\"\n :zoom=\"zoom\"\n :projection=\"projection\"\n :img-url=\"imgUrl\"\n :size=\"size\"\n :extent=\"extent\"\n :config-menu-items=\"configMenuItems\"\n :activated-bottom-bar=\"activatedBottomBar\"\n :waring=\"hasWaring ? waring : null\"\n :activated-position-overlay-waring=\"activatedPositionOverlayWaring\"\n :activated-position-overlay=\"activatedPositionOverlay\"\n :activated-properties-overlay=\"activatedPropertiesOverlay\"\n :list-title=\"listTitle\"\n :alarm-type=\"alarmType\"\n :svg-overlay=\"svgOverlay\"\n :waring-icon=\"waringIcon\"\n :fn-update-draw-feature=\"fnUpdateDrawFeature\"\n :fn-update-draw-feature2=\"fnUpdateDrawFeature2\"\n :fn-override-style=\"fnOverrideStyle\"\n @ready=\"handleMapReady\"\n >\n <template #overlay>\n <template\n v-if=\"activatedPropertiesOverlay.type && listTitle === '设备信息列表'\"\n >\n <div\n class=\"flex flex-col justify-start text-white opacity-80 t-bg-overlay flex-nowrap\"\n >\n <img :src=\"svgOverlay\" alt=\"\" class=\"absolute w-full h-full\" />\n <div\n class=\"flex t-overlay-item items-center w-full !mt-10 justify-items-start\"\n >\n 设备编码: {{ activatedPropertiesOverlay.other?.code }}\n </div>\n\n <div\n class=\"flex items-center w-full t-overlay-item justify-items-start\"\n >\n 创建日期: {{ activatedPropertiesOverlay.other?.createTime }}\n </div>\n\n <div\n class=\"flex items-center w-full t-overlay-item justify-items-start\"\n >\n 设备位置:\n <div\n class=\"w-52 flex justify-start items-center text-gradient2 truncate ...\"\n :title=\"\n activatedPropertiesOverlay.other?.videoName ||\n activatedPropertiesOverlay.other?.addressDesc\n \"\n >\n {{\n alarmType === \"video\"\n ? activatedPropertiesOverlay.other?.videoName\n : activatedPropertiesOverlay.other?.addressDesc\n }}\n </div>\n </div>\n <div\n class=\"flex items-center w-full t-overlay-item justify-items-start\"\n >\n 设备类型:\n <div\n class=\"w-52 flex justify-start items-center text-gradient2 truncate ...\"\n :title=\"\n activatedPropertiesOverlay.other?.remark ||\n activatedPropertiesOverlay.other?.deviceTypeName ||\n activatedPropertiesOverlay.other?.facilityTypeName\n \"\n >\n {{\n alarmType === \"video\"\n ? \"摄像头\"\n : activatedPropertiesOverlay.other?.remark ||\n activatedPropertiesOverlay.other?.facilityTypeName ||\n activatedPropertiesOverlay.other?.deviceTypeName\n }}\n </div>\n </div>\n </div>\n </template>\n\n <!-- 设施信息弹窗 -->\n <template\n v-if=\"activatedPropertiesOverlay.type && listTitle === '设施信息列表'\"\n >\n <div\n class=\"flex flex-col justify-start text-white opacity-80 t-bg-overlay flex-nowrap\"\n >\n <img :src=\"svgOverlay\" alt=\"\" class=\"absolute w-full h-full\" />\n <div\n class=\"flex t-overlay-item items-center w-full !mt-10 justify-items-start\"\n >\n 设施编码: {{ activatedPropertiesOverlay.other?.code }}\n </div>\n\n <div\n class=\"flex items-center w-full t-overlay-item justify-items-start\"\n >\n 创建日期: {{ activatedPropertiesOverlay.other?.createTime }}\n </div>\n\n <div\n class=\"flex items-center w-full t-overlay-item justify-items-start\"\n >\n 设施型号: {{ activatedPropertiesOverlay.other?.deviceModelName }}\n </div>\n <div\n class=\"flex items-center w-full t-overlay-item justify-items-start\"\n >\n 设施厂商:\n {{ activatedPropertiesOverlay.other?.manufacturerName }}\n </div>\n </div>\n </template>\n </template>\n </openMapNew>\n <img\n v-else\n :src=\"defaultImage\"\n alt=\"默认底图\"\n :style=\"{ width: `${size[0]}px`, height: `${size[1]}px` }\"\n />\n </div>\n</template>\n"],"names":["defaultImage","_a","_b","_c","viewCoordinate","_d","feature","defaultIcon","deleteIcon","editIcon","colorIcon","saveIcon","_createElementBlock","_createVNode","FloorMark","_createBlock","_createElementVNode","_Fragment","_renderList","_normalizeClass","_createTextVNode","_toDisplayString","_openBlock","o","_normalizeStyle","_createCommentVNode","_unref","openMapNew","svgOverlay","waringIcon"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"geoMark.js","sources":["../../../../../../../packages/components/geoMark/src/geoMark.ts"],"sourcesContent":["import type { ComponentPublicInstance, ExtractPropTypes, PropType } from \"vue\";\n\ntype FeatureTypeEnum = \"Areas\" | \"Devices\" | \"Facilities\" | \"Cameras\";\n\n// OpenLayers 相关类型定义\n// 说明:ol 库真实类型(Feature/Map/View/VectorSource 等)结构复杂,\n// 手写简化类型会与 ol 的强类型冲突,这里统一用 any 以兼容真实 ol 对象。\ntype OpenLayersFeature = any;\ntype OpenLayersGeometry = any;\ntype OpenLayersMap = any;\ntype OpenLayersView = any;\ntype OpenLayersVectorSource = any;\n\ninterface OpenLayersFormat {\n GeoJSON: {\n new (): {\n readFeatures: (geojson: any) => OpenLayersFeature[];\n writeFeatures: (features: OpenLayersFeature[]) => string;\n };\n };\n}\n\ninterface OpenLayersFeatureConstructor {\n new (properties: Record<string, any>): OpenLayersFeature;\n}\n\ninterface OpenLayersGeometryConstructor {\n Point: {\n new (coordinates: number[]): OpenLayersGeometry;\n };\n Polygon: {\n new (coordinates: number[][][]): OpenLayersGeometry;\n };\n}\n\n// 地图组件相关类型\ninterface MapComponent {\n getMap: () => OpenLayersMap;\n getVectorSource: () => OpenLayersVectorSource;\n getView: () => OpenLayersView;\n calculateAutoZoom: () => void;\n createIcon: (iconUrl: string, scale: number) => any;\n}\n\n// 事件相关类型\ninterface DragEvent {\n screenX: number;\n screenY: number;\n [key: string]: any;\n}\n\ninterface MapPointerEvent {\n pixel: number[];\n originalEvent: any;\n}\n\n// 颜色选择器类型\ninterface ColorPickerValue {\n rgba: {\n r: number;\n g: number;\n b: number;\n a: number;\n };\n hex?: string;\n hsl?: {\n h: number;\n s: number;\n l: number;\n };\n}\n\n// 楼层组件类型\ninterface FloorComponent {\n init: (floors: Floor[], defaultFloor: Floor) => void;\n}\n\n// 扩展原有的接口定义\ninterface Device {\n code: string;\n deviceType?: string;\n deviceTypeName?: string;\n videoName?: string;\n remark?: string;\n floor?: string | number;\n [key: string]: any;\n}\n\ninterface Floor {\n floor: string | number;\n bucketName?: string;\n geojson?: any;\n videoGeoJson?: any;\n facilityGeoJson?: any;\n [key: string]: any;\n}\n\ninterface ConfigIcon {\n [code: string]: string;\n}\n\ninterface ConfigTopBarItem {\n name: string;\n icon: string;\n value: string;\n}\n\ninterface ConfigBottomBarItem {\n name: string;\n icon: string;\n}\n\ninterface MenuItem {\n text: string;\n icon: string;\n callback: (val: any) => void;\n classname?: string;\n}\n\ninterface OptionType {\n label: string;\n value: string;\n key: string;\n}\n\ninterface QueryDeviceListType {\n activatedDeviceType: string;\n activatedManufacturer: string;\n activatedDeviceModel: string;\n}\n\ninterface OpenParams {\n listFloor: Floor[];\n listDevice: Device[];\n defaultFloor?: Floor | null;\n waring?: string | number | null;\n listTitle?: string;\n configIcon?: ConfigIcon;\n configTopBar?: ConfigTopBarItem[];\n type?: string;\n featureType?: FeatureTypeEnum[] | [];\n /**\n * 是否按底图真实像素尺寸建立坐标系。\n * - true(默认):按当前楼层底图的 naturalWidth/Height 动态设置 extent。\n * - false:保持旧版本行为,extent/size 固定为 [0,0,800,600],兼容旧点位数据。\n */\n useRealImageSize?: boolean;\n}\n\ninterface MapEvent {\n pixel: number[];\n coordinate: number[];\n feature?: OpenLayersFeature;\n geometry?: OpenLayersGeometry;\n}\n\ninterface DrawEvent {\n feature: OpenLayersFeature;\n type?: string;\n}\n\ninterface StyleUpdateParams {\n feature?: OpenLayersFeature;\n isSelected?: boolean;\n offset?: number;\n}\n\ninterface SaveResult {\n geojson: string;\n floor: Floor | undefined;\n}\n\n// 组件事件类型\ninterface ComponentEmits {\n closeMain: [];\n saveMain: [result: SaveResult];\n}\n\n// 组件Props类型\ninterface ComponentProps {\n type?: string;\n}\n\n// 注入的类型\ninterface Injections {\n \"ol-format\": OpenLayersFormat;\n \"ol-feature\": OpenLayersFeatureConstructor;\n \"ol-geom\": OpenLayersGeometryConstructor;\n}\n\nexport type {\n ColorPickerValue,\n ComponentEmits,\n ComponentProps,\n ConfigBottomBarItem,\n ConfigIcon,\n ConfigTopBarItem,\n Device,\n DragEvent,\n DrawEvent,\n FeatureTypeEnum,\n Floor,\n FloorComponent,\n Injections,\n MapComponent,\n MapEvent,\n MapPointerEvent,\n MenuItem,\n OpenLayersFeature,\n OpenLayersFeatureConstructor,\n OpenLayersFormat,\n OpenLayersGeometry,\n OpenLayersGeometryConstructor,\n OpenLayersMap,\n OpenLayersVectorSource,\n OpenLayersView,\n OpenParams,\n OptionType,\n QueryDeviceListType,\n SaveResult,\n StyleUpdateParams,\n};\n\nexport const GeoMarkProps = {\n type: { type: String as PropType<string>, default: \"\" },\n};\n\nexport type GeoMarkPropsType = ExtractPropTypes<typeof GeoMarkProps>;\nexport type GeoMarkInstance = ComponentPublicInstance & {\n open: (params: OpenParams) => Promise<void>;\n};\n"],"names":[],"mappings":";;AA+NO,MAAM,YAAe,GAAA;AAAA,EAC1B,IAAM,EAAA,EAAE,IAAM,EAAA,MAAA,EAA4B,SAAS,EAAG;AACxD;;;;"}
1
+ {"version":3,"file":"geoMark.js","sources":["../../../../../../../packages/components/geoMark/src/geoMark.ts"],"sourcesContent":["import type { ComponentPublicInstance, ExtractPropTypes, PropType } from \"vue\";\n\ntype FeatureTypeEnum = \"Areas\" | \"Devices\" | \"Facilities\" | \"Cameras\";\n\n// OpenLayers 相关类型定义\n// 说明:ol 库真实类型(Feature/Map/View/VectorSource 等)结构复杂,\n// 手写简化类型会与 ol 的强类型冲突,这里统一用 any 以兼容真实 ol 对象。\ntype OpenLayersFeature = any;\ntype OpenLayersGeometry = any;\ntype OpenLayersMap = any;\ntype OpenLayersView = any;\ntype OpenLayersVectorSource = any;\n\ninterface OpenLayersFormat {\n GeoJSON: {\n new (): {\n readFeatures: (geojson: any) => OpenLayersFeature[];\n writeFeatures: (features: OpenLayersFeature[]) => string;\n };\n };\n}\n\ninterface OpenLayersFeatureConstructor {\n new (properties: Record<string, any>): OpenLayersFeature;\n}\n\ninterface OpenLayersGeometryConstructor {\n Point: {\n new (coordinates: number[]): OpenLayersGeometry;\n };\n Polygon: {\n new (coordinates: number[][][]): OpenLayersGeometry;\n };\n}\n\n// 地图组件相关类型\ninterface MapComponent {\n getMap: () => OpenLayersMap;\n getVectorSource: () => OpenLayersVectorSource;\n getView: () => OpenLayersView;\n calculateAutoZoom: () => void;\n createIcon: (iconUrl: string, scale: number) => any;\n}\n\n// 事件相关类型\ninterface DragEvent {\n screenX: number;\n screenY: number;\n [key: string]: any;\n}\n\ninterface MapPointerEvent {\n pixel: number[];\n originalEvent: any;\n}\n\n// 颜色选择器类型\ninterface ColorPickerValue {\n rgba: {\n r: number;\n g: number;\n b: number;\n a: number;\n };\n hex?: string;\n hsl?: {\n h: number;\n s: number;\n l: number;\n };\n}\n\n// 楼层组件类型\ninterface FloorComponent {\n init: (floors: Floor[], defaultFloor: Floor) => void;\n}\n\n// 扩展原有的接口定义\ninterface Device {\n code: string;\n deviceType?: string;\n deviceTypeName?: string;\n videoName?: string;\n remark?: string;\n floor?: string | number;\n [key: string]: any;\n}\n\ninterface Floor {\n floor: string | number;\n bucketName?: string;\n geojson?: any;\n videoGeoJson?: any;\n facilityGeoJson?: any;\n [key: string]: any;\n}\n\ninterface ConfigIcon {\n [code: string]: string;\n}\n\ninterface ConfigTopBarItem {\n name: string;\n icon: string;\n value: string;\n}\n\ninterface ConfigBottomBarItem {\n name: string;\n icon: string;\n}\n\ninterface MenuItem {\n text: string;\n icon: string;\n callback: (val: any) => void;\n classname?: string;\n}\n\ninterface OptionType {\n label: string;\n value: string;\n key: string;\n}\n\ninterface QueryDeviceListType {\n activatedDeviceType: string;\n activatedManufacturer: string;\n activatedDeviceModel: string;\n}\n\ninterface OpenParams {\n listFloor: Floor[];\n listDevice: Device[];\n defaultFloor?: Floor | null;\n waring?: string | number | null;\n listTitle?: string;\n configIcon?: ConfigIcon;\n configTopBar?: ConfigTopBarItem[];\n type?: string;\n featureType?: FeatureTypeEnum[] | [];\n /**\n * 是否按底图真实像素尺寸建立坐标系。\n * - false(默认):保持旧版本行为,extent/size 固定为 [0,0,1024,968],兼容旧点位数据。\n * - true:按当前楼层底图的 naturalWidth/Height 动态设置 extent(新项目推荐)。\n */\n useRealImageSize?: boolean;\n}\n\ninterface MapEvent {\n pixel: number[];\n coordinate: number[];\n feature?: OpenLayersFeature;\n geometry?: OpenLayersGeometry;\n}\n\ninterface DrawEvent {\n feature: OpenLayersFeature;\n type?: string;\n}\n\ninterface StyleUpdateParams {\n feature?: OpenLayersFeature;\n isSelected?: boolean;\n offset?: number;\n}\n\ninterface SaveResult {\n geojson: string;\n floor: Floor | undefined;\n}\n\n// 组件事件类型\ninterface ComponentEmits {\n closeMain: [];\n saveMain: [result: SaveResult];\n}\n\n// 组件Props类型\ninterface ComponentProps {\n type?: string;\n}\n\n// 注入的类型\ninterface Injections {\n \"ol-format\": OpenLayersFormat;\n \"ol-feature\": OpenLayersFeatureConstructor;\n \"ol-geom\": OpenLayersGeometryConstructor;\n}\n\nexport type {\n ColorPickerValue,\n ComponentEmits,\n ComponentProps,\n ConfigBottomBarItem,\n ConfigIcon,\n ConfigTopBarItem,\n Device,\n DragEvent,\n DrawEvent,\n FeatureTypeEnum,\n Floor,\n FloorComponent,\n Injections,\n MapComponent,\n MapEvent,\n MapPointerEvent,\n MenuItem,\n OpenLayersFeature,\n OpenLayersFeatureConstructor,\n OpenLayersFormat,\n OpenLayersGeometry,\n OpenLayersGeometryConstructor,\n OpenLayersMap,\n OpenLayersVectorSource,\n OpenLayersView,\n OpenParams,\n OptionType,\n QueryDeviceListType,\n SaveResult,\n StyleUpdateParams,\n};\n\nexport const GeoMarkProps = {\n type: { type: String as PropType<string>, default: \"\" },\n};\n\nexport type GeoMarkPropsType = ExtractPropTypes<typeof GeoMarkProps>;\nexport type GeoMarkInstance = ComponentPublicInstance & {\n open: (params: OpenParams) => Promise<void>;\n};\n"],"names":[],"mappings":";;AA+NO,MAAM,YAAe,GAAA;AAAA,EAC1B,IAAM,EAAA,EAAE,IAAM,EAAA,MAAA,EAA4B,SAAS,EAAG;AACxD;;;;"}
@@ -297,7 +297,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
297
297
  configIcon: {},
298
298
  configTopBar: [],
299
299
  featureType: ["Areas"],
300
- useRealImageSize: true
300
+ useRealImageSize: false
301
301
  }) => {
302
302
  var _a, _b, _c;
303
303
  if (params.featureType && params.featureType.length > 0) {
@@ -309,7 +309,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
309
309
  if (params.listTitle) {
310
310
  listTitle.value = params.listTitle;
311
311
  }
312
- useRealImageSize.value = (_a = params.useRealImageSize) != null ? _a : true;
312
+ useRealImageSize.value = (_a = params.useRealImageSize) != null ? _a : false;
313
313
  listFloor.value = params.listFloor;
314
314
  listDevice.value = params.listDevice;
315
315
  listAllDevice.value = params.listDevice;