From b787a9ce7788cc320b1682bfb1b0353b89e48a8c Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Wed, 14 Jan 2026 13:37:03 +0800
Subject: [PATCH] feat:工单

---
 applications/mobile-web-view/src/appComponents/workMap/index.vue |  295 +---------------------------------------------------------
 1 files changed, 7 insertions(+), 288 deletions(-)

diff --git a/applications/mobile-web-view/src/appComponents/workMap/index.vue b/applications/mobile-web-view/src/appComponents/workMap/index.vue
index a037fca..3173e2b 100644
--- a/applications/mobile-web-view/src/appComponents/workMap/index.vue
+++ b/applications/mobile-web-view/src/appComponents/workMap/index.vue
@@ -1,77 +1,21 @@
 <template>
 	<div class="page-container">
 		<div class="map" id="map"></div>
-
-		<div class="weather-box" v-show="weatherShow">
-			<div class="icon">
-				<van-image :src="WEATHER?.[weather] || ''" width="100%" height="100%"></van-image>
-			</div>
-
-			<div class="content">
-				<span class="tq">{{ weather }} {{ temperature }}</span>
-				<span class="tq">风速:{{ windVelocity }}</span>
-			</div>
-		</div>
-		<div class="back-btn" @click="goBackWork" v-show="workNavigationShow">
-			<van-image width="20" height="20" :src="backIcon" />
-			<div class="label">返回</div>
-		</div>
-		<div class="layer-btn" @click="layerChangePopupShow = true" v-show="layerShow">
-			<van-image width="20" height="20" :src="layerIcon" />
-			<div class="label">图层</div>
-		</div>
-
-		<div class="location-btn" @click="setMapLocation" v-show="locationShow">
-			<van-image width="20" height="20" :src="locationIcon" />
-			<div class="label">定位</div>
-		</div>
-		<!-- 事件导航按钮 -->
-		<div class="work-btn" v-show="workNavigationShow">
-			<van-button round block type="primary" color="#1D6FE9" @click="openAmap">事件导航</van-button>
-		</div>
-		<slot name="searchBar"></slot>
-		<slot name="eventNav"></slot>
-
-		<van-popup v-model:show="layerChangePopupShow" position="bottom" round>
-			<div class="popup-container">
-				<div class="category-content">
-					<div class="header">
-						<div class="title">底图切换</div>
-					</div>
-
-					<div class="content">
-						<div
-							class="layer-box"
-							:class="{ on: setSelectMapLayerKey === item.key }"
-							v-for="(item, ind) in layers"
-							:key="ind"
-							@click="setMapLayer(item)"
-						>
-							<div class="image">
-								<van-image :src="item.src" width="100%" height="100%"></van-image>
-							</div>
-							<div class="label">{{ item.name }}</div>
-						</div>
-					</div>
+				<div class="location-btn" @click="setMapLocation" v-show="locationShow">
+					<van-image width="20" height="20" :src="locationIcon" />
+					<div class="label">定位</div>
 				</div>
-			</div>
-		</van-popup>
+
 	</div>
 </template>
 
 <script setup>
 import { searchGeocoder } from '@/utils/util'
 import mapnavIcon from '@/appDataSource/appwork/mapnav.svg'
-import backIcon from '@/appDataSource/leafletMapIcon/back-icon.svg'
 import incidentPoint from '@/appDataSource/appwork/positioning.svg'
-import droneIcon from '@/appDataSource/leafletMapIcon/drone-icon.svg'
 import userLocationIcon from '@/appDataSource/leafletMapIcon/user-location.svg'
-import layerIcon from '@/appDataSource/leafletMapIcon/layer-icon.svg'
 import locationIcon from '@/appDataSource/leafletMapIcon/location-icon.svg'
 import { useStore } from 'vuex'
-import { getDroneSuggest } from '@/api/home/common'
-import DroneMarkerPopup from '@/appComponents/DroneMarkerPopup/index.vue'
-import EventMarkerPopup from '@/appComponents/EventMarkerPopup/index.vue'
 import { basemapLayer0, basemapLayer1, basemapLayer2, basemapLayer3 } from '@/const/leafletConst'
 
 import L from 'leaflet'
@@ -79,24 +23,12 @@
 import sl from '@/appDataSource/leafletMapIcon/sl.svg'
 import yx from '@/appDataSource/leafletMapIcon/yx.svg'
 import EventBus from '@/utils/eventBus'
-import { polygonTransformScale } from '@/utils/turfFunc'
-import { getEventImage } from '@/utils/stateToImageMap/event'
-import { getDroneStatusImage } from '@/utils/stateToImageMap/drone'
-import { WEATHER } from '@/const/weather'
+
 import { wgs84ToGcj02 } from '@/utils/coordinateTransformation'
 const emit = defineEmits(['location-selected'])
 import _ from 'lodash'
-import { useAreaBoundary } from '@/hooks/useAreaBoundary'
-const { weatherShow, layerShow, locationShow, createWorkShow, workNavigationShow, mapCurrentDetail, clearMarker } =
+const {  locationShow, createWorkShow, workNavigationShow, mapCurrentDetail, clearMarker } =
 	defineProps({
-		weatherShow: {
-			type: Boolean,
-			default: false,
-		},
-		layerShow: {
-			type: Boolean,
-			default: false,
-		},
 		locationShow: {
 			type: Boolean,
 			default: false,
@@ -140,9 +72,7 @@
 	},
 ]
 
-const layerChangePopupShow = ref(false)
 const setSelectMapLayerKey = ref(1) // 选择的地图图层
-let boundaryInstance = useAreaBoundary({ initFly: true })
 let markersLayer = null
 const initMap = () => {
 	if (map) return
@@ -155,7 +85,6 @@
 		doubleClickZoom: false,
 		editable: true, //绘制控件
 	}).setView([25.992338, 114.823254], 13)
-	boundaryInstance.initBoundary(map)
 
 	markersLayer = L.layerGroup().addTo(map) // 创建一个标注层,便于管理和移除
 	if (createWorkShow) {
@@ -311,29 +240,6 @@
 const store = useStore()
 const selectedAreaCode = computed(() => store.state.user.selectedAreaCode)
 
-const weather = ref('')
-// 风速
-const windVelocity = ref('')
-const temperature = ref('')
-// 获取天气建议
-const getWeatherSuggest = () => {
-	getDroneSuggest({ areaCode: selectedAreaCode.value }).then(res => {
-		if (res.data.code !== 0) return
-		weather.value = res.data.data.weather
-		windVelocity.value = res.data.data.windPower
-		temperature.value = res.data.data.temperature
-	})
-}
-const goBackWork = () => {
-	const transmitData = { data: { type: 'workDetailback' } }
-	wx.miniProgram.navigateBack({
-      delta: 1,
-    })
-	wx.miniProgram.postMessage(transmitData)
-	uni.postMessage(transmitData)
-
-	markersLayer.removeLayer(incidentMarker)
-}
 // 存储事件点标记实例,用于后续更新或移除
 let incidentMarker = null
 
@@ -398,28 +304,8 @@
 	{ immediate: true, deep: true }
 )
 
-const openAmap = () => {
-	if (!mapCurrentDetailData.value.longitude || !mapCurrentDetailData.value.latitude) {
-		showToast('未获取到事件坐标')
-		return
-	}
-	// wgs84ToGcj02(Number(item.longitude), Number(item.latitude))
-	// wgs84ToGcj02(mapCurrentDetailData.value.longitude, mapCurrentDetailData.value.latitude)
-	const [gcjLng, gcjLat] = wgs84ToGcj02(
-		Number(mapCurrentDetailData.value.longitude),
-		Number(mapCurrentDetailData.value.latitude)
-	)
 
-	// 高德地图URL Scheme
-	const url = `https://uri.amap.com/marker?position=${gcjLng},${gcjLat}&name=%E4%BA%8B%E4%BB%B6%E7%82%B9&from='ztzf'`
-
-	const transmitData = { data: { type: 'browser', data: { url: url } } }
-	wx.miniProgram.navigateTo({ url: `/subPackages/browser/index?url=${encodeURIComponent(url)}` })
-	wx.miniProgram.postMessage(transmitData)
-	uni.postMessage(transmitData)
-}
 onMounted(async () => {
-	getWeatherSuggest()
 
 	await nextTick()
 	initMap()
@@ -453,83 +339,7 @@
 		width: 100%;
 		height: 100%;
 	}
-	// 事件导航按钮
-	.work-btn {
-		position: absolute;
-		bottom: 80px;
-		left: 0;
-		right: 0;
-		z-index: 996;
-		padding: 0 16px;
-		display: flex;
-		justify-content: center;
-	}
-
-	.work-btn :deep(.van-button) {
-		width: 100%;
-		max-width: 194px;
-		height: 38px;
-	}
-
-	.weather-box {
-		padding: 4px 0;
-		padding-right: 6px;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		position: absolute;
-		top: 12px;
-		left: 12px;
-
-		height: 48px;
-		background: #fff;
-		z-index: 996;
-
-		box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.18);
-		border-radius: 6px 6px 6px 6px;
-
-		.icon {
-			margin-left: 10px;
-			width: 24px;
-			height: 24px;
-		}
-
-		.content {
-			height: 100%;
-			margin-left: 4px;
-			display: flex;
-			flex-direction: column;
-			justify-content: space-around;
-
-			font-family: Source Han Sans CN, Source Han Sans CN;
-			font-weight: 400;
-			font-size: 12px;
-			color: #757575;
-			text-align: left;
-			font-style: normal;
-			text-transform: none;
-		}
-
-		.tq {
-			margin: 0 5px;
-		}
-		.qk {
-			margin-left: 5px;
-			color: #04f043;
-		}
-		.yellowqk {
-			margin-left: 5px;
-			color: yellow;
-		}
-		.redqk {
-			margin-left: 5px;
-			color: red;
-		}
-	}
-
-	.location-btn,
-	.layer-btn,
-	.back-btn {
+	.location-btn{
 		display: flex;
 		flex-direction: column;
 		justify-content: center;
@@ -547,99 +357,8 @@
 			font-size: 10px;
 		}
 	}
-	.back-btn {
-		bottom: 185px;
-	}
-	.layer-btn {
-		bottom: 130px;
-	}
-
 	.location-btn {
 		bottom: 76px;
-	}
-}
-
-.popup-container {
-	padding: 10px 22px;
-	background: #fff;
-	border-radius: 12px 12px 0 0;
-
-	.category-content {
-		.header {
-			height: 20px;
-			font-family: Source Han Sans CN, Source Han Sans CN;
-			font-weight: bold;
-			font-size: 16px;
-			color: #222324;
-			line-height: 20px;
-			text-align: left;
-			font-style: normal;
-			text-transform: none;
-		}
-
-		.content {
-			padding: 12px;
-			display: flex;
-			background: #fff;
-			border-radius: 16px;
-
-			.layer-box {
-				margin-left: calc((100% / 3 - 84px) * 3 / 2);
-
-				&:first-child {
-					margin-left: 0;
-				}
-
-				&.on {
-					.image {
-						position: relative;
-
-						&::after {
-							content: '';
-							position: absolute;
-							top: 0;
-							left: 0;
-							width: 100%;
-							height: 100%;
-							border-radius: 4px 4px 4px 4px;
-							border: 4px solid #1d6fe9;
-							z-index: 1;
-							box-sizing: border-box;
-						}
-					}
-
-					.label {
-						color: #1d6fe9;
-					}
-				}
-
-				.image {
-					width: 84px;
-					height: 82px;
-					border-radius: 4px 4px 4px 4px;
-					overflow: hidden;
-					box-sizing: border-box;
-					border: none;
-				}
-
-				.label {
-					margin-top: 6px;
-					height: 20px;
-					font-family: Source Han Sans CN, Source Han Sans CN;
-					font-weight: 400;
-					font-size: 14px;
-					color: #222324;
-					line-height: 20px;
-					text-align: center;
-					font-style: normal;
-					text-transform: none;
-				}
-			}
-
-			.layer-box:nth-child(3n + 1) {
-				margin-left: 0;
-			}
-		}
 	}
 }
 </style>

--
Gitblit v1.9.3