@yimou6/common-ui 1.13.15 → 1.13.17
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.
- package/cdn/index.cdn.js +1 -1
- package/cdn/index.cdn.js.map +1 -1
- package/cdn/index.cdn.mjs +1 -1
- package/cdn/index.cdn.mjs.map +1 -1
- package/es/components/map/src/map.vue2.mjs +1 -1
- package/es/components/map/src/map.vue2.mjs.map +1 -1
- package/lib/components/map/src/map.vue2.js +1 -1
- package/lib/components/map/src/map.vue2.js.map +1 -1
- package/package.json +1 -1
|
@@ -16,7 +16,7 @@ const _hoisted_2 = {
|
|
|
16
16
|
};
|
|
17
17
|
const _hoisted_3 = { class: "i-map__district" };
|
|
18
18
|
const _hoisted_4 = { class: "i-map__container-inner" };
|
|
19
|
-
const _hoisted_5 = { class: "i-map w-full i-map__container-inner
|
|
19
|
+
const _hoisted_5 = { class: "i-map w-full h-full i-map__container-inner" };
|
|
20
20
|
const _hoisted_6 = { class: "i-map" };
|
|
21
21
|
const _hoisted_7 = {
|
|
22
22
|
key: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.vue2.mjs","sources":["../../../../../../../packages/components/map/src/map.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { CircleClose } from \"@element-plus/icons-vue\";\nimport { ElMessage } from \"element-plus\";\nimport { nextTick, onMounted, onUnmounted, ref, toRefs, watch } from \"vue\";\nimport { MapProps, TiandituGlobal } from \"./map\";\nimport markerIcon from \"./marker.png\";\n\ndefineOptions({\n name: \"IMap\",\n});\n\n// ==================== Props & Emits ====================\nconst props = defineProps(MapProps);\n\nconst emits = defineEmits([\n \"update:modelValue\",\n \"change\",\n \"update:addressCode\",\n \"update:address\",\n]);\n\nconst { modelValue, disabled, options } = toRefs(props);\n\n// ==================== 天地图 Token ====================\nconst TIANDITU_TOKEN = \"ab0296cad21f656152228912c15abdfb\";\n\n// ==================== 模块级:加载天地图 JS API ====================\nconst _win = window as unknown as TiandituGlobal;\n\nfunction loadTiandituScript(): Promise<void> {\n if (_win.__tdt_loaded) return Promise.resolve();\n if (_win.__tdt_loading) return _win.__tdt_loading;\n\n _win.__tdt_loading = new Promise<void>((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = `//api.tianditu.gov.cn/api?v=4.0&tk=${TIANDITU_TOKEN}`;\n script.onload = () => {\n _win.__tdt_loaded = true;\n _win.__tdt_loading = null;\n resolve();\n };\n script.onerror = () => {\n _win.__tdt_loading = null;\n reject(new Error(\"天地图 API 加载失败\"));\n };\n document.head.appendChild(script);\n });\n return _win.__tdt_loading;\n}\n\nfunction getT(): any {\n return _win.T;\n}\n\n// ==================== 天地图 REST API 封装 ====================\nasync function tdtSearch(keyword: string): Promise<any[]> {\n const postStr = JSON.stringify({\n keyWord: keyword,\n level: 12,\n queryType: 1,\n start: 0,\n count: 20,\n });\n const url = `//api.tianditu.gov.cn/search?postStr=${encodeURIComponent(postStr)}&type=query&tk=${TIANDITU_TOKEN}`;\n const resp = await fetch(url);\n const data = await resp.json();\n if (data && data.pois) {\n return data.pois.map((poi: any) => ({\n name: poi.name,\n district: poi.address || \"\",\n location: poi.lonlat\n ? {\n lng: Number(poi.lonlat.split(\" \")[0]),\n lat: Number(poi.lonlat.split(\" \")[1]),\n }\n : null,\n adcode: poi.admincode || \"\",\n _raw: poi,\n }));\n }\n return [];\n}\n\nasync function tdtReverseGeocode(lng: number, lat: number): Promise<string> {\n const postStr = JSON.stringify({ lon: lng, lat, ver: 1 });\n const url = `//api.tianditu.gov.cn/geocoder?postStr=${encodeURIComponent(postStr)}&type=geocode&tk=${TIANDITU_TOKEN}`;\n const resp = await fetch(url);\n const data = await resp.json();\n if (data && data.result) {\n return data.result.formatted_address || data.result.address || \"\";\n }\n return \"\";\n}\n\n// ==================== 响应式状态 ====================\nlet map: any = null;\nlet marker: any = null;\nlet infoWindow: any = null;\n\nconst dialogVisible = ref(false);\nconst keyword = ref(\"\");\nconst model = ref<any>([]);\n\nconst refMap = ref<HTMLDivElement | null>(null);\nconst center = ref<[number, number]>([116.397428, 39.90923]);\nconst zoom = ref(10);\n\n// ==================== 标记管理 ====================\nfunction clearMarker() {\n if (marker) {\n map?.removeOverLay(marker);\n marker = null;\n }\n}\n\nasync function addMarker(lnglat: [number, number], name?: string) {\n const T = getT();\n if (!T || !map) return;\n\n clearMarker();\n\n const icon = new T.Icon({\n iconUrl: markerIcon,\n iconSize: new T.Point(19, 33),\n iconAnchor: new T.Point(10, 33),\n });\n\n marker = new T.Marker(new T.LngLat(lnglat[0], lnglat[1]), { icon });\n map.addOverLay(marker);\n\n if (name) {\n keyword.value = name;\n model.value = [lnglat[0], lnglat[1], name];\n return;\n }\n\n try {\n const address = await tdtReverseGeocode(lnglat[0], lnglat[1]);\n keyword.value =\n address || `${lnglat[0].toFixed(6)}, ${lnglat[1].toFixed(6)}`;\n model.value = [lnglat[0], lnglat[1], keyword.value];\n } catch {\n model.value = [\n lnglat[0],\n lnglat[1],\n `${lnglat[0].toFixed(6)}, ${lnglat[1].toFixed(6)}`,\n ];\n }\n}\n\n// ==================== 地图初始化 ====================\nasync function initMap() {\n await loadTiandituScript();\n const T = getT();\n if (!T) return;\n\n const container = refMap.value;\n if (!container) return;\n\n if (map) {\n try {\n map.destroy();\n } catch {\n /* ignore */\n }\n map = null;\n marker = null;\n }\n\n const hasInitPos = model.value?.[0] != null && model.value?.[1] != null;\n const mapCenter = hasInitPos\n ? new T.LngLat(model.value[0], model.value[1])\n : new T.LngLat(center.value[0], center.value[1]);\n const mapZoom = hasInitPos ? options.value?.zoom || 15 : zoom.value;\n\n map = new T.Map(container, {\n center: mapCenter,\n zoom: mapZoom,\n });\n\n map.addControl(new T.Control.Zoom());\n\n // 地图点击 → 选点\n map.addEventListener(\"click\", (e: any) => {\n const lnglat = e.lnglat;\n if (!lnglat) return;\n addMarker([lnglat.getLng(), lnglat.getLat()]);\n });\n\n if (hasInitPos) {\n await nextTick();\n addMarker([model.value[0], model.value[1]], model.value[2]);\n }\n}\n\nfunction destroyMap() {\n clearMarker();\n if (infoWindow) {\n try {\n infoWindow.closeInfoWindow();\n } catch {\n /* ignore */\n }\n infoWindow = null;\n }\n if (map) {\n try {\n map.destroy();\n } catch {\n /* ignore */\n }\n map = null;\n }\n}\n\n// ==================== 打开选择器 ====================\nconst handleOpenDialog = async () => {\n if (disabled.value) return;\n dialogVisible.value = true;\n await nextTick();\n model.value = JSON.parse(JSON.stringify(modelValue.value));\n setTimeout(() => initMap(), 200);\n};\n\n// ==================== 自动补全搜索 ====================\nconst querySearch = async (queryString: string, cb: any) => {\n if (!queryString) return cb([]);\n try {\n const results = await tdtSearch(queryString);\n cb(results);\n } catch {\n ElMessage.error(\"搜索失败,请稍后重试\");\n cb([]);\n }\n};\n\nconst inputChange = () => {\n model.value = [];\n clearMarker();\n};\n\n// ==================== 选中搜索结果 ====================\nconst handleSelect = async (item: any) => {\n keyword.value = item.name;\n\n if (item.location && !isNaN(item.location.lng) && !isNaN(item.location.lat)) {\n addMarker([item.location.lng, item.location.lat], item.name);\n map?.setCenter(new (getT().LngLat)(item.location.lng, item.location.lat));\n } else if (item._raw?.lonlat) {\n const [lng, lat] = item._raw.lonlat.split(\" \").map(Number);\n if (!isNaN(lng) && !isNaN(lat)) {\n addMarker([lng, lat], item.name);\n map?.setCenter(new (getT().LngLat)(lng, lat));\n }\n } else {\n try {\n const results = await tdtSearch(item.name);\n if (results.length > 0) {\n const first = results[0];\n if (\n first.location &&\n !isNaN(first.location.lng) &&\n !isNaN(first.location.lat)\n ) {\n addMarker([first.location.lng, first.location.lat], first.name);\n map?.setCenter(\n new (getT().LngLat)(first.location.lng, first.location.lat),\n );\n showSearchPanel(results);\n }\n }\n } catch {\n ElMessage.warning(\"未找到匹配的地点\");\n }\n return;\n }\n\n try {\n const results = await tdtSearch(item.name);\n if (results.length > 0) showSearchPanel(results);\n } catch {\n /* ignore */\n }\n};\n\nfunction showSearchPanel(results: any[]) {\n const panel = document.querySelector(\".i-map__search-result\");\n if (!panel) return;\n panel.setAttribute(\"style\", \"display:block\");\n panel.innerHTML = results\n .map(\n (r, i) =>\n `<div class=\"tdt-search-item\" data-index=\"${i}\" style=\"padding:6px 8px;cursor:pointer;border-bottom:1px solid #eee;font-size:13px;\">\n <div style=\"font-weight:500;\">${r.name}</div>\n <div style=\"color:#999;font-size:12px;\">${r.district || \"\"}</div>\n </div>`,\n )\n .join(\"\");\n\n panel.querySelectorAll(\".tdt-search-item\").forEach((el) => {\n el.addEventListener(\"click\", () => {\n const idx = Number((el as HTMLElement).dataset.index);\n const item = results[idx];\n if (item?.location) {\n clearMarker();\n addMarker([item.location.lng, item.location.lat], item.name);\n map?.setCenter(\n new (getT().LngLat)(item.location.lng, item.location.lat),\n );\n }\n });\n });\n}\n\n// ==================== 确认 / 清除 ====================\nconst handleConfirm = () => {\n emits(\"update:modelValue\", model.value);\n emits(\"change\", model.value);\n emits(\"update:addressCode\", [model.value[0], model.value[1]]);\n emits(\"update:address\", model.value[2]);\n dialogVisible.value = false;\n setTimeout(() => destroyMap(), 300);\n};\n\nconst clearValue = () => {\n emits(\"update:modelValue\", []);\n emits(\"change\", []);\n};\n\n// ==================== 地图中心更新 ====================\nfunction updateMapCenter(val: any[], retry = 0) {\n const T = getT();\n if (!map || !T) {\n if (retry < 10) {\n setTimeout(() => updateMapCenter(val, retry + 1), 300);\n }\n return;\n }\n addMarker([val[0], val[1]], val[2]);\n map.panTo(new T.LngLat(val[0], val[1]), options.value?.zoom || 12);\n}\n\n// ==================== View 模式:挂载时初始化 ====================\nonMounted(() => {\n if (props.type === \"view\") {\n nextTick(async () => {\n model.value = JSON.parse(JSON.stringify(modelValue.value));\n await new Promise((r) => requestAnimationFrame(r));\n try {\n await initMap();\n } catch (e) {\n console.error(\"[ViewMap] initMap error:\", e);\n }\n });\n }\n});\n\nonUnmounted(() => {\n destroyMap();\n});\n\n// ==================== 监听 modelValue 外部变化 ====================\nwatch(\n () => props.modelValue,\n (val) => {\n if (!val || val[0] == null || val[1] == null) return;\n model.value = JSON.parse(JSON.stringify(val));\n updateMapCenter(val);\n },\n { deep: true },\n);\n\ndefineExpose({\n handleOpenDialog,\n});\n</script>\n\n<template>\n <!-- type=\"edit2\":纯抽屉模式 -->\n <div v-if=\"type === 'edit2'\" class=\"i-map\">\n <el-drawer\n v-model=\"dialogVisible\"\n title=\"请选择地点\"\n :show-close=\"true\"\n size=\"100%\"\n @closed=\"destroyMap\"\n >\n <div v-if=\"dialogVisible\" class=\"h-full overflow-hidden i-map__container\">\n <el-autocomplete\n v-model=\"keyword\"\n :disabled=\"disabled\"\n placeholder=\"请输入关键字选择地点\"\n class=\"i-map__search\"\n :debounce=\"700\"\n style=\"margin-bottom: 15px; width: 100%\"\n clearable\n :fetch-suggestions=\"querySearch\"\n :validate-event=\"false\"\n @input=\"inputChange\"\n @select=\"handleSelect\"\n @keyup.enter=\"handleSelect({ name: keyword })\"\n >\n <template #default=\"{ item }\">\n {{ item.name }}\n <span class=\"i-map__district\">{{ item.district }}</span>\n </template>\n </el-autocomplete>\n <div class=\"i-map__container-inner\">\n <div ref=\"refMap\" class=\"i-map__tdt\" />\n <div class=\"i-map__search-result\" />\n </div>\n </div>\n <template #footer>\n <el-button type=\"primary\" :disabled=\"disabled\" @click=\"handleConfirm\">\n 确定\n </el-button>\n </template>\n </el-drawer>\n </div>\n\n <!-- type=\"view\":只读地图 -->\n <div\n v-else-if=\"type === 'view'\"\n class=\"i-map w-full i-map__container-inner i-map__view-wrapper\"\n >\n <div ref=\"refMap\" class=\"i-map__tdt i-map__tdt--view\" />\n <div class=\"i-map__search-result\" />\n </div>\n\n <!-- 默认 type=\"edit\":输入框 + 抽屉 -->\n <div v-else class=\"i-map\">\n <el-input\n v-model=\"modelValue[2]\"\n class=\"i-map__input\"\n :placeholder=\"placeholder\"\n readonly\n :size=\"size\"\n :disabled=\"disabled\"\n @click=\"handleOpenDialog\"\n >\n <template v-if=\"!disabled\" #suffix>\n <el-icon\n v-if=\"modelValue[2]\"\n class=\"i-map__input-close\"\n @click.stop=\"clearValue\"\n >\n <CircleClose />\n </el-icon>\n </template>\n </el-input>\n\n <el-drawer\n v-model=\"dialogVisible\"\n title=\"请选择地点\"\n :show-close=\"true\"\n size=\"100%\"\n @closed=\"destroyMap\"\n >\n <div v-if=\"dialogVisible\" class=\"h-full overflow-hidden i-map__container\">\n <el-autocomplete\n v-model=\"keyword\"\n :disabled=\"disabled\"\n placeholder=\"请输入关键字选择地点\"\n class=\"i-map__search\"\n :debounce=\"700\"\n style=\"margin-bottom: 15px; width: 100%\"\n clearable\n :fetch-suggestions=\"querySearch\"\n :validate-event=\"false\"\n @input=\"inputChange\"\n @select=\"handleSelect\"\n @keyup.enter=\"handleSelect({ name: keyword })\"\n >\n <template #default=\"{ item }\">\n {{ item.name }}\n <span class=\"i-map__district\">{{ item.district }}</span>\n </template>\n </el-autocomplete>\n <div class=\"i-map__container-inner\">\n <div ref=\"refMap\" class=\"i-map__tdt\" />\n <div class=\"i-map__search-result\" />\n </div>\n </div>\n <template #footer>\n <el-button type=\"primary\" :disabled=\"disabled\" @click=\"handleConfirm\">\n 确定\n </el-button>\n </template>\n </el-drawer>\n </div>\n</template>\n"],"names":["keyword","markerIcon","_createCommentVNode","type","_openBlock","_createElementBlock","_createVNode","_unref","_withKeys","_withCtx","_createElementVNode","_toDisplayString","_Fragment","placeholder","size","_createBlock","CircleClose"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,MAAM,cAAiB,GAAA,kCAAA;;;;;;;;;;;;;;AAZvB,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAOd,IAAA,MAAM,EAAE,UAAY,EAAA,QAAA,EAAU,OAAQ,EAAA,GAAI,OAAO,KAAK,CAAA;AAMtD,IAAA,MAAM,IAAO,GAAA,MAAA;AAEb,IAAA,SAAS,kBAAoC,GAAA;AAC3C,MAAA,IAAI,IAAK,CAAA,YAAA,EAAqB,OAAA,OAAA,CAAQ,OAAQ,EAAA;AAC9C,MAAI,IAAA,IAAA,CAAK,aAAe,EAAA,OAAO,IAAK,CAAA,aAAA;AAEpC,MAAA,IAAA,CAAK,aAAgB,GAAA,IAAI,OAAc,CAAA,CAAC,SAAS,MAAW,KAAA;AAC1D,QAAM,MAAA,MAAA,GAAS,QAAS,CAAA,aAAA,CAAc,QAAQ,CAAA;AAC9C,QAAO,MAAA,CAAA,GAAA,GAAM,sCAAsC,cAAc,CAAA,CAAA;AACjE,QAAA,MAAA,CAAO,SAAS,MAAM;AACpB,UAAA,IAAA,CAAK,YAAe,GAAA,IAAA;AACpB,UAAA,IAAA,CAAK,aAAgB,GAAA,IAAA;AACrB,UAAQ,OAAA,EAAA;AAAA,SACV;AACA,QAAA,MAAA,CAAO,UAAU,MAAM;AACrB,UAAA,IAAA,CAAK,aAAgB,GAAA,IAAA;AACrB,UAAO,MAAA,CAAA,IAAI,KAAM,CAAA,iDAAc,CAAC,CAAA;AAAA,SAClC;AACA,QAAS,QAAA,CAAA,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,OACjC,CAAA;AACD,MAAA,OAAO,IAAK,CAAA,aAAA;AAAA;AAlBL,IAAA,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AAqBT,IAAA,SAAS,IAAY,GAAA;AACnB,MAAA,OAAO,IAAK,CAAA,CAAA;AAAA;AADL,IAAA,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAKT,IAAA,eAAe,UAAUA,QAAiC,EAAA;AACxD,MAAM,MAAA,OAAA,GAAU,KAAK,SAAU,CAAA;AAAA,QAC7B,OAASA,EAAAA,QAAAA;AAAA,QACT,KAAO,EAAA,EAAA;AAAA,QACP,SAAW,EAAA,CAAA;AAAA,QACX,KAAO,EAAA,CAAA;AAAA,QACP,KAAO,EAAA;AAAA,OACR,CAAA;AACD,MAAA,MAAM,MAAM,CAAwC,qCAAA,EAAA,kBAAA,CAAmB,OAAO,CAAC,kBAAkB,cAAc,CAAA,CAAA;AAC/G,MAAM,MAAA,IAAA,GAAO,MAAM,KAAA,CAAM,GAAG,CAAA;AAC5B,MAAM,MAAA,IAAA,GAAO,MAAM,IAAA,CAAK,IAAK,EAAA;AAC7B,MAAI,IAAA,IAAA,IAAQ,KAAK,IAAM,EAAA;AACrB,QAAA,OAAO,IAAK,CAAA,IAAA,CAAK,GAAI,CAAA,CAAC,GAAc,MAAA;AAAA,UAClC,MAAM,GAAI,CAAA,IAAA;AAAA,UACV,QAAA,EAAU,IAAI,OAAW,IAAA,EAAA;AAAA,UACzB,QAAA,EAAU,IAAI,MACV,GAAA;AAAA,YACE,GAAA,EAAK,OAAO,GAAI,CAAA,MAAA,CAAO,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,YACpC,GAAA,EAAK,OAAO,GAAI,CAAA,MAAA,CAAO,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC;AAAA,WAEtC,GAAA,IAAA;AAAA,UACJ,MAAA,EAAQ,IAAI,SAAa,IAAA,EAAA;AAAA,UACzB,IAAM,EAAA;AAAA,SACN,CAAA,CAAA;AAAA;AAEJ,MAAA,OAAO,EAAC;AAAA;AAzBK,IAAA,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;AA4Bf,IAAe,eAAA,iBAAA,CAAkB,KAAa,GAA8B,EAAA;AAC1E,MAAM,MAAA,OAAA,GAAU,KAAK,SAAU,CAAA,EAAE,KAAK,GAAK,EAAA,GAAA,EAAK,GAAK,EAAA,CAAA,EAAG,CAAA;AACxD,MAAA,MAAM,MAAM,CAA0C,uCAAA,EAAA,kBAAA,CAAmB,OAAO,CAAC,oBAAoB,cAAc,CAAA,CAAA;AACnH,MAAM,MAAA,IAAA,GAAO,MAAM,KAAA,CAAM,GAAG,CAAA;AAC5B,MAAM,MAAA,IAAA,GAAO,MAAM,IAAA,CAAK,IAAK,EAAA;AAC7B,MAAI,IAAA,IAAA,IAAQ,KAAK,MAAQ,EAAA;AACvB,QAAA,OAAO,IAAK,CAAA,MAAA,CAAO,iBAAqB,IAAA,IAAA,CAAK,OAAO,OAAW,IAAA,EAAA;AAAA;AAEjE,MAAO,OAAA,EAAA;AAAA;AARM,IAAA,MAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA;AAYf,IAAA,IAAI,GAAW,GAAA,IAAA;AACf,IAAA,IAAI,MAAc,GAAA,IAAA;AAClB,IAAA,IAAI,UAAkB,GAAA,IAAA;AAEtB,IAAM,MAAA,aAAA,GAAgB,IAAI,KAAK,CAAA;AAC/B,IAAM,MAAA,OAAA,GAAU,IAAI,EAAE,CAAA;AACtB,IAAM,MAAA,KAAA,GAAQ,GAAS,CAAA,EAAE,CAAA;AAEzB,IAAM,MAAA,MAAA,GAAS,IAA2B,IAAI,CAAA;AAC9C,IAAA,MAAM,MAAS,GAAA,GAAA,CAAsB,CAAC,UAAA,EAAY,QAAQ,CAAC,CAAA;AAC3D,IAAM,MAAA,IAAA,GAAO,IAAI,EAAE,CAAA;AAGnB,IAAA,SAAS,WAAc,GAAA;AACrB,MAAA,IAAI,MAAQ,EAAA;AACV,QAAA,GAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAK,aAAc,CAAA,MAAA,CAAA;AACnB,QAAS,MAAA,GAAA,IAAA;AAAA;AACX;AAJO,IAAA,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;AAOT,IAAe,eAAA,SAAA,CAAU,QAA0B,IAAe,EAAA;AAChE,MAAA,MAAM,IAAI,IAAK,EAAA;AACf,MAAI,IAAA,CAAC,CAAK,IAAA,CAAC,GAAK,EAAA;AAEhB,MAAY,WAAA,EAAA;AAEZ,MAAM,MAAA,IAAA,GAAO,IAAI,CAAA,CAAE,IAAK,CAAA;AAAA,QACtB,OAAS,EAAAC,GAAA;AAAA,QACT,QAAU,EAAA,IAAI,CAAE,CAAA,KAAA,CAAM,IAAI,EAAE,CAAA;AAAA,QAC5B,UAAY,EAAA,IAAI,CAAE,CAAA,KAAA,CAAM,IAAI,EAAE;AAAA,OAC/B,CAAA;AAED,MAAA,MAAA,GAAS,IAAI,CAAA,CAAE,MAAO,CAAA,IAAI,EAAE,MAAO,CAAA,MAAA,CAAO,CAAC,CAAA,EAAG,OAAO,CAAC,CAAC,CAAG,EAAA,EAAE,MAAM,CAAA;AAClE,MAAA,GAAA,CAAI,WAAW,MAAM,CAAA;AAErB,MAAA,IAAI,IAAM,EAAA;AACR,QAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA;AAChB,QAAM,KAAA,CAAA,KAAA,GAAQ,CAAC,MAAO,CAAA,CAAC,GAAG,MAAO,CAAA,CAAC,GAAG,IAAI,CAAA;AACzC,QAAA;AAAA;AAGF,MAAI,IAAA;AACF,QAAM,MAAA,OAAA,GAAU,MAAM,iBAAkB,CAAA,MAAA,CAAO,CAAC,CAAG,EAAA,MAAA,CAAO,CAAC,CAAC,CAAA;AAC5D,QAAA,OAAA,CAAQ,KACN,GAAA,OAAA,IAAW,CAAG,EAAA,MAAA,CAAO,CAAC,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,KAAK,MAAO,CAAA,CAAC,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA;AAC7D,QAAM,KAAA,CAAA,KAAA,GAAQ,CAAC,MAAO,CAAA,CAAC,GAAG,MAAO,CAAA,CAAC,CAAG,EAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,OAC5C,CAAA,MAAA;AACN,QAAA,KAAA,CAAM,KAAQ,GAAA;AAAA,UACZ,OAAO,CAAC,CAAA;AAAA,UACR,OAAO,CAAC,CAAA;AAAA,UACR,CAAG,EAAA,MAAA,CAAO,CAAC,CAAA,CAAE,OAAQ,CAAA,CAAC,CAAC,CAAA,EAAA,EAAK,MAAO,CAAA,CAAC,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,SAClD;AAAA;AACF;AAhCa,IAAA,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;AAoCf,IAAA,eAAe,OAAU,GAAA;;AACvB,MAAA,MAAM,kBAAmB,EAAA;AACzB,MAAA,MAAM,IAAI,IAAK,EAAA;AACf,MAAA,IAAI,CAAC,CAAG,EAAA;AAER,MAAA,MAAM,YAAY,MAAO,CAAA,KAAA;AACzB,MAAA,IAAI,CAAC,SAAW,EAAA;AAEhB,MAAA,IAAI,GAAK,EAAA;AACP,QAAI,IAAA;AACF,UAAA,GAAA,CAAI,OAAQ,EAAA;AAAA,SACN,CAAA,MAAA;AAAA;AAGR,QAAM,GAAA,GAAA,IAAA;AACN,QAAS,MAAA,GAAA,IAAA;AAAA;AAGX,MAAM,MAAA,UAAA,GAAA,CAAA,CAAa,WAAM,KAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAc,OAAM,IAAQ,IAAA,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,KAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAc,CAAM,CAAA,KAAA,IAAA;AACnE,MAAM,MAAA,SAAA,GAAY,UACd,GAAA,IAAI,CAAE,CAAA,MAAA,CAAO,MAAM,KAAM,CAAA,CAAC,CAAG,EAAA,KAAA,CAAM,KAAM,CAAA,CAAC,CAAC,CAC3C,GAAA,IAAI,CAAE,CAAA,MAAA,CAAO,MAAO,CAAA,KAAA,CAAM,CAAC,CAAG,EAAA,MAAA,CAAO,KAAM,CAAA,CAAC,CAAC,CAAA;AACjD,MAAA,MAAM,UAAU,UAAa,GAAA,CAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,UAAR,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,KAAQ,KAAK,IAAK,CAAA,KAAA;AAE9D,MAAM,GAAA,GAAA,IAAI,CAAE,CAAA,GAAA,CAAI,SAAW,EAAA;AAAA,QACzB,MAAQ,EAAA,SAAA;AAAA,QACR,IAAM,EAAA;AAAA,OACP,CAAA;AAED,MAAA,GAAA,CAAI,UAAW,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,MAAM,CAAA;AAGnC,MAAI,GAAA,CAAA,gBAAA,CAAiB,OAAS,EAAA,CAAC,CAAW,KAAA;AACxC,QAAA,MAAM,SAAS,CAAE,CAAA,MAAA;AACjB,QAAA,IAAI,CAAC,MAAQ,EAAA;AACb,QAAA,SAAA,CAAU,CAAC,MAAO,CAAA,MAAA,IAAU,MAAO,CAAA,MAAA,EAAQ,CAAC,CAAA;AAAA,OAC7C,CAAA;AAED,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,MAAM,QAAS,EAAA;AACf,QAAA,SAAA,CAAU,CAAC,KAAA,CAAM,KAAM,CAAA,CAAC,CAAG,EAAA,KAAA,CAAM,KAAM,CAAA,CAAC,CAAC,CAAA,EAAG,KAAM,CAAA,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA;AAC5D;AAzCa,IAAA,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA;AA4Cf,IAAA,SAAS,UAAa,GAAA;AACpB,MAAY,WAAA,EAAA;AACZ,MAAA,IAAI,UAAY,EAAA;AACd,QAAI,IAAA;AACF,UAAA,UAAA,CAAW,eAAgB,EAAA;AAAA,SACrB,CAAA,MAAA;AAAA;AAGR,QAAa,UAAA,GAAA,IAAA;AAAA;AAEf,MAAA,IAAI,GAAK,EAAA;AACP,QAAI,IAAA;AACF,UAAA,GAAA,CAAI,OAAQ,EAAA;AAAA,SACN,CAAA,MAAA;AAAA;AAGR,QAAM,GAAA,GAAA,IAAA;AAAA;AACR;AAjBO,IAAA,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAqBT,IAAA,MAAM,mCAA+B,MAAA,CAAA,YAAA;AACnC,MAAA,IAAI,SAAS,KAAO,EAAA;AACpB,MAAA,aAAA,CAAc,KAAQ,GAAA,IAAA;AACtB,MAAA,MAAM,QAAS,EAAA;AACf,MAAA,KAAA,CAAM,QAAQ,IAAK,CAAA,KAAA,CAAM,KAAK,SAAU,CAAA,UAAA,CAAW,KAAK,CAAC,CAAA;AACzD,MAAW,UAAA,CAAA,MAAM,OAAQ,EAAA,EAAG,GAAG,CAAA;AAAA,KALR,EAAA,kBAAA,CAAA;AASzB,IAAM,MAAA,WAAA,mBAAqB,MAAA,CAAA,OAAA,WAAA,EAAqB,EAAY,KAAA;AAC1D,MAAA,IAAI,CAAC,WAAA,EAAoB,OAAA,EAAA,CAAG,EAAE,CAAA;AAC9B,MAAI,IAAA;AACF,QAAM,MAAA,OAAA,GAAU,MAAM,SAAA,CAAU,WAAW,CAAA;AAC3C,QAAA,EAAA,CAAG,OAAO,CAAA;AAAA,OACJ,CAAA,MAAA;AACN,QAAA,SAAA,CAAU,MAAM,8DAAY,CAAA;AAC5B,QAAA,EAAA,CAAG,EAAE,CAAA;AAAA;AACP,KARkB,EAAA,aAAA,CAAA;AAWpB,IAAA,MAAM,8BAAoB,MAAA,CAAA,MAAA;AACxB,MAAA,KAAA,CAAM,QAAQ,EAAC;AACf,MAAY,WAAA,EAAA;AAAA,KAFM,EAAA,aAAA,CAAA;AAMpB,IAAM,MAAA,YAAA,iCAAsB,IAAc,KAAA;;AACxC,MAAA,OAAA,CAAQ,QAAQ,IAAK,CAAA,IAAA;AAErB,MAAA,IAAI,IAAK,CAAA,QAAA,IAAY,CAAC,KAAA,CAAM,IAAK,CAAA,QAAA,CAAS,GAAG,CAAA,IAAK,CAAC,KAAA,CAAM,IAAK,CAAA,QAAA,CAAS,GAAG,CAAG,EAAA;AAC3E,QAAU,SAAA,CAAA,CAAC,KAAK,QAAS,CAAA,GAAA,EAAK,KAAK,QAAS,CAAA,GAAG,CAAG,EAAA,IAAA,CAAK,IAAI,CAAA;AAC3D,QAAK,GAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,SAAA,CAAU,IAAK,CAAA,IAAA,EAAO,EAAA,MAAA,CAAQ,KAAK,QAAS,CAAA,GAAA,EAAK,IAAK,CAAA,QAAA,CAAS,GAAG,CAAA,CAAA;AAAA,OAC9D,MAAA,IAAA,CAAA,EAAA,GAAA,IAAA,CAAK,IAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAW,MAAQ,EAAA;AAC5B,QAAM,MAAA,CAAC,GAAK,EAAA,GAAG,CAAI,GAAA,IAAA,CAAK,IAAK,CAAA,MAAA,CAAO,KAAM,CAAA,GAAG,CAAE,CAAA,GAAA,CAAI,MAAM,CAAA;AACzD,QAAA,IAAI,CAAC,KAAM,CAAA,GAAG,KAAK,CAAC,KAAA,CAAM,GAAG,CAAG,EAAA;AAC9B,UAAA,SAAA,CAAU,CAAC,GAAA,EAAK,GAAG,CAAA,EAAG,KAAK,IAAI,CAAA;AAC/B,UAAA,GAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAK,UAAU,IAAK,CAAA,IAAA,EAAO,EAAA,MAAA,CAAQ,KAAK,GAAG,CAAA,CAAA;AAAA;AAC7C,OACK,MAAA;AACL,QAAI,IAAA;AACF,UAAA,MAAM,OAAU,GAAA,MAAM,SAAU,CAAA,IAAA,CAAK,IAAI,CAAA;AACzC,UAAI,IAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;AACtB,YAAM,MAAA,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACvB,YAAA,IACE,KAAM,CAAA,QAAA,IACN,CAAC,KAAA,CAAM,KAAM,CAAA,QAAA,CAAS,GAAG,CAAA,IACzB,CAAC,KAAA,CAAM,KAAM,CAAA,QAAA,CAAS,GAAG,CACzB,EAAA;AACA,cAAU,SAAA,CAAA,CAAC,MAAM,QAAS,CAAA,GAAA,EAAK,MAAM,QAAS,CAAA,GAAG,CAAG,EAAA,KAAA,CAAM,IAAI,CAAA;AAC9D,cAAK,GAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,SAAA;AAAA,gBACH,IAAA,CAAK,MAAO,EAAA,MAAA,CAAQ,MAAM,QAAS,CAAA,GAAA,EAAK,KAAM,CAAA,QAAA,CAAS,GAAG;AAAA,eAAA;AAE5D,cAAA,eAAA,CAAgB,OAAO,CAAA;AAAA;AACzB;AACF,SACM,CAAA,MAAA;AACN,UAAA,SAAA,CAAU,QAAQ,kDAAU,CAAA;AAAA;AAE9B,QAAA;AAAA;AAGF,MAAI,IAAA;AACF,QAAA,MAAM,OAAU,GAAA,MAAM,SAAU,CAAA,IAAA,CAAK,IAAI,CAAA;AACzC,QAAA,IAAI,OAAQ,CAAA,MAAA,GAAS,CAAG,EAAA,eAAA,CAAgB,OAAO,CAAA;AAAA,OACzC,CAAA,MAAA;AAAA;AAER,KAxCmB,EAAA,cAAA,CAAA;AA2CrB,IAAA,SAAS,gBAAgB,OAAgB,EAAA;AACvC,MAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,aAAA,CAAc,uBAAuB,CAAA;AAC5D,MAAA,IAAI,CAAC,KAAO,EAAA;AACZ,MAAM,KAAA,CAAA,YAAA,CAAa,SAAS,eAAe,CAAA;AAC3C,MAAA,KAAA,CAAM,YAAY,OACf,CAAA,GAAA;AAAA,QACC,CAAC,CAAA,EAAG,CACF,KAAA,CAAA,yCAAA,EAA4C,CAAC,CAAA;AAAA,wCAAA,EACX,EAAE,IAAI,CAAA;AAAA,kDACI,EAAA,CAAA,CAAE,YAAY,EAAE,CAAA;AAAA,cAAA;AAAA,OAEhE,CACC,KAAK,EAAE,CAAA;AAEV,MAAA,KAAA,CAAM,gBAAiB,CAAA,kBAAkB,CAAE,CAAA,OAAA,CAAQ,CAAC,EAAO,KAAA;AACzD,QAAG,EAAA,CAAA,gBAAA,CAAiB,SAAS,MAAM;AACjC,UAAA,MAAM,GAAM,GAAA,MAAA,CAAQ,EAAmB,CAAA,OAAA,CAAQ,KAAK,CAAA;AACpD,UAAM,MAAA,IAAA,GAAO,QAAQ,GAAG,CAAA;AACxB,UAAA,IAAI,6BAAM,QAAU,EAAA;AAClB,YAAY,WAAA,EAAA;AACZ,YAAU,SAAA,CAAA,CAAC,KAAK,QAAS,CAAA,GAAA,EAAK,KAAK,QAAS,CAAA,GAAG,CAAG,EAAA,IAAA,CAAK,IAAI,CAAA;AAC3D,YAAK,GAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,SAAA;AAAA,cACH,IAAA,CAAK,MAAO,EAAA,MAAA,CAAQ,KAAK,QAAS,CAAA,GAAA,EAAK,IAAK,CAAA,QAAA,CAAS,GAAG;AAAA,aAAA;AAAA;AAE5D,SACD,CAAA;AAAA,OACF,CAAA;AAAA;AA1BM,IAAA,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA;AA8BT,IAAA,MAAM,gCAAsB,MAAA,CAAA,MAAA;AAC1B,MAAM,KAAA,CAAA,mBAAA,EAAqB,MAAM,KAAK,CAAA;AACtC,MAAM,KAAA,CAAA,QAAA,EAAU,MAAM,KAAK,CAAA;AAC3B,MAAM,KAAA,CAAA,oBAAA,EAAsB,CAAC,KAAA,CAAM,KAAM,CAAA,CAAC,GAAG,KAAM,CAAA,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AAC5D,MAAA,KAAA,CAAM,gBAAkB,EAAA,KAAA,CAAM,KAAM,CAAA,CAAC,CAAC,CAAA;AACtC,MAAA,aAAA,CAAc,KAAQ,GAAA,KAAA;AACtB,MAAW,UAAA,CAAA,MAAM,UAAW,EAAA,EAAG,GAAG,CAAA;AAAA,KANd,EAAA,eAAA,CAAA;AAStB,IAAA,MAAM,6BAAmB,MAAA,CAAA,MAAA;AACvB,MAAM,KAAA,CAAA,mBAAA,EAAqB,EAAE,CAAA;AAC7B,MAAM,KAAA,CAAA,QAAA,EAAU,EAAE,CAAA;AAAA,KAFD,EAAA,YAAA,CAAA;AAMnB,IAAS,SAAA,eAAA,CAAgB,GAAY,EAAA,KAAA,GAAQ,CAAG,EAAA;;AAC9C,MAAA,MAAM,IAAI,IAAK,EAAA;AACf,MAAI,IAAA,CAAC,GAAO,IAAA,CAAC,CAAG,EAAA;AACd,QAAA,IAAI,QAAQ,EAAI,EAAA;AACd,UAAA,UAAA,CAAW,MAAM,eAAgB,CAAA,GAAA,EAAK,KAAQ,GAAA,CAAC,GAAG,GAAG,CAAA;AAAA;AAEvD,QAAA;AAAA;AAEF,MAAU,SAAA,CAAA,CAAC,GAAI,CAAA,CAAC,CAAG,EAAA,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,GAAI,CAAA,CAAC,CAAC,CAAA;AAClC,MAAA,GAAA,CAAI,KAAM,CAAA,IAAI,CAAE,CAAA,MAAA,CAAO,IAAI,CAAC,CAAA,EAAG,GAAI,CAAA,CAAC,CAAC,CAAG,EAAA,CAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,KAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,SAAQ,EAAE,CAAA;AAAA;AAT1D,IAAA,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA;AAaT,IAAA,SAAA,CAAU,MAAM;AACd,MAAI,IAAA,KAAA,CAAM,SAAS,MAAQ,EAAA;AACzB,QAAA,QAAA,CAAS,YAAY;AACnB,UAAA,KAAA,CAAM,QAAQ,IAAK,CAAA,KAAA,CAAM,KAAK,SAAU,CAAA,UAAA,CAAW,KAAK,CAAC,CAAA;AACzD,UAAA,MAAM,IAAI,OAAQ,CAAA,CAAC,CAAM,KAAA,qBAAA,CAAsB,CAAC,CAAC,CAAA;AACjD,UAAI,IAAA;AACF,YAAA,MAAM,OAAQ,EAAA;AAAA,mBACP,CAAG,EAAA;AACV,YAAQ,OAAA,CAAA,KAAA,CAAM,4BAA4B,CAAC,CAAA;AAAA;AAC7C,SACD,CAAA;AAAA;AACH,KACD,CAAA;AAED,IAAA,WAAA,CAAY,MAAM;AAChB,MAAW,UAAA,EAAA;AAAA,KACZ,CAAA;AAGD,IAAA,KAAA;AAAA,MACE,MAAM,KAAM,CAAA,UAAA;AAAA,MACZ,CAAC,GAAQ,KAAA;AACP,QAAI,IAAA,CAAC,OAAO,GAAI,CAAA,CAAC,KAAK,IAAQ,IAAA,GAAA,CAAI,CAAC,CAAA,IAAK,IAAM,EAAA;AAC9C,QAAA,KAAA,CAAM,QAAQ,IAAK,CAAA,KAAA,CAAM,IAAK,CAAA,SAAA,CAAU,GAAG,CAAC,CAAA;AAC5C,QAAA,eAAA,CAAgB,GAAG,CAAA;AAAA,OACrB;AAAA,MACA,EAAE,MAAM,IAAK;AAAA,KACf;AAEA,IAAa,QAAA,CAAA;AAAA,MACX;AAAA,KACD,CAAA;;;;;;;;;;;UAICC,mBAA2B,oDAAA,CAAA;AAAA,UAChBC,KAAI,IAAA,KAAA,OAAA,IAAfC,WAAA,EAAAC,kBAAA,CAuCM,OAvCN,UAuCM,EAAA;AAAA,YAtCJC,YAqCY,oBAAA,EAAA;AAAA,0BApCD,aAAa,CAAA,KAAA;AAAA,sEAAb,KAAA,aAAA,CAAa,KAAA,GAAA,MAAA,CAAA;AAAA,cACtB,KAAM,EAAA,gCAAA;AAAA,cACL,YAAY,EAAA,IAAA;AAAA,cACb,IAAK,EAAA,MAAA;AAAA,cACJ,QAAQ,EAAA;AAAA;cA2BE,MAAA,UACT,MAEY;AAAA,gBAFZA,YAEY,oBAAA,EAAA;AAAA,kBAFD,IAAK,EAAA,SAAA;AAAA,kBAAW,QAAA,EAAUC,MAAQ,QAAA,CAAA;AAAA,kBAAG,OAAO,EAAA;AAAA;mCAAe,MAEtE,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA;AAAA;sBAFsE,gBAAA;AAAA,sBAEtE,CAAA;AAAA;AAAA;AAAA;;;;;+BA5BF,MAwBM;AAAA,gBAxBK,cAAa,KAAxB,IAAAH,SAAA,EAAA,EAAAC,kBAAA,CAwBM,OAxBN,UAwBM,EAAA;AAAA,kBAvBJC,YAkBkB,0BAAA,EAAA;AAAA,gCAjBP,OAAO,CAAA,KAAA;AAAA,4EAAP,KAAA,OAAA,CAAO,KAAA,GAAA,MAAA,CAAA;AAAA,oBACf,QAAA,EAAUC,MAAQ,QAAA,CAAA;AAAA,oBACnB,WAAY,EAAA,8DAAA;AAAA,oBACZ,KAAM,EAAA,eAAA;AAAA,oBACL,QAAU,EAAA,GAAA;AAAA,oBACX,KAAA,EAAA,EAAwC,eAAA,EAAA,MAAA,EAAA,SAAA,MAAA,EAAA;AAAA,oBACxC,SAAA,EAAA,EAAA;AAAA,oBACC,mBAAmB,EAAA,WAAA;AAAA,oBACnB,gBAAgB,EAAA,KAAA;AAAA,oBAChB,OAAO,EAAA,WAAA;AAAA,oBACP,QAAQ,EAAA,YAAA;AAAA,oBACR,SAAK,MAAA,CAAA,CAAA,MAAA,MAAA,CAAA,CAAA,IAAAC,QAAA,CAAA,CAAA,WAAQ,YAAY,CAAA,EAAA,MAAS,OAAO,CAAA,KAAA,EAAA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA;AAAA;oBAE/B,OAAO,EAAAC,OAAA,CAChB,CAAe,EADK,MAAI,KAAA;AAAA;wCACrB,IAAK,CAAA,IAAI,CAAG,GAAA,GAAA;AAAA,wBACf;AAAA;AAAA,uBAAA;AAAA,sBAAAC,kBAAA;AAAA,wBAAwD,MAAA;AAAA,wBAAxD,UAAA;AAAA,wBAAiCC,eAAA,CAAA,KAAK,QAAQ,CAAA;AAAA,wBAAA;AAAA;AAAA;AAAA;;;;kBAGlDD,kBAAA,CAGM,OAHN,UAGM,EAAA;AAAA,oBAFJA,kBAAA;AAAA,sBAAuC,KAAA;AAAA,sBAAA;AAAA,+BAA9B,EAAA,QAAA;AAAA,wBAAJ,GAAI,EAAA,MAAA;AAAA,wBAAS,KAAM,EAAA;AAAA;;;;;2CACxB,GAAAA,kBAAA;AAAA,sBAAoC,KAAA;AAAA,sBAAA,EAA/B,OAAM,sBAAsB,EAAA;AAAA,sBAAA,IAAA;AAAA,sBAAA,CAAA;AAAA;AAAA,qBAAA;AAAA;;;;;;YAa5BP,IAAAA,IAAAA,CAAI,IAAA,KAAA,MAAA,eADjB,EAAAE,kBAAA;AAAA,YAMMO,QAAA;AAAA,YAAA,EAAA,KAAA,CAAA,EAAA;AAAA,YAAA;AAAA,cAPNV,mBAAyB,6CAAA,CAAA;AAAA,cACzBQ,kBAAA,CAMM,OANN,UAMM,EAAA;AAAA,gBAFJA,kBAAA;AAAA,kBAAwD,KAAA;AAAA,kBAAA;AAAA,2BAA/C,EAAA,QAAA;AAAA,oBAAJ,GAAI,EAAA,MAAA;AAAA,oBAAS,KAAM,EAAA;AAAA;;;;;uCACxB,GAAAA,kBAAA;AAAA,kBAAoC,KAAA;AAAA,kBAAA,EAA/B,OAAM,sBAAsB,EAAA;AAAA,kBAAA,IAAA;AAAA,kBAAA,CAAA;AAAA;AAAA,iBAAA;AAAA;;;;2BAInC,EAAAL,kBAAA;AAAA,YA2DMO,QAAA;AAAA,YAAA,EAAA,KAAA,CAAA,EAAA;AAAA,YAAA;AAAA,cA5DNV,mBAAgC,mEAAA,CAAA;AAAA,cAChCQ,kBAAA,CA2DM,OA3DN,UA2DM,EAAA;AAAA,gBA1DJJ,YAkBW,mBAAA,EAAA;AAAA,4BAjBA,EAAAC,KAAA,CAAU,UAAA,CAAA,CAAA,CAAA,CAAA;AAAA,0EAAV,KAAAA,KAAA,CAAU,UAAA,CAAA,CAAA,CAAA,CAAA,GAAA,MAAA,CAAA;AAAA,kBACnB,KAAM,EAAA,cAAA;AAAA,kBACL,aAAaM,IAAW,CAAA,WAAA;AAAA,kBACzB,QAAA,EAAA,EAAA;AAAA,kBACC,MAAMC,IAAI,CAAA,IAAA;AAAA,kBACV,QAAA,EAAUP,MAAQ,QAAA,CAAA;AAAA,kBAClB,OAAO,EAAA;AAAA;;;;mBAESA,KAAQ,CAAA,QAAA;wBAAG,EAAA,QAAA;AAAA,gCAC1B,MAMU;AAAA,sBALFA,KAAA,CAAU,UAAA,CAAA,CAAA,CAAA,kBADlBQ,YAMU,kBAAA,EAAA;AAAA;wBAJR,KAAM,EAAA,oBAAA;AAAA,wBACL,uBAAY,UAAU,EAAA,CAAA,MAAA,CAAA;AAAA;yCAEvB,MAAe;AAAA,0BAAfT,WAAA,CAAeC,KAAA,CAAAS,oBAAA,CAAA;AAAA;;;;;;;;gBAKrBV,YAqCY,oBAAA,EAAA;AAAA,8BApCD,aAAa,CAAA,KAAA;AAAA,0EAAb,KAAA,aAAA,CAAa,KAAA,GAAA,MAAA,CAAA;AAAA,kBACtB,KAAM,EAAA,gCAAA;AAAA,kBACL,YAAY,EAAA,IAAA;AAAA,kBACb,IAAK,EAAA,MAAA;AAAA,kBACJ,QAAQ,EAAA;AAAA;kBA2BE,MAAA,UACT,MAEY;AAAA,oBAFZA,YAEY,oBAAA,EAAA;AAAA,sBAFD,IAAK,EAAA,SAAA;AAAA,sBAAW,QAAA,EAAUC,MAAQ,QAAA,CAAA;AAAA,sBAAG,OAAO,EAAA;AAAA;uCAAe,MAEtE,MAAA,CAAA,EAAA,CAAA,KAAA,MAAA,CAAA,EAAA,CAAA,GAAA;AAAA;0BAFsE,gBAAA;AAAA,0BAEtE,CAAA;AAAA;AAAA;AAAA;;;;;mCA5BF,MAwBM;AAAA,oBAxBK,cAAa,KAAxB,IAAAH,SAAA,EAAA,EAAAC,kBAAA,CAwBM,OAxBN,UAwBM,EAAA;AAAA,sBAvBJC,YAkBkB,0BAAA,EAAA;AAAA,oCAjBP,OAAO,CAAA,KAAA;AAAA,gFAAP,KAAA,OAAA,CAAO,KAAA,GAAA,MAAA,CAAA;AAAA,wBACf,QAAA,EAAUC,MAAQ,QAAA,CAAA;AAAA,wBACnB,WAAY,EAAA,8DAAA;AAAA,wBACZ,KAAM,EAAA,eAAA;AAAA,wBACL,QAAU,EAAA,GAAA;AAAA,wBACX,KAAA,EAAA,EAAwC,eAAA,EAAA,MAAA,EAAA,SAAA,MAAA,EAAA;AAAA,wBACxC,SAAA,EAAA,EAAA;AAAA,wBACC,mBAAmB,EAAA,WAAA;AAAA,wBACnB,gBAAgB,EAAA,KAAA;AAAA,wBAChB,OAAO,EAAA,WAAA;AAAA,wBACP,QAAQ,EAAA,YAAA;AAAA,wBACR,SAAK,MAAA,CAAA,CAAA,MAAA,MAAA,CAAA,CAAA,IAAAC,QAAA,CAAA,CAAA,WAAQ,YAAY,CAAA,EAAA,MAAS,OAAO,CAAA,KAAA,EAAA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA;AAAA;wBAE/B,OAAO,EAAAC,OAAA,CAChB,CAAe,EADK,MAAI,KAAA;AAAA;4CACrB,IAAK,CAAA,IAAI,CAAG,GAAA,GAAA;AAAA,4BACf;AAAA;AAAA,2BAAA;AAAA,0BAAAC,kBAAA;AAAA,4BAAwD,MAAA;AAAA,4BAAxD,UAAA;AAAA,4BAAiCC,eAAA,CAAA,KAAK,QAAQ,CAAA;AAAA,4BAAA;AAAA;AAAA;AAAA;;;;sBAGlDD,kBAAA,CAGM,OAHN,UAGM,EAAA;AAAA,wBAFJA,kBAAA;AAAA,0BAAuC,KAAA;AAAA,0BAAA;AAAA,mCAA9B,EAAA,QAAA;AAAA,4BAAJ,GAAI,EAAA,MAAA;AAAA,4BAAS,KAAM,EAAA;AAAA;;;;;iDACxB,GAAAA,kBAAA;AAAA,0BAAoC,KAAA;AAAA,0BAAA,EAA/B,OAAM,sBAAsB,EAAA;AAAA,0BAAA,IAAA;AAAA,0BAAA,CAAA;AAAA;AAAA,yBAAA;AAAA;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"map.vue2.mjs","sources":["../../../../../../../packages/components/map/src/map.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { CircleClose } from \"@element-plus/icons-vue\";\nimport { ElMessage } from \"element-plus\";\nimport { nextTick, onMounted, onUnmounted, ref, toRefs, watch } from \"vue\";\nimport { MapProps, TiandituGlobal } from \"./map\";\nimport markerIcon from \"./marker.png\";\n\ndefineOptions({\n name: \"IMap\",\n});\n\n// ==================== Props & Emits ====================\nconst props = defineProps(MapProps);\n\nconst emits = defineEmits([\n \"update:modelValue\",\n \"change\",\n \"update:addressCode\",\n \"update:address\",\n]);\n\nconst { modelValue, disabled, options } = toRefs(props);\n\n// ==================== 天地图 Token ====================\nconst TIANDITU_TOKEN = \"ab0296cad21f656152228912c15abdfb\";\n\n// ==================== 模块级:加载天地图 JS API ====================\nconst _win = window as unknown as TiandituGlobal;\n\nfunction loadTiandituScript(): Promise<void> {\n if (_win.__tdt_loaded) return Promise.resolve();\n if (_win.__tdt_loading) return _win.__tdt_loading;\n\n _win.__tdt_loading = new Promise<void>((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = `//api.tianditu.gov.cn/api?v=4.0&tk=${TIANDITU_TOKEN}`;\n script.onload = () => {\n _win.__tdt_loaded = true;\n _win.__tdt_loading = null;\n resolve();\n };\n script.onerror = () => {\n _win.__tdt_loading = null;\n reject(new Error(\"天地图 API 加载失败\"));\n };\n document.head.appendChild(script);\n });\n return _win.__tdt_loading;\n}\n\nfunction getT(): any {\n return _win.T;\n}\n\n// ==================== 天地图 REST API 封装 ====================\nasync function tdtSearch(keyword: string): Promise<any[]> {\n const postStr = JSON.stringify({\n keyWord: keyword,\n level: 12,\n queryType: 1,\n start: 0,\n count: 20,\n });\n const url = `//api.tianditu.gov.cn/search?postStr=${encodeURIComponent(postStr)}&type=query&tk=${TIANDITU_TOKEN}`;\n const resp = await fetch(url);\n const data = await resp.json();\n if (data && data.pois) {\n return data.pois.map((poi: any) => ({\n name: poi.name,\n district: poi.address || \"\",\n location: poi.lonlat\n ? {\n lng: Number(poi.lonlat.split(\" \")[0]),\n lat: Number(poi.lonlat.split(\" \")[1]),\n }\n : null,\n adcode: poi.admincode || \"\",\n _raw: poi,\n }));\n }\n return [];\n}\n\nasync function tdtReverseGeocode(lng: number, lat: number): Promise<string> {\n const postStr = JSON.stringify({ lon: lng, lat, ver: 1 });\n const url = `//api.tianditu.gov.cn/geocoder?postStr=${encodeURIComponent(postStr)}&type=geocode&tk=${TIANDITU_TOKEN}`;\n const resp = await fetch(url);\n const data = await resp.json();\n if (data && data.result) {\n return data.result.formatted_address || data.result.address || \"\";\n }\n return \"\";\n}\n\n// ==================== 响应式状态 ====================\nlet map: any = null;\nlet marker: any = null;\nlet infoWindow: any = null;\n\nconst dialogVisible = ref(false);\nconst keyword = ref(\"\");\nconst model = ref<any>([]);\n\nconst refMap = ref<HTMLDivElement | null>(null);\nconst center = ref<[number, number]>([116.397428, 39.90923]);\nconst zoom = ref(10);\n\n// ==================== 标记管理 ====================\nfunction clearMarker() {\n if (marker) {\n map?.removeOverLay(marker);\n marker = null;\n }\n}\n\nasync function addMarker(lnglat: [number, number], name?: string) {\n const T = getT();\n if (!T || !map) return;\n\n clearMarker();\n\n const icon = new T.Icon({\n iconUrl: markerIcon,\n iconSize: new T.Point(19, 33),\n iconAnchor: new T.Point(10, 33),\n });\n\n marker = new T.Marker(new T.LngLat(lnglat[0], lnglat[1]), { icon });\n map.addOverLay(marker);\n\n if (name) {\n keyword.value = name;\n model.value = [lnglat[0], lnglat[1], name];\n return;\n }\n\n try {\n const address = await tdtReverseGeocode(lnglat[0], lnglat[1]);\n keyword.value =\n address || `${lnglat[0].toFixed(6)}, ${lnglat[1].toFixed(6)}`;\n model.value = [lnglat[0], lnglat[1], keyword.value];\n } catch {\n model.value = [\n lnglat[0],\n lnglat[1],\n `${lnglat[0].toFixed(6)}, ${lnglat[1].toFixed(6)}`,\n ];\n }\n}\n\n// ==================== 地图初始化 ====================\nasync function initMap() {\n await loadTiandituScript();\n const T = getT();\n if (!T) return;\n\n const container = refMap.value;\n if (!container) return;\n\n if (map) {\n try {\n map.destroy();\n } catch {\n /* ignore */\n }\n map = null;\n marker = null;\n }\n\n const hasInitPos = model.value?.[0] != null && model.value?.[1] != null;\n const mapCenter = hasInitPos\n ? new T.LngLat(model.value[0], model.value[1])\n : new T.LngLat(center.value[0], center.value[1]);\n const mapZoom = hasInitPos ? options.value?.zoom || 15 : zoom.value;\n\n map = new T.Map(container, {\n center: mapCenter,\n zoom: mapZoom,\n });\n\n map.addControl(new T.Control.Zoom());\n\n // 地图点击 → 选点\n map.addEventListener(\"click\", (e: any) => {\n const lnglat = e.lnglat;\n if (!lnglat) return;\n addMarker([lnglat.getLng(), lnglat.getLat()]);\n });\n\n if (hasInitPos) {\n await nextTick();\n addMarker([model.value[0], model.value[1]], model.value[2]);\n }\n}\n\nfunction destroyMap() {\n clearMarker();\n if (infoWindow) {\n try {\n infoWindow.closeInfoWindow();\n } catch {\n /* ignore */\n }\n infoWindow = null;\n }\n if (map) {\n try {\n map.destroy();\n } catch {\n /* ignore */\n }\n map = null;\n }\n}\n\n// ==================== 打开选择器 ====================\nconst handleOpenDialog = async () => {\n if (disabled.value) return;\n dialogVisible.value = true;\n await nextTick();\n model.value = JSON.parse(JSON.stringify(modelValue.value));\n setTimeout(() => initMap(), 200);\n};\n\n// ==================== 自动补全搜索 ====================\nconst querySearch = async (queryString: string, cb: any) => {\n if (!queryString) return cb([]);\n try {\n const results = await tdtSearch(queryString);\n cb(results);\n } catch {\n ElMessage.error(\"搜索失败,请稍后重试\");\n cb([]);\n }\n};\n\nconst inputChange = () => {\n model.value = [];\n clearMarker();\n};\n\n// ==================== 选中搜索结果 ====================\nconst handleSelect = async (item: any) => {\n keyword.value = item.name;\n\n if (item.location && !isNaN(item.location.lng) && !isNaN(item.location.lat)) {\n addMarker([item.location.lng, item.location.lat], item.name);\n map?.setCenter(new (getT().LngLat)(item.location.lng, item.location.lat));\n } else if (item._raw?.lonlat) {\n const [lng, lat] = item._raw.lonlat.split(\" \").map(Number);\n if (!isNaN(lng) && !isNaN(lat)) {\n addMarker([lng, lat], item.name);\n map?.setCenter(new (getT().LngLat)(lng, lat));\n }\n } else {\n try {\n const results = await tdtSearch(item.name);\n if (results.length > 0) {\n const first = results[0];\n if (\n first.location &&\n !isNaN(first.location.lng) &&\n !isNaN(first.location.lat)\n ) {\n addMarker([first.location.lng, first.location.lat], first.name);\n map?.setCenter(\n new (getT().LngLat)(first.location.lng, first.location.lat),\n );\n showSearchPanel(results);\n }\n }\n } catch {\n ElMessage.warning(\"未找到匹配的地点\");\n }\n return;\n }\n\n try {\n const results = await tdtSearch(item.name);\n if (results.length > 0) showSearchPanel(results);\n } catch {\n /* ignore */\n }\n};\n\nfunction showSearchPanel(results: any[]) {\n const panel = document.querySelector(\".i-map__search-result\");\n if (!panel) return;\n panel.setAttribute(\"style\", \"display:block\");\n panel.innerHTML = results\n .map(\n (r, i) =>\n `<div class=\"tdt-search-item\" data-index=\"${i}\" style=\"padding:6px 8px;cursor:pointer;border-bottom:1px solid #eee;font-size:13px;\">\n <div style=\"font-weight:500;\">${r.name}</div>\n <div style=\"color:#999;font-size:12px;\">${r.district || \"\"}</div>\n </div>`,\n )\n .join(\"\");\n\n panel.querySelectorAll(\".tdt-search-item\").forEach((el) => {\n el.addEventListener(\"click\", () => {\n const idx = Number((el as HTMLElement).dataset.index);\n const item = results[idx];\n if (item?.location) {\n clearMarker();\n addMarker([item.location.lng, item.location.lat], item.name);\n map?.setCenter(\n new (getT().LngLat)(item.location.lng, item.location.lat),\n );\n }\n });\n });\n}\n\n// ==================== 确认 / 清除 ====================\nconst handleConfirm = () => {\n emits(\"update:modelValue\", model.value);\n emits(\"change\", model.value);\n emits(\"update:addressCode\", [model.value[0], model.value[1]]);\n emits(\"update:address\", model.value[2]);\n dialogVisible.value = false;\n setTimeout(() => destroyMap(), 300);\n};\n\nconst clearValue = () => {\n emits(\"update:modelValue\", []);\n emits(\"change\", []);\n};\n\n// ==================== 地图中心更新 ====================\nfunction updateMapCenter(val: any[], retry = 0) {\n const T = getT();\n if (!map || !T) {\n if (retry < 10) {\n setTimeout(() => updateMapCenter(val, retry + 1), 300);\n }\n return;\n }\n addMarker([val[0], val[1]], val[2]);\n map.panTo(new T.LngLat(val[0], val[1]), options.value?.zoom || 12);\n}\n\n// ==================== View 模式:挂载时初始化 ====================\nonMounted(() => {\n if (props.type === \"view\") {\n nextTick(async () => {\n model.value = JSON.parse(JSON.stringify(modelValue.value));\n await new Promise((r) => requestAnimationFrame(r));\n try {\n await initMap();\n } catch (e) {\n console.error(\"[ViewMap] initMap error:\", e);\n }\n });\n }\n});\n\nonUnmounted(() => {\n destroyMap();\n});\n\n// ==================== 监听 modelValue 外部变化 ====================\nwatch(\n () => props.modelValue,\n (val) => {\n if (!val || val[0] == null || val[1] == null) return;\n model.value = JSON.parse(JSON.stringify(val));\n updateMapCenter(val);\n },\n { deep: true },\n);\n\ndefineExpose({\n handleOpenDialog,\n});\n</script>\n\n<template>\n <!-- type=\"edit2\":纯抽屉模式 -->\n <div v-if=\"type === 'edit2'\" class=\"i-map\">\n <el-drawer\n v-model=\"dialogVisible\"\n title=\"请选择地点\"\n :show-close=\"true\"\n size=\"100%\"\n @closed=\"destroyMap\"\n >\n <div v-if=\"dialogVisible\" class=\"h-full overflow-hidden i-map__container\">\n <el-autocomplete\n v-model=\"keyword\"\n :disabled=\"disabled\"\n placeholder=\"请输入关键字选择地点\"\n class=\"i-map__search\"\n :debounce=\"700\"\n style=\"margin-bottom: 15px; width: 100%\"\n clearable\n :fetch-suggestions=\"querySearch\"\n :validate-event=\"false\"\n @input=\"inputChange\"\n @select=\"handleSelect\"\n @keyup.enter=\"handleSelect({ name: keyword })\"\n >\n <template #default=\"{ item }\">\n {{ item.name }}\n <span class=\"i-map__district\">{{ item.district }}</span>\n </template>\n </el-autocomplete>\n <div class=\"i-map__container-inner\">\n <div ref=\"refMap\" class=\"i-map__tdt\" />\n <div class=\"i-map__search-result\" />\n </div>\n </div>\n <template #footer>\n <el-button type=\"primary\" :disabled=\"disabled\" @click=\"handleConfirm\">\n 确定\n </el-button>\n </template>\n </el-drawer>\n </div>\n\n <!-- type=\"view\":只读地图 -->\n <div\n v-else-if=\"type === 'view'\"\n class=\"i-map w-full h-full i-map__container-inner\"\n >\n <div ref=\"refMap\" class=\"i-map__tdt i-map__tdt--view\" />\n <div class=\"i-map__search-result\" />\n </div>\n\n <!-- 默认 type=\"edit\":输入框 + 抽屉 -->\n <div v-else class=\"i-map\">\n <el-input\n v-model=\"modelValue[2]\"\n class=\"i-map__input\"\n :placeholder=\"placeholder\"\n readonly\n :size=\"size\"\n :disabled=\"disabled\"\n @click=\"handleOpenDialog\"\n >\n <template v-if=\"!disabled\" #suffix>\n <el-icon\n v-if=\"modelValue[2]\"\n class=\"i-map__input-close\"\n @click.stop=\"clearValue\"\n >\n <CircleClose />\n </el-icon>\n </template>\n </el-input>\n\n <el-drawer\n v-model=\"dialogVisible\"\n title=\"请选择地点\"\n :show-close=\"true\"\n size=\"100%\"\n @closed=\"destroyMap\"\n >\n <div v-if=\"dialogVisible\" class=\"h-full overflow-hidden i-map__container\">\n <el-autocomplete\n v-model=\"keyword\"\n :disabled=\"disabled\"\n placeholder=\"请输入关键字选择地点\"\n class=\"i-map__search\"\n :debounce=\"700\"\n style=\"margin-bottom: 15px; width: 100%\"\n clearable\n :fetch-suggestions=\"querySearch\"\n :validate-event=\"false\"\n @input=\"inputChange\"\n @select=\"handleSelect\"\n @keyup.enter=\"handleSelect({ name: keyword })\"\n >\n <template #default=\"{ item }\">\n {{ item.name }}\n <span class=\"i-map__district\">{{ item.district }}</span>\n </template>\n </el-autocomplete>\n <div class=\"i-map__container-inner\">\n <div ref=\"refMap\" class=\"i-map__tdt\" />\n <div class=\"i-map__search-result\" />\n </div>\n </div>\n <template #footer>\n <el-button type=\"primary\" :disabled=\"disabled\" @click=\"handleConfirm\">\n 确定\n </el-button>\n </template>\n </el-drawer>\n </div>\n</template>\n"],"names":["keyword","markerIcon","_createCommentVNode","type","_openBlock","_createElementBlock","_createVNode","_unref","_withKeys","_withCtx","_createElementVNode","_toDisplayString","_Fragment","placeholder","size","_createBlock","CircleClose"],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ const _hoisted_2 = {
|
|
|
20
20
|
};
|
|
21
21
|
const _hoisted_3 = { class: "i-map__district" };
|
|
22
22
|
const _hoisted_4 = { class: "i-map__container-inner" };
|
|
23
|
-
const _hoisted_5 = { class: "i-map w-full i-map__container-inner
|
|
23
|
+
const _hoisted_5 = { class: "i-map w-full h-full i-map__container-inner" };
|
|
24
24
|
const _hoisted_6 = { class: "i-map" };
|
|
25
25
|
const _hoisted_7 = {
|
|
26
26
|
key: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.vue2.js","sources":["../../../../../../../packages/components/map/src/map.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { CircleClose } from \"@element-plus/icons-vue\";\nimport { ElMessage } from \"element-plus\";\nimport { nextTick, onMounted, onUnmounted, ref, toRefs, watch } from \"vue\";\nimport { MapProps, TiandituGlobal } from \"./map\";\nimport markerIcon from \"./marker.png\";\n\ndefineOptions({\n name: \"IMap\",\n});\n\n// ==================== Props & Emits ====================\nconst props = defineProps(MapProps);\n\nconst emits = defineEmits([\n \"update:modelValue\",\n \"change\",\n \"update:addressCode\",\n \"update:address\",\n]);\n\nconst { modelValue, disabled, options } = toRefs(props);\n\n// ==================== 天地图 Token ====================\nconst TIANDITU_TOKEN = \"ab0296cad21f656152228912c15abdfb\";\n\n// ==================== 模块级:加载天地图 JS API ====================\nconst _win = window as unknown as TiandituGlobal;\n\nfunction loadTiandituScript(): Promise<void> {\n if (_win.__tdt_loaded) return Promise.resolve();\n if (_win.__tdt_loading) return _win.__tdt_loading;\n\n _win.__tdt_loading = new Promise<void>((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = `//api.tianditu.gov.cn/api?v=4.0&tk=${TIANDITU_TOKEN}`;\n script.onload = () => {\n _win.__tdt_loaded = true;\n _win.__tdt_loading = null;\n resolve();\n };\n script.onerror = () => {\n _win.__tdt_loading = null;\n reject(new Error(\"天地图 API 加载失败\"));\n };\n document.head.appendChild(script);\n });\n return _win.__tdt_loading;\n}\n\nfunction getT(): any {\n return _win.T;\n}\n\n// ==================== 天地图 REST API 封装 ====================\nasync function tdtSearch(keyword: string): Promise<any[]> {\n const postStr = JSON.stringify({\n keyWord: keyword,\n level: 12,\n queryType: 1,\n start: 0,\n count: 20,\n });\n const url = `//api.tianditu.gov.cn/search?postStr=${encodeURIComponent(postStr)}&type=query&tk=${TIANDITU_TOKEN}`;\n const resp = await fetch(url);\n const data = await resp.json();\n if (data && data.pois) {\n return data.pois.map((poi: any) => ({\n name: poi.name,\n district: poi.address || \"\",\n location: poi.lonlat\n ? {\n lng: Number(poi.lonlat.split(\" \")[0]),\n lat: Number(poi.lonlat.split(\" \")[1]),\n }\n : null,\n adcode: poi.admincode || \"\",\n _raw: poi,\n }));\n }\n return [];\n}\n\nasync function tdtReverseGeocode(lng: number, lat: number): Promise<string> {\n const postStr = JSON.stringify({ lon: lng, lat, ver: 1 });\n const url = `//api.tianditu.gov.cn/geocoder?postStr=${encodeURIComponent(postStr)}&type=geocode&tk=${TIANDITU_TOKEN}`;\n const resp = await fetch(url);\n const data = await resp.json();\n if (data && data.result) {\n return data.result.formatted_address || data.result.address || \"\";\n }\n return \"\";\n}\n\n// ==================== 响应式状态 ====================\nlet map: any = null;\nlet marker: any = null;\nlet infoWindow: any = null;\n\nconst dialogVisible = ref(false);\nconst keyword = ref(\"\");\nconst model = ref<any>([]);\n\nconst refMap = ref<HTMLDivElement | null>(null);\nconst center = ref<[number, number]>([116.397428, 39.90923]);\nconst zoom = ref(10);\n\n// ==================== 标记管理 ====================\nfunction clearMarker() {\n if (marker) {\n map?.removeOverLay(marker);\n marker = null;\n }\n}\n\nasync function addMarker(lnglat: [number, number], name?: string) {\n const T = getT();\n if (!T || !map) return;\n\n clearMarker();\n\n const icon = new T.Icon({\n iconUrl: markerIcon,\n iconSize: new T.Point(19, 33),\n iconAnchor: new T.Point(10, 33),\n });\n\n marker = new T.Marker(new T.LngLat(lnglat[0], lnglat[1]), { icon });\n map.addOverLay(marker);\n\n if (name) {\n keyword.value = name;\n model.value = [lnglat[0], lnglat[1], name];\n return;\n }\n\n try {\n const address = await tdtReverseGeocode(lnglat[0], lnglat[1]);\n keyword.value =\n address || `${lnglat[0].toFixed(6)}, ${lnglat[1].toFixed(6)}`;\n model.value = [lnglat[0], lnglat[1], keyword.value];\n } catch {\n model.value = [\n lnglat[0],\n lnglat[1],\n `${lnglat[0].toFixed(6)}, ${lnglat[1].toFixed(6)}`,\n ];\n }\n}\n\n// ==================== 地图初始化 ====================\nasync function initMap() {\n await loadTiandituScript();\n const T = getT();\n if (!T) return;\n\n const container = refMap.value;\n if (!container) return;\n\n if (map) {\n try {\n map.destroy();\n } catch {\n /* ignore */\n }\n map = null;\n marker = null;\n }\n\n const hasInitPos = model.value?.[0] != null && model.value?.[1] != null;\n const mapCenter = hasInitPos\n ? new T.LngLat(model.value[0], model.value[1])\n : new T.LngLat(center.value[0], center.value[1]);\n const mapZoom = hasInitPos ? options.value?.zoom || 15 : zoom.value;\n\n map = new T.Map(container, {\n center: mapCenter,\n zoom: mapZoom,\n });\n\n map.addControl(new T.Control.Zoom());\n\n // 地图点击 → 选点\n map.addEventListener(\"click\", (e: any) => {\n const lnglat = e.lnglat;\n if (!lnglat) return;\n addMarker([lnglat.getLng(), lnglat.getLat()]);\n });\n\n if (hasInitPos) {\n await nextTick();\n addMarker([model.value[0], model.value[1]], model.value[2]);\n }\n}\n\nfunction destroyMap() {\n clearMarker();\n if (infoWindow) {\n try {\n infoWindow.closeInfoWindow();\n } catch {\n /* ignore */\n }\n infoWindow = null;\n }\n if (map) {\n try {\n map.destroy();\n } catch {\n /* ignore */\n }\n map = null;\n }\n}\n\n// ==================== 打开选择器 ====================\nconst handleOpenDialog = async () => {\n if (disabled.value) return;\n dialogVisible.value = true;\n await nextTick();\n model.value = JSON.parse(JSON.stringify(modelValue.value));\n setTimeout(() => initMap(), 200);\n};\n\n// ==================== 自动补全搜索 ====================\nconst querySearch = async (queryString: string, cb: any) => {\n if (!queryString) return cb([]);\n try {\n const results = await tdtSearch(queryString);\n cb(results);\n } catch {\n ElMessage.error(\"搜索失败,请稍后重试\");\n cb([]);\n }\n};\n\nconst inputChange = () => {\n model.value = [];\n clearMarker();\n};\n\n// ==================== 选中搜索结果 ====================\nconst handleSelect = async (item: any) => {\n keyword.value = item.name;\n\n if (item.location && !isNaN(item.location.lng) && !isNaN(item.location.lat)) {\n addMarker([item.location.lng, item.location.lat], item.name);\n map?.setCenter(new (getT().LngLat)(item.location.lng, item.location.lat));\n } else if (item._raw?.lonlat) {\n const [lng, lat] = item._raw.lonlat.split(\" \").map(Number);\n if (!isNaN(lng) && !isNaN(lat)) {\n addMarker([lng, lat], item.name);\n map?.setCenter(new (getT().LngLat)(lng, lat));\n }\n } else {\n try {\n const results = await tdtSearch(item.name);\n if (results.length > 0) {\n const first = results[0];\n if (\n first.location &&\n !isNaN(first.location.lng) &&\n !isNaN(first.location.lat)\n ) {\n addMarker([first.location.lng, first.location.lat], first.name);\n map?.setCenter(\n new (getT().LngLat)(first.location.lng, first.location.lat),\n );\n showSearchPanel(results);\n }\n }\n } catch {\n ElMessage.warning(\"未找到匹配的地点\");\n }\n return;\n }\n\n try {\n const results = await tdtSearch(item.name);\n if (results.length > 0) showSearchPanel(results);\n } catch {\n /* ignore */\n }\n};\n\nfunction showSearchPanel(results: any[]) {\n const panel = document.querySelector(\".i-map__search-result\");\n if (!panel) return;\n panel.setAttribute(\"style\", \"display:block\");\n panel.innerHTML = results\n .map(\n (r, i) =>\n `<div class=\"tdt-search-item\" data-index=\"${i}\" style=\"padding:6px 8px;cursor:pointer;border-bottom:1px solid #eee;font-size:13px;\">\n <div style=\"font-weight:500;\">${r.name}</div>\n <div style=\"color:#999;font-size:12px;\">${r.district || \"\"}</div>\n </div>`,\n )\n .join(\"\");\n\n panel.querySelectorAll(\".tdt-search-item\").forEach((el) => {\n el.addEventListener(\"click\", () => {\n const idx = Number((el as HTMLElement).dataset.index);\n const item = results[idx];\n if (item?.location) {\n clearMarker();\n addMarker([item.location.lng, item.location.lat], item.name);\n map?.setCenter(\n new (getT().LngLat)(item.location.lng, item.location.lat),\n );\n }\n });\n });\n}\n\n// ==================== 确认 / 清除 ====================\nconst handleConfirm = () => {\n emits(\"update:modelValue\", model.value);\n emits(\"change\", model.value);\n emits(\"update:addressCode\", [model.value[0], model.value[1]]);\n emits(\"update:address\", model.value[2]);\n dialogVisible.value = false;\n setTimeout(() => destroyMap(), 300);\n};\n\nconst clearValue = () => {\n emits(\"update:modelValue\", []);\n emits(\"change\", []);\n};\n\n// ==================== 地图中心更新 ====================\nfunction updateMapCenter(val: any[], retry = 0) {\n const T = getT();\n if (!map || !T) {\n if (retry < 10) {\n setTimeout(() => updateMapCenter(val, retry + 1), 300);\n }\n return;\n }\n addMarker([val[0], val[1]], val[2]);\n map.panTo(new T.LngLat(val[0], val[1]), options.value?.zoom || 12);\n}\n\n// ==================== View 模式:挂载时初始化 ====================\nonMounted(() => {\n if (props.type === \"view\") {\n nextTick(async () => {\n model.value = JSON.parse(JSON.stringify(modelValue.value));\n await new Promise((r) => requestAnimationFrame(r));\n try {\n await initMap();\n } catch (e) {\n console.error(\"[ViewMap] initMap error:\", e);\n }\n });\n }\n});\n\nonUnmounted(() => {\n destroyMap();\n});\n\n// ==================== 监听 modelValue 外部变化 ====================\nwatch(\n () => props.modelValue,\n (val) => {\n if (!val || val[0] == null || val[1] == null) return;\n model.value = JSON.parse(JSON.stringify(val));\n updateMapCenter(val);\n },\n { deep: true },\n);\n\ndefineExpose({\n handleOpenDialog,\n});\n</script>\n\n<template>\n <!-- type=\"edit2\":纯抽屉模式 -->\n <div v-if=\"type === 'edit2'\" class=\"i-map\">\n <el-drawer\n v-model=\"dialogVisible\"\n title=\"请选择地点\"\n :show-close=\"true\"\n size=\"100%\"\n @closed=\"destroyMap\"\n >\n <div v-if=\"dialogVisible\" class=\"h-full overflow-hidden i-map__container\">\n <el-autocomplete\n v-model=\"keyword\"\n :disabled=\"disabled\"\n placeholder=\"请输入关键字选择地点\"\n class=\"i-map__search\"\n :debounce=\"700\"\n style=\"margin-bottom: 15px; width: 100%\"\n clearable\n :fetch-suggestions=\"querySearch\"\n :validate-event=\"false\"\n @input=\"inputChange\"\n @select=\"handleSelect\"\n @keyup.enter=\"handleSelect({ name: keyword })\"\n >\n <template #default=\"{ item }\">\n {{ item.name }}\n <span class=\"i-map__district\">{{ item.district }}</span>\n </template>\n </el-autocomplete>\n <div class=\"i-map__container-inner\">\n <div ref=\"refMap\" class=\"i-map__tdt\" />\n <div class=\"i-map__search-result\" />\n </div>\n </div>\n <template #footer>\n <el-button type=\"primary\" :disabled=\"disabled\" @click=\"handleConfirm\">\n 确定\n </el-button>\n </template>\n </el-drawer>\n </div>\n\n <!-- type=\"view\":只读地图 -->\n <div\n v-else-if=\"type === 'view'\"\n class=\"i-map w-full i-map__container-inner i-map__view-wrapper\"\n >\n <div ref=\"refMap\" class=\"i-map__tdt i-map__tdt--view\" />\n <div class=\"i-map__search-result\" />\n </div>\n\n <!-- 默认 type=\"edit\":输入框 + 抽屉 -->\n <div v-else class=\"i-map\">\n <el-input\n v-model=\"modelValue[2]\"\n class=\"i-map__input\"\n :placeholder=\"placeholder\"\n readonly\n :size=\"size\"\n :disabled=\"disabled\"\n @click=\"handleOpenDialog\"\n >\n <template v-if=\"!disabled\" #suffix>\n <el-icon\n v-if=\"modelValue[2]\"\n class=\"i-map__input-close\"\n @click.stop=\"clearValue\"\n >\n <CircleClose />\n </el-icon>\n </template>\n </el-input>\n\n <el-drawer\n v-model=\"dialogVisible\"\n title=\"请选择地点\"\n :show-close=\"true\"\n size=\"100%\"\n @closed=\"destroyMap\"\n >\n <div v-if=\"dialogVisible\" class=\"h-full overflow-hidden i-map__container\">\n <el-autocomplete\n v-model=\"keyword\"\n :disabled=\"disabled\"\n placeholder=\"请输入关键字选择地点\"\n class=\"i-map__search\"\n :debounce=\"700\"\n style=\"margin-bottom: 15px; width: 100%\"\n clearable\n :fetch-suggestions=\"querySearch\"\n :validate-event=\"false\"\n @input=\"inputChange\"\n @select=\"handleSelect\"\n @keyup.enter=\"handleSelect({ name: keyword })\"\n >\n <template #default=\"{ item }\">\n {{ item.name }}\n <span class=\"i-map__district\">{{ item.district }}</span>\n </template>\n </el-autocomplete>\n <div class=\"i-map__container-inner\">\n <div ref=\"refMap\" class=\"i-map__tdt\" />\n <div class=\"i-map__search-result\" />\n </div>\n </div>\n <template #footer>\n <el-button type=\"primary\" :disabled=\"disabled\" @click=\"handleConfirm\">\n 确定\n </el-button>\n </template>\n </el-drawer>\n </div>\n</template>\n"],"names":["toRefs","keyword","marker","ref","markerIcon","nextTick","ElMessage","onMounted","onUnmounted","watch","_createCommentVNode","type","_openBlock","_createElementBlock","_createVNode","_unref","_withKeys","_withCtx","_createElementVNode","_toDisplayString","_Fragment","placeholder","size","_createBlock","CircleClose"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"map.vue2.js","sources":["../../../../../../../packages/components/map/src/map.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { CircleClose } from \"@element-plus/icons-vue\";\nimport { ElMessage } from \"element-plus\";\nimport { nextTick, onMounted, onUnmounted, ref, toRefs, watch } from \"vue\";\nimport { MapProps, TiandituGlobal } from \"./map\";\nimport markerIcon from \"./marker.png\";\n\ndefineOptions({\n name: \"IMap\",\n});\n\n// ==================== Props & Emits ====================\nconst props = defineProps(MapProps);\n\nconst emits = defineEmits([\n \"update:modelValue\",\n \"change\",\n \"update:addressCode\",\n \"update:address\",\n]);\n\nconst { modelValue, disabled, options } = toRefs(props);\n\n// ==================== 天地图 Token ====================\nconst TIANDITU_TOKEN = \"ab0296cad21f656152228912c15abdfb\";\n\n// ==================== 模块级:加载天地图 JS API ====================\nconst _win = window as unknown as TiandituGlobal;\n\nfunction loadTiandituScript(): Promise<void> {\n if (_win.__tdt_loaded) return Promise.resolve();\n if (_win.__tdt_loading) return _win.__tdt_loading;\n\n _win.__tdt_loading = new Promise<void>((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = `//api.tianditu.gov.cn/api?v=4.0&tk=${TIANDITU_TOKEN}`;\n script.onload = () => {\n _win.__tdt_loaded = true;\n _win.__tdt_loading = null;\n resolve();\n };\n script.onerror = () => {\n _win.__tdt_loading = null;\n reject(new Error(\"天地图 API 加载失败\"));\n };\n document.head.appendChild(script);\n });\n return _win.__tdt_loading;\n}\n\nfunction getT(): any {\n return _win.T;\n}\n\n// ==================== 天地图 REST API 封装 ====================\nasync function tdtSearch(keyword: string): Promise<any[]> {\n const postStr = JSON.stringify({\n keyWord: keyword,\n level: 12,\n queryType: 1,\n start: 0,\n count: 20,\n });\n const url = `//api.tianditu.gov.cn/search?postStr=${encodeURIComponent(postStr)}&type=query&tk=${TIANDITU_TOKEN}`;\n const resp = await fetch(url);\n const data = await resp.json();\n if (data && data.pois) {\n return data.pois.map((poi: any) => ({\n name: poi.name,\n district: poi.address || \"\",\n location: poi.lonlat\n ? {\n lng: Number(poi.lonlat.split(\" \")[0]),\n lat: Number(poi.lonlat.split(\" \")[1]),\n }\n : null,\n adcode: poi.admincode || \"\",\n _raw: poi,\n }));\n }\n return [];\n}\n\nasync function tdtReverseGeocode(lng: number, lat: number): Promise<string> {\n const postStr = JSON.stringify({ lon: lng, lat, ver: 1 });\n const url = `//api.tianditu.gov.cn/geocoder?postStr=${encodeURIComponent(postStr)}&type=geocode&tk=${TIANDITU_TOKEN}`;\n const resp = await fetch(url);\n const data = await resp.json();\n if (data && data.result) {\n return data.result.formatted_address || data.result.address || \"\";\n }\n return \"\";\n}\n\n// ==================== 响应式状态 ====================\nlet map: any = null;\nlet marker: any = null;\nlet infoWindow: any = null;\n\nconst dialogVisible = ref(false);\nconst keyword = ref(\"\");\nconst model = ref<any>([]);\n\nconst refMap = ref<HTMLDivElement | null>(null);\nconst center = ref<[number, number]>([116.397428, 39.90923]);\nconst zoom = ref(10);\n\n// ==================== 标记管理 ====================\nfunction clearMarker() {\n if (marker) {\n map?.removeOverLay(marker);\n marker = null;\n }\n}\n\nasync function addMarker(lnglat: [number, number], name?: string) {\n const T = getT();\n if (!T || !map) return;\n\n clearMarker();\n\n const icon = new T.Icon({\n iconUrl: markerIcon,\n iconSize: new T.Point(19, 33),\n iconAnchor: new T.Point(10, 33),\n });\n\n marker = new T.Marker(new T.LngLat(lnglat[0], lnglat[1]), { icon });\n map.addOverLay(marker);\n\n if (name) {\n keyword.value = name;\n model.value = [lnglat[0], lnglat[1], name];\n return;\n }\n\n try {\n const address = await tdtReverseGeocode(lnglat[0], lnglat[1]);\n keyword.value =\n address || `${lnglat[0].toFixed(6)}, ${lnglat[1].toFixed(6)}`;\n model.value = [lnglat[0], lnglat[1], keyword.value];\n } catch {\n model.value = [\n lnglat[0],\n lnglat[1],\n `${lnglat[0].toFixed(6)}, ${lnglat[1].toFixed(6)}`,\n ];\n }\n}\n\n// ==================== 地图初始化 ====================\nasync function initMap() {\n await loadTiandituScript();\n const T = getT();\n if (!T) return;\n\n const container = refMap.value;\n if (!container) return;\n\n if (map) {\n try {\n map.destroy();\n } catch {\n /* ignore */\n }\n map = null;\n marker = null;\n }\n\n const hasInitPos = model.value?.[0] != null && model.value?.[1] != null;\n const mapCenter = hasInitPos\n ? new T.LngLat(model.value[0], model.value[1])\n : new T.LngLat(center.value[0], center.value[1]);\n const mapZoom = hasInitPos ? options.value?.zoom || 15 : zoom.value;\n\n map = new T.Map(container, {\n center: mapCenter,\n zoom: mapZoom,\n });\n\n map.addControl(new T.Control.Zoom());\n\n // 地图点击 → 选点\n map.addEventListener(\"click\", (e: any) => {\n const lnglat = e.lnglat;\n if (!lnglat) return;\n addMarker([lnglat.getLng(), lnglat.getLat()]);\n });\n\n if (hasInitPos) {\n await nextTick();\n addMarker([model.value[0], model.value[1]], model.value[2]);\n }\n}\n\nfunction destroyMap() {\n clearMarker();\n if (infoWindow) {\n try {\n infoWindow.closeInfoWindow();\n } catch {\n /* ignore */\n }\n infoWindow = null;\n }\n if (map) {\n try {\n map.destroy();\n } catch {\n /* ignore */\n }\n map = null;\n }\n}\n\n// ==================== 打开选择器 ====================\nconst handleOpenDialog = async () => {\n if (disabled.value) return;\n dialogVisible.value = true;\n await nextTick();\n model.value = JSON.parse(JSON.stringify(modelValue.value));\n setTimeout(() => initMap(), 200);\n};\n\n// ==================== 自动补全搜索 ====================\nconst querySearch = async (queryString: string, cb: any) => {\n if (!queryString) return cb([]);\n try {\n const results = await tdtSearch(queryString);\n cb(results);\n } catch {\n ElMessage.error(\"搜索失败,请稍后重试\");\n cb([]);\n }\n};\n\nconst inputChange = () => {\n model.value = [];\n clearMarker();\n};\n\n// ==================== 选中搜索结果 ====================\nconst handleSelect = async (item: any) => {\n keyword.value = item.name;\n\n if (item.location && !isNaN(item.location.lng) && !isNaN(item.location.lat)) {\n addMarker([item.location.lng, item.location.lat], item.name);\n map?.setCenter(new (getT().LngLat)(item.location.lng, item.location.lat));\n } else if (item._raw?.lonlat) {\n const [lng, lat] = item._raw.lonlat.split(\" \").map(Number);\n if (!isNaN(lng) && !isNaN(lat)) {\n addMarker([lng, lat], item.name);\n map?.setCenter(new (getT().LngLat)(lng, lat));\n }\n } else {\n try {\n const results = await tdtSearch(item.name);\n if (results.length > 0) {\n const first = results[0];\n if (\n first.location &&\n !isNaN(first.location.lng) &&\n !isNaN(first.location.lat)\n ) {\n addMarker([first.location.lng, first.location.lat], first.name);\n map?.setCenter(\n new (getT().LngLat)(first.location.lng, first.location.lat),\n );\n showSearchPanel(results);\n }\n }\n } catch {\n ElMessage.warning(\"未找到匹配的地点\");\n }\n return;\n }\n\n try {\n const results = await tdtSearch(item.name);\n if (results.length > 0) showSearchPanel(results);\n } catch {\n /* ignore */\n }\n};\n\nfunction showSearchPanel(results: any[]) {\n const panel = document.querySelector(\".i-map__search-result\");\n if (!panel) return;\n panel.setAttribute(\"style\", \"display:block\");\n panel.innerHTML = results\n .map(\n (r, i) =>\n `<div class=\"tdt-search-item\" data-index=\"${i}\" style=\"padding:6px 8px;cursor:pointer;border-bottom:1px solid #eee;font-size:13px;\">\n <div style=\"font-weight:500;\">${r.name}</div>\n <div style=\"color:#999;font-size:12px;\">${r.district || \"\"}</div>\n </div>`,\n )\n .join(\"\");\n\n panel.querySelectorAll(\".tdt-search-item\").forEach((el) => {\n el.addEventListener(\"click\", () => {\n const idx = Number((el as HTMLElement).dataset.index);\n const item = results[idx];\n if (item?.location) {\n clearMarker();\n addMarker([item.location.lng, item.location.lat], item.name);\n map?.setCenter(\n new (getT().LngLat)(item.location.lng, item.location.lat),\n );\n }\n });\n });\n}\n\n// ==================== 确认 / 清除 ====================\nconst handleConfirm = () => {\n emits(\"update:modelValue\", model.value);\n emits(\"change\", model.value);\n emits(\"update:addressCode\", [model.value[0], model.value[1]]);\n emits(\"update:address\", model.value[2]);\n dialogVisible.value = false;\n setTimeout(() => destroyMap(), 300);\n};\n\nconst clearValue = () => {\n emits(\"update:modelValue\", []);\n emits(\"change\", []);\n};\n\n// ==================== 地图中心更新 ====================\nfunction updateMapCenter(val: any[], retry = 0) {\n const T = getT();\n if (!map || !T) {\n if (retry < 10) {\n setTimeout(() => updateMapCenter(val, retry + 1), 300);\n }\n return;\n }\n addMarker([val[0], val[1]], val[2]);\n map.panTo(new T.LngLat(val[0], val[1]), options.value?.zoom || 12);\n}\n\n// ==================== View 模式:挂载时初始化 ====================\nonMounted(() => {\n if (props.type === \"view\") {\n nextTick(async () => {\n model.value = JSON.parse(JSON.stringify(modelValue.value));\n await new Promise((r) => requestAnimationFrame(r));\n try {\n await initMap();\n } catch (e) {\n console.error(\"[ViewMap] initMap error:\", e);\n }\n });\n }\n});\n\nonUnmounted(() => {\n destroyMap();\n});\n\n// ==================== 监听 modelValue 外部变化 ====================\nwatch(\n () => props.modelValue,\n (val) => {\n if (!val || val[0] == null || val[1] == null) return;\n model.value = JSON.parse(JSON.stringify(val));\n updateMapCenter(val);\n },\n { deep: true },\n);\n\ndefineExpose({\n handleOpenDialog,\n});\n</script>\n\n<template>\n <!-- type=\"edit2\":纯抽屉模式 -->\n <div v-if=\"type === 'edit2'\" class=\"i-map\">\n <el-drawer\n v-model=\"dialogVisible\"\n title=\"请选择地点\"\n :show-close=\"true\"\n size=\"100%\"\n @closed=\"destroyMap\"\n >\n <div v-if=\"dialogVisible\" class=\"h-full overflow-hidden i-map__container\">\n <el-autocomplete\n v-model=\"keyword\"\n :disabled=\"disabled\"\n placeholder=\"请输入关键字选择地点\"\n class=\"i-map__search\"\n :debounce=\"700\"\n style=\"margin-bottom: 15px; width: 100%\"\n clearable\n :fetch-suggestions=\"querySearch\"\n :validate-event=\"false\"\n @input=\"inputChange\"\n @select=\"handleSelect\"\n @keyup.enter=\"handleSelect({ name: keyword })\"\n >\n <template #default=\"{ item }\">\n {{ item.name }}\n <span class=\"i-map__district\">{{ item.district }}</span>\n </template>\n </el-autocomplete>\n <div class=\"i-map__container-inner\">\n <div ref=\"refMap\" class=\"i-map__tdt\" />\n <div class=\"i-map__search-result\" />\n </div>\n </div>\n <template #footer>\n <el-button type=\"primary\" :disabled=\"disabled\" @click=\"handleConfirm\">\n 确定\n </el-button>\n </template>\n </el-drawer>\n </div>\n\n <!-- type=\"view\":只读地图 -->\n <div\n v-else-if=\"type === 'view'\"\n class=\"i-map w-full h-full i-map__container-inner\"\n >\n <div ref=\"refMap\" class=\"i-map__tdt i-map__tdt--view\" />\n <div class=\"i-map__search-result\" />\n </div>\n\n <!-- 默认 type=\"edit\":输入框 + 抽屉 -->\n <div v-else class=\"i-map\">\n <el-input\n v-model=\"modelValue[2]\"\n class=\"i-map__input\"\n :placeholder=\"placeholder\"\n readonly\n :size=\"size\"\n :disabled=\"disabled\"\n @click=\"handleOpenDialog\"\n >\n <template v-if=\"!disabled\" #suffix>\n <el-icon\n v-if=\"modelValue[2]\"\n class=\"i-map__input-close\"\n @click.stop=\"clearValue\"\n >\n <CircleClose />\n </el-icon>\n </template>\n </el-input>\n\n <el-drawer\n v-model=\"dialogVisible\"\n title=\"请选择地点\"\n :show-close=\"true\"\n size=\"100%\"\n @closed=\"destroyMap\"\n >\n <div v-if=\"dialogVisible\" class=\"h-full overflow-hidden i-map__container\">\n <el-autocomplete\n v-model=\"keyword\"\n :disabled=\"disabled\"\n placeholder=\"请输入关键字选择地点\"\n class=\"i-map__search\"\n :debounce=\"700\"\n style=\"margin-bottom: 15px; width: 100%\"\n clearable\n :fetch-suggestions=\"querySearch\"\n :validate-event=\"false\"\n @input=\"inputChange\"\n @select=\"handleSelect\"\n @keyup.enter=\"handleSelect({ name: keyword })\"\n >\n <template #default=\"{ item }\">\n {{ item.name }}\n <span class=\"i-map__district\">{{ item.district }}</span>\n </template>\n </el-autocomplete>\n <div class=\"i-map__container-inner\">\n <div ref=\"refMap\" class=\"i-map__tdt\" />\n <div class=\"i-map__search-result\" />\n </div>\n </div>\n <template #footer>\n <el-button type=\"primary\" :disabled=\"disabled\" @click=\"handleConfirm\">\n 确定\n </el-button>\n </template>\n </el-drawer>\n </div>\n</template>\n"],"names":["toRefs","keyword","marker","ref","markerIcon","nextTick","ElMessage","onMounted","onUnmounted","watch","_createCommentVNode","type","_openBlock","_createElementBlock","_createVNode","_unref","_withKeys","_withCtx","_createElementVNode","_toDisplayString","_Fragment","placeholder","size","_createBlock","CircleClose"],"mappings":"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"}
|