From 1075860848d14e3d6d1506b91d9c9039433bf4cc Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期一, 03 三月 2025 17:40:13 +0800 Subject: [PATCH] 合并附件和业务表格 --- src/components/chat/chatComponents/mapCom/MapCom.vue | 88 ++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 85 insertions(+), 3 deletions(-) diff --git a/src/components/chat/chatComponents/mapCom/MapCom.vue b/src/components/chat/chatComponents/mapCom/MapCom.vue index 5db16e9..299b2c7 100644 --- a/src/components/chat/chatComponents/mapCom/MapCom.vue +++ b/src/components/chat/chatComponents/mapCom/MapCom.vue @@ -1,20 +1,69 @@ <template> - <div ref="containerRef" class="h-[70vh]"></div> + <div class="h-[70vh] relative"> + <div ref="containerRef" class="h-full"></div> + <div v-if="bottomBarIsShow" class="absolute w-full bottom-0 bg-white border-gray-300 border border-solid"> + <div + class="w-28 h-5 absolute left-1/2 -translate-x-1/2 -translate-y-[100%] cursor-pointer bg-[#4974f3] rounded-t-lg flex-center" + @click="toggleShowChart" + > + <div + class="ywifont -rotate-90 text-white !text-[13px]" + :class="{ 'ywicon-zuoyoujiantou': chartIsShow, 'ywicon-zuoyoujiantou1': !chartIsShow }" + ></div> + </div> + <RecordSet v-if="chartIsShow" chartHeight="23vh" :data="CHART_DATA" class="mt-2" /> + </div> + </div> </template> <script setup lang="ts"> import { onMounted, ref } from 'vue'; import { chatComProps } from '../common'; +import RecordSet from '../summaryCom/components/recordSet/RecordSet.vue'; +import { CHART_DATA } from './TestData'; +import monitorPointPic from './img/monitor-point.svg'; import type { MapData } from './types'; import type { GaoDePosition, LabelMarkerData } from '/@/model/map/GaoDeMap'; import { GaoDeMap } from '/@/model/map/GaoDeMap'; -import monitorPointPic from './img/monitor-point.svg'; let gaoDeMap = new GaoDeMap(); const containerRef = ref<HTMLDivElement>(null); const props = defineProps(chatComProps) as { data: MapData; }; +const createInfoWindow = () => { + const dom = `<div class="w-48 bg-white p-1 flex flex-col border-blue-500 border-solid border"> + <div class="bg-[#ca0dab] flex py-1 text-white px-5"> + <div class="pointer-title text-nowrap overflow-hidden text-ellipsis mx-auto"></div> + </div> + + </div>`; + + // const dom = `<div class="w-32 bg-white p-1 flex flex-col border-blue-500 border-solid border"> + // <div class="bg-[#ca0dab] flex-center py-1 text-white"> + // 姘存湀浜� + // </div> + // <div class="flex flex-col mt-2"> + // <div class="flex w-full text-blue-800"> + // <div class="overflow-hidden text-nowrap overflow-ellipsis self-end flex-auto text-right"> + // 0.72332 + // </div> + // <div class="flex-0 ml-4"> + // m + // </div> + + // </div> + + // </div> + // </div>`; + return dom; +}; + +const updateInfoWindow = (title: string) => { + const pointerTitle = infoWindow.dom.querySelector('.pointer-title'); + pointerTitle.innerHTML = title +''; +}; + const addMarkerLayer = () => { const dataList = (props.data?.values ?? []).map<LabelMarkerData>((item) => ({ position: [item.posx, item.posy], @@ -28,21 +77,54 @@ url: monitorPointPic, size: 30, }, + click(e, label) { + if (!bottomBarIsShow.value) { + bottomBarIsShow.value = true; + } + if (!chartIsShow.value) { + chartIsShow.value = true; + } + infoWindow.open(gaoDeMap.map, label.getPosition() as any); + const extData = label.getExtData(); + updateInfoWindow(extData.title); + + }, }, layerOpt: { // allowCollision:false }, }); }; +const bottomBarIsShow = ref(false); +const chartIsShow = ref(true); +const toggleShowChart = () => { + chartIsShow.value = !chartIsShow.value; +}; + +let infoWindow: AMap.InfoWindow; + onMounted(async () => { await gaoDeMap.init({ container: containerRef.value, + aMapOption: { + resizeEnable: true, + }, }); const southWest: GaoDePosition = [props.data.minx, props.data.miny]; const northEast: GaoDePosition = [props.data.maxx, props.data.maxy]; gaoDeMap.zoomToRect(southWest, northEast); gaoDeMap.applyBasicPlugins(); addMarkerLayer(); + infoWindow = new AMap.InfoWindow({ + content: createInfoWindow(), + offset: [3,-34], + closeWhenClickMap: true, + }); + }); </script> -<style scoped lang="scss"></style> +<style scoped lang="scss"> +:deep(.amap-info-content) { + padding: 0; +} +</style> -- Gitblit v1.9.3