From d280bd841125d5b440c9cd79a3965619b5ae49f5 Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Fri, 23 May 2025 16:27:55 +0800
Subject: [PATCH] feat:删除文件

---
 /dev/null |  916 ---------------------------------------------------------
 1 files changed, 0 insertions(+), 916 deletions(-)

diff --git a/src/views/job/components/TaskIntermediateContent/TaskMap.vue b/src/views/job/components/TaskIntermediateContent/TaskMap.vue
deleted file mode 100644
index b283267..0000000
--- a/src/views/job/components/TaskIntermediateContent/TaskMap.vue
+++ /dev/null
@@ -1,916 +0,0 @@
-<template>
-	<div id="taskMap">
-		<div class="new-task-region" v-show="isShowSearch">
-			<div class="searchInput">
-				<el-select
-					:disabled="disabled"
-					:teleported="false"
-					class="ztzf-select"
-					v-model="optionsValue"
-					placeholder="请选择查询"
-				>
-					<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
-				</el-select>
-
-				<el-input v-model="searchKey" @input="handlerInput" placeholder="请输入搜索关键字"></el-input>
-			</div>
-		</div>
-		<div class="select-down-list" ref="selectDownRef" v-show="isSelectDown">
-			<div class="item" v-for="item in downList" @click="selectedValue(item)">{{ item.nickname || item.name }}</div>
-		</div>
-	</div>
-</template>
-<script setup>
-import _ from 'lodash'
-import * as Cesium from 'cesium'
-import { Cartesian3, Math as CesiumMath, Terrain, Viewer } from 'cesium'
-import AmapMercatorTilingScheme from '@/utils/cesium/AmapMercatorTilingScheme'
-import { analyzeKmzFile, removeTextKey, XMLToJSON } from '@/utils/cesium/kmz'
-import uavImg from '@/assets/images/home/useUavHome/uavImg.png'
-import { getLnglatAltitude } from '@/utils/cesium/mapUtil'
-import { getWaylineByArea } from '@/api/job/task'
-import { useStore } from 'vuex'
-import { searchByKeyword } from '@/api/home/common'
-// 新图片
-import addressArea from '@/assets/images/addressArea.png'
-import newStartPoint from '@/assets/images/newStartPoint.png'
-import newEndPointImg from '@/assets/images/newEndPointicon.png'
-import newlineImg from '@/assets/images/newarrow-right.png'
-import { PublicCesium } from '@/utils/cesium/publicCesium'
-import { gcj02ToWgs84 } from '@/utils/coordinateTransformation'
-import { ElMessage } from 'element-plus'
-const store = useStore()
-const userAreaPosition = computed(() => store.state.home.userAreaPosition)
-// const selectedAreaCode = computed(() => store.state.user.selectedAreaCode)
-// const userAreaCode = computed(() => store.state.user.userInfo.detail.areaCode)
-const loginUserInfo = computed(() => store.state.user.userInfo.detail)
-const areaValue = ref(loginUserInfo.value.areaName)
-
-// 声明事件
-const emit = defineEmits(['clickPosition', 'saveWayline'])
-
-const props = defineProps({
-	wayLineFile: {
-		type: String,
-		default: '',
-	},
-	waylineModel: {
-		type: String,
-		default: '',
-	},
-	checkedTableData: {
-		type: Array,
-		default: () => [],
-	},
-	waylineTypeTest: {
-		type: Number,
-		default: 3,
-	},
-})
-
-const searchKey = ref('')
-const optionsValue = ref('2')
-const disabled = ref(true)
-let options = [
-	{
-		value: '1',
-		label: '机巢',
-	},
-	{
-		value: '2',
-		label: '地址',
-	},
-]
-const isShowSearch = ref(false)
-const isSelectDown = ref(false)
-// 地址搜索结果
-const downList = ref([])
-// 获取地址搜索结果
-const getAddressList = async () => {
-	const res = await searchByKeyword(encodeURIComponent(`${areaValue.value}+${searchKey.value}`))
-	if (res.data.code !== 0) return
-	downList.value = res?.data?.data.tips || []
-	if (downList.value.length > 0) {
-		isSelectDown.value = true
-	} else {
-		isSelectDown.value = false
-	}
-}
-// input对应下拉数据初始化
-const inputSelect = () => {
-	if (optionsValue.value === '2' && searchKey.value !== '') {
-		getAddressList()
-	}
-}
-
-// 输入框input事件
-const handlerInput = _.debounce(inputSelect, 1000)
-const addressPointEntity = ref(null)
-const position = ref({})
-
-const imageryProvider_ammapSL = new Cesium.UrlTemplateImageryProvider({
-	url: 'https://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
-	layer: 'tdtVecBasicLayer',
-	style: 'default',
-	format: 'image/png',
-	tileMatrixSetID: 'GoogleMapsCompatible',
-	subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
-	maximumLevel: 18,
-	tilingScheme: new AmapMercatorTilingScheme(),
-	credit: 'amap_SL',
-})
-
-let viewer = null
-let currentEntity = null
-let connectLines = [] // 存储连接线实体
-let polygonPoints = [] // 存储多边形的点
-let polygonEntity = null // 存储多边形实体
-let existingEntity = null // 后端返回数据生成得面状线
-// 添加变量跟踪当前菜单
-let currentMenu = null
-// 存储选择航线第一个点的位置
-let firstPosition = null
-let machineNestPositionLine = null
-
-const init = () => {
-	viewer = new PublicCesium({ dom: 'taskMap' }).getViewer()
-	//设置默认点
-	const { longitude = 115.763819, latitude = 28.787374, height = 10 } = userAreaPosition.value || {}
-	viewer.camera.setView({
-		destination: Cartesian3.fromDegrees(longitude, latitude, height),
-		orientation: {
-			heading: 0, // east, default value is 0.0 (north)
-			pitch: Cesium.Math.toRadians(-90), // default value (looking down)
-			roll: 0.0, // default value
-		},
-	})
-}
-// 机巢下拉获取值
-const selectedValue = item => {
-	searchKey.value = item.nickname || item.name
-	const [lng, lat] = item.location.split(',').map(Number)
-	const [longitude, latitude] = gcj02ToWgs84(lng, lat)
-	position.value = { longitude, latitude }
-
-	// 添加标注点
-	const cartesian3 = Cesium.Cartesian3.fromDegrees(Number(position.value.longitude), Number(position.value.latitude), 0)
-	// 清除之前的实体
-	if (addressPointEntity.value) {
-		viewer.entities.remove(addressPointEntity.value)
-	}
-	addressPointEntity.value = viewer.entities.add({
-		id: 'address_point',
-		position: cartesian3,
-		billboard: {
-			image: addressArea,
-			pixelOffset: new Cesium.Cartesian2(0, -13),
-			outlineWidth: 0,
-			width: 30,
-			height: 30,
-			scale: 1.0,
-		},
-		label: {
-			text: searchKey.value,
-			font: '12px monospace',
-			showBackground: true,
-			horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
-			verticalOrigin: Cesium.VerticalOrigin.TOP,
-			disableDepthTestDistance: Number.POSITIVE_INFINITY,
-			pixelOffset: new Cesium.Cartesian2(0, -50),
-		},
-	})
-	flyToPoints([[Number(position.value.longitude), Number(position.value.latitude)]])
-	isSelectDown.value = false
-}
-
-// 单点左键点击事件
-const singlePointLeftClick = () => {
-	viewer.screenSpaceEventHandler.setInputAction(click => {
-		if (props.waylineTypeTest !== 1) return
-		const cartesian = viewer.camera.pickEllipsoid(click.position, viewer.scene.globe.ellipsoid)
-		if (cartesian) {
-			// 清除之前的实体
-			viewer.entities.removeAll()
-
-			// 添加新点
-			const point = viewer.entities.add({
-				position: cartesian,
-				point: {
-					pixelSize: 10,
-					color: Cesium.Color.fromCssColorString('#1FFF69'),
-				},
-			})
-
-			// 转换坐标
-			const cartographic = Cesium.Cartographic.fromCartesian(cartesian)
-			const longitude = Cesium.Math.toDegrees(cartographic.longitude)
-			const latitude = Cesium.Math.toDegrees(cartographic.latitude)
-
-			// 更新当前实体引用
-			currentEntity = point
-
-			// 发送坐标
-			emit('clickPosition', { longitude, latitude })
-		}
-	}, Cesium.ScreenSpaceEventType.LEFT_CLICK)
-}
-
-// 智能规划航线
-const intelligentPlanning = () => {
-	// 添加点击事件监听
-	viewer.screenSpaceEventHandler.setInputAction(click => {
-		if (props.waylineTypeTest !== 2) return
-		const cartesian = viewer.camera.pickEllipsoid(click.position, viewer.scene.globe.ellipsoid)
-
-		if (cartesian) {
-			// 添加新点
-			const point = viewer.entities.add({
-				position: cartesian,
-				point: {
-					pixelSize: 10,
-					color: Cesium.Color.fromCssColorString('#1FFF69'),
-				},
-			})
-
-			// 存储点位
-			polygonPoints.push(cartesian)
-
-			// 当点击超过2个点时绘制多边形
-			if (polygonPoints.length > 2) {
-				// 移除旧的多边形
-				if (polygonEntity) {
-					viewer.entities.remove(polygonEntity)
-				}
-
-				// 创建新的多边形
-				polygonEntity = viewer.entities.add({
-					polygon: {
-						hierarchy: new Cesium.PolygonHierarchy(polygonPoints),
-						// material: new Cesium.Color.fromBytes(212, 46, 32, 100),
-						material: new Cesium.Color(0, 0.5, 1, 0.3), // 蓝色
-						outline: true,
-						// outlineColor: new Cesium.Color.fromBytes(212, 46, 32, 255),
-						outlineColor: new Cesium.Color(0, 0.5, 1, 1), // 蓝
-						outlineWidth: 2,
-						height: 0, // Set explicit height
-						heightReference: Cesium.HeightReference.NONE, // Disable terrain clamping
-					},
-				})
-			}
-
-			// 转换坐标并发送
-			const cartographic = Cesium.Cartographic.fromCartesian(cartesian)
-			const longitude = Cesium.Math.toDegrees(cartographic.longitude)
-			const latitude = Cesium.Math.toDegrees(cartographic.latitude)
-			// emit('clickPosition', cartographic);
-		}
-	}, Cesium.ScreenSpaceEventType.LEFT_CLICK)
-	// 修改右键点击事件,添加菜单
-	viewer.screenSpaceEventHandler.setInputAction(movement => {
-		if (props.waylineTypeTest !== 2) return
-		if (polygonPoints.length > 2) {
-			// 清除之前的菜单
-			if (currentMenu) {
-				document.body.querySelectorAll('.context-menu').forEach(menu => menu.remove())
-			}
-
-			const menuContainer = document.createElement('div')
-			menuContainer.className = 'context-menu'
-
-			// 获取地图容器
-			const mapContainer = document.getElementById('taskMap')
-			// 使用鼠标右键点击的实际位置
-			menuContainer.style.position = 'absolute'
-			menuContainer.style.left = `${movement.position.x}px`
-			menuContainer.style.top = `${movement.position.y}px`
-			menuContainer.style.zIndex = '1000'
-
-			menuContainer.innerHTML = `
-				<div class="menu-item" id="saveWayline">保存航线</div>
-				<div class="menu-item" id="cancelDraw">取消绘制</div>
-			`
-
-			mapContainer.appendChild(menuContainer)
-			currentMenu = menuContainer
-
-			// 添加全局点击事件监听
-			const handleClickOutside = e => {
-				if (!menuContainer) return
-				const isClickInside = menuContainer.contains(e.target)
-				if (!isClickInside) {
-					menuContainer.remove()
-					document.removeEventListener('mousedown', handleClickOutside)
-				}
-			}
-
-			// 延迟添加事件监听,避免右键点击立即触发
-			setTimeout(() => {
-				document.addEventListener('mousedown', handleClickOutside)
-			}, 100)
-
-			// 菜单按钮点击事件
-			document.getElementById('saveWayline').onclick = () => {
-				const coordinates = polygonPoints.map(point => {
-					const cartographic = Cesium.Cartographic.fromCartesian(point)
-					return {
-						longitude: Cesium.Math.toDegrees(cartographic.longitude),
-						latitude: Cesium.Math.toDegrees(cartographic.latitude),
-					}
-				})
-				emit('saveWayline', coordinates)
-				saveWaylineByArea(coordinates)
-				mapContainer.removeChild(menuContainer)
-			}
-
-			document.getElementById('cancelDraw').onclick = () => {
-				polygonPoints = []
-				viewer.entities.removeAll()
-				mapContainer.removeChild(menuContainer)
-			}
-		}
-	}, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
-}
-
-// 保存航线并且获取线
-const saveWaylineByArea = dataValue => {
-	const polygonArray = dataValue.map(point => [point.longitude, point.latitude])
-	getWaylineByArea({ type: 2, polygon: polygonArray }).then(res => {
-		if (res.data.code !== 0) retrun
-		drawResultWayline(res.data.data)
-	})
-}
-
-// 绘制后端生成得面状线
-const drawResultWayline = dataValue => {
-	// 先检查并删除已存在的航线
-	existingEntity = viewer.entities.getById('result_wayline')
-	if (existingEntity) {
-		viewer.entities.remove(existingEntity)
-	}
-	const cartesian3List = ref([])
-	dataValue.forEach(lnglat => {
-		const cartesian3 = Cesium.Cartesian3.fromDegrees(
-			Number(lnglat.x),
-			Number(lnglat.y),
-			Number(100) // 默认100
-		)
-		cartesian3List.value.push(cartesian3)
-	})
-	const setting = {
-		id: 'result_wayline',
-		polyline: {
-			width: 2,
-			positions: cartesian3List.value,
-			material: Cesium.Color.CHARTREUSE,
-		},
-	}
-	existingEntity = viewer?.entities.add({
-		polyline: setting.polyline,
-		id: setting.id,
-	})
-}
-
-// 选中航线时调用 渲染线和点 type = 0
-const renderingLine = lineObj => {
-	const positions = lineObj.Placemark.map(item => {
-		const [lon, lat] = item.Point.coordinates.split(',')
-		return Cartesian3.fromDegrees(Number(lon), Number(lat))
-	})
-	// 存储第一个点的位置
-	firstPosition = positions[0]
-
-	viewer.entities.add({
-		polyline: {
-			width: 5,
-			positions: positions,
-			material: new Cesium.PolylineGlowMaterialProperty({
-				image: newlineImg,
-			}),
-			clampToGround: false,
-		},
-	})
-
-	positions.forEach((point, index) => {
-		let setting = {}
-		if (index === positions.length - 1) {
-			setting = {
-				position: point,
-				id: `point_${index}`,
-				billboard: {
-					image: newEndPointImg,
-					outlineWidth: 0,
-					width: 20,
-					height: 20,
-					scale: 1.0,
-				},
-			}
-		} else {
-			setting = {
-				position: point,
-				id: `point_${index}`,
-				label: {
-					text: `${index + 1}`,
-					font: 'bold 14px serif',
-					fillColor: Cesium.Color.WHITE,
-					// style: Cesium.LabelStyle.FILL,
-					// verticalOrigin: Cesium.VerticalOrigin.CENTER, // 垂直居中
-					// horizontalOrigin: Cesium.HorizontalOrigin.CENTER, // 水平居中
-					pixelOffset: new Cesium.Cartesian2(1, 0), // 根据需要调整偏移量
-					eyeOffset: new Cesium.Cartesian3(0, 0, -10), // 使标签在点的上方
-				},
-				billboard: {
-					image: new Cesium.ConstantProperty(newStartPoint),
-					width: 70,
-					height: 70,
-				},
-				offset: new Cesium.Cartesian2(10, 30),
-			}
-		}
-		viewer.entities.add(setting)
-	})
-}
-
-// 飞到中心点
-function flyToPoints(lngLatArr) {
-	if (!Array.isArray(lngLatArr) || lngLatArr.length === 0) return
-	const positions = lngLatArr.map(([lon, lat]) => Cesium.Cartesian3.fromDegrees(Number(lon), Number(lat)))
-	// 计算包围盒 BoundingSphere(所有点的外接球)
-	const boundingSphere = Cesium.BoundingSphere.fromPoints(positions)
-	viewer.camera.flyToBoundingSphere(boundingSphere, {
-		duration: 0,
-		offset: new Cesium.HeadingPitchRange(0, -90, boundingSphere.radius * 2),
-	})
-}
-
-// 异步解析kmz文件
-const analysis = async url => {
-	return new Promise(async resolve => {
-		const res = await analyzeKmzFile(`${url}?_t=${new Date().getTime()}`)
-		const templateXML = await res.fileInfoObj['wpmz/template.kml']
-		const waylinesXML = await res.fileInfoObj['wpmz/waylines.wpml']
-		const templateXMLJSON = XMLToJSON(templateXML)?.['Document']
-		const templateXMLObj = removeTextKey(templateXMLJSON.Folder)
-		const waylinesXMLJSON = XMLToJSON(waylinesXML)?.['Document']
-		resolve({ templateXMLObj, waylinesXMLJSON })
-	})
-}
-
-// 绘制线和飞行
-const drawLine = async () => {
-	let prexUrl = ref(import.meta.env.VITE_APP_AIRLINE_URL + props.wayLineFile)
-	const { templateXMLObj, waylinesXMLJSON } = await analysis(prexUrl.value)
-	if (props.waylineModel === 'planar') {
-		drawPlanarWayline(templateXMLObj, waylinesXMLJSON)
-	} else {
-		if (!templateXMLObj.Placemark.length) return
-		renderingLine(templateXMLObj)
-		const points = templateXMLObj.Placemark.map(item => item.Point.coordinates.split(','))
-		flyToPoints(points)
-	}
-}
-
-// 生成面状航线
-const drawPlanarWayline = async (templateXMLObj, waylinesXMLJSON) => {
-	let coordArr = null
-	// 取出点位
-	let coordinates =
-		templateXMLObj.Placemark.Polygon?.outerBoundaryIs.LinearRing.coordinates?.['#text']?.split('\n') || []
-
-	// 数组转换
-	coordArr = coordinates.map(coordinate =>
-		coordinate
-			.replace(/\s+/g, '')
-			.split(',')
-			.map(v => Number(v))
-	)
-	// 获取当前经纬度海拔高度
-	const newCoordArr = []
-	// 面状点位
-	for (let [index, coord] of coordArr.entries()) {
-		const [lng, lat] = coord
-		const { height: hAltitude } = await getLnglatAltitude(Number(lng), Number(lat), global.$viewer)
-		newCoordArr.push([lng, lat, hAltitude])
-	}
-	// 航线点位
-	let coordinateTest = []
-	const waylinePoints = waylinesXMLJSON.Folder.Placemark
-	if (!waylinePoints.length) return ElMessage.error('没有航线点位')
-	const waylinePointLnglats = waylinePoints.map(json => {
-		const executeHeight = Number(json.executeHeight['#text'])
-		const coordinate = json.Point.coordinates['#text'].split(',').map(lnglat => Number(lnglat))
-		coordinateTest.push(coordinate)
-		coordinates.push()
-		return Cesium.Cartesian3.fromDegrees(coordinate[0], coordinate[1], executeHeight)
-	})
-	// 绘制面状航线--------------------
-	// waylinePointLnglats.unshift(
-	// 	Cesium.Cartesian3.fromDegrees(
-	// 		Number(this.droneCoordinates.longitude),
-	// 		Number(this.droneCoordinates.latitude),
-	// 		Number(this.droneCoordinates.height)
-	// 	)
-	// )
-	// 判断是2D还是3D
-	// if (!this.clampToGroundshow) {
-	// 	let cartesian = this.addTurnPoint(waylinePointLnglats[0], waylinePointLnglats[1])
-	// 	waylinePointLnglats.splice(1, 0, cartesian)
-	// }
-
-	existingEntity = viewer.entities.getById('result_wayline')
-	if (existingEntity) {
-		viewer.entities.remove(existingEntity)
-	}
-
-	existingEntity = viewer.entities.add({
-		id: 'result_wayline',
-		polyline: {
-			width: 3,
-			positions: waylinePointLnglats,
-			material: Cesium.Color.CHARTREUSE,
-			zIndex: 1,
-			clampToGround: false,
-		},
-	})
-	// 传给后端 ,取列表数据
-	const cartesianlengthArr = waylinePointLnglats.map(point => {
-		const cartographic = Cesium.Cartographic.fromCartesian(point)
-		return {
-			longitude: Cesium.Math.toDegrees(cartographic.longitude),
-			latitude: Cesium.Math.toDegrees(cartographic.latitude),
-		}
-	})
-	emit('saveWayline', cartesianlengthArr)
-	// let cartesianlengthArr = waylinePointLnglats.map(cartesian => {
-	// 	return [cartesian3Convert(cartesian, viewer).longitude, cartesian3Convert(cartesian, viewer).latitude]
-	// })
-	// const centerpoint = getCenterPoint(cartesianlengthArr)
-	// let maxlength = 0
-	// cartesianlengthArr.forEach((item, index) => {
-	// 	let banseTwoPoints = getLnglatDist(item[0], item[1], centerpoint.lng, centerpoint.lat)
-	// 	if (banseTwoPoints > maxlength) {
-	// 		maxlength = banseTwoPoints
-	// 	}
-	// })
-
-	flyToPoints(coordinateTest)
-}
-
-// 单个点生成选择多个机巢生成航线和选择航线连线
-const singlePointLines = newVal => {
-	// 清除之前的连接线
-	connectLines.forEach(line => viewer.entities.remove(line))
-	connectLines = []
-	if (currentEntity || props.waylineTypeTest === 0) {
-		// 获取当前点的位置
-		let currentPosition = null
-		if (props.waylineTypeTest === 0) {
-			currentPosition = firstPosition
-		} else {
-			currentPosition = currentEntity.position.getValue()
-		}
-
-		// 为每个选中的机巢创建点和连接线
-		newVal.forEach(item => {
-			// 创建机巢点
-			const nestPosition = Cartesian3.fromDegrees(Number(item.longitude), Number(item.latitude))
-			viewer.entities.add({
-				position: nestPosition,
-				billboard: {
-					image: new Cesium.ConstantProperty(uavImg),
-					width: 24,
-					height: 24,
-				},
-			})
-
-			// 创建连接线
-			machineNestPositionLine = viewer.entities.add({
-				polyline: {
-					positions: [currentPosition, nestPosition],
-					width: 5,
-					material: new Cesium.PolylineGlowMaterialProperty({
-						image: newlineImg,
-					}),
-				},
-			})
-			connectLines.push(machineNestPositionLine)
-		})
-
-		// 飞到所有点的中心位置
-		const lngLatArr = newVal.map(item => [item.longitude, item.latitude])
-		flyToPoints(lngLatArr)
-	}
-}
-
-// 智慧规划航线-面状航线
-const planarPointsLines = newVal => {
-	// 如果存在面状航线
-	if (existingEntity) {
-		const waylinePositions = existingEntity.polyline.positions.getValue()
-
-		newVal.forEach(item => {
-			// 创建机巢点
-			const nestPosition = Cartesian3.fromDegrees(Number(item.longitude), Number(item.latitude))
-
-			// 添加机巢图标
-			viewer.entities.add({
-				position: nestPosition,
-				billboard: {
-					image: new Cesium.ConstantProperty(uavImg),
-					width: 24,
-					height: 24,
-				},
-			})
-
-			// 找到最近的航线点并连线
-			let minDistance = Number.MAX_VALUE
-			let closestPosition = null
-
-			waylinePositions.forEach(waylinePos => {
-				const distance = Cartesian3.distance(nestPosition, waylinePos)
-				if (distance < minDistance) {
-					minDistance = distance
-					closestPosition = waylinePos
-				}
-			})
-
-			// 创建连接线
-			if (closestPosition) {
-				machineNestPositionLine = viewer.entities.add({
-					polyline: {
-						positions: [nestPosition, closestPosition],
-						width: 2,
-						material: new Cesium.PolylineDashMaterialProperty({
-							color: Cesium.Color.CHARTREUSE,
-							dashLength: 8.0,
-						}),
-					},
-				})
-				connectLines.push(machineNestPositionLine)
-			}
-		})
-
-		// 飞到所有点的中心位置
-		const lngLatArr = newVal.map(item => [item.longitude, item.latitude])
-		flyToPoints(lngLatArr)
-	}
-}
-
-// 监听选择航线文件事件
-watch(
-	() => props.wayLineFile,
-	async newVal => {
-		await removeMap()
-		if (newVal) await drawLine()
-	},
-	{ deep: true }
-)
-
-// 监听表格选中数据变化
-watch(
-	() => props.checkedTableData,
-	newVal => {
-		if (!newVal.length) {
-			// 清除连接线
-			viewer.entities.remove(machineNestPositionLine)
-			return
-		}
-		if (newVal.length > 0 && props.waylineModel === 'point') {
-			singlePointLines(newVal)
-		} else if (newVal.length > 0 && props.waylineModel === 'planar') {
-			planarPointsLines(newVal)
-		}
-	},
-	{ deep: true }
-)
-
-watch(
-	() => props.waylineTypeTest,
-	async newVal => {
-		if (newVal === 0) {
-			isShowSearch.value = false
-		} else {
-			isShowSearch.value = true
-		}
-		await removeMap()
-		if (newVal === 1) await singlePointLeftClick()
-		else if (newVal === 2) await intelligentPlanning()
-	},
-	{ deep: true }
-)
-
-const removeEvent = () => {
-	// 清除事件监听器
-	viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)
-	viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_CLICK)
-}
-
-const removeMap = () => {
-	// 清除所有实体
-	if (viewer) {
-		// 清除连接线
-		viewer.entities.remove(machineNestPositionLine)
-		machineNestPositionLine = null
-		connectLines.forEach(line => viewer.entities.remove(line))
-		connectLines = []
-
-		// 清除多边形点和实体
-		polygonPoints = []
-		if (polygonEntity) {
-			viewer.entities.remove(polygonEntity)
-		}
-
-		// 清除当前实体和面状航线
-		if (currentEntity) {
-			viewer.entities.remove(currentEntity)
-		}
-		if (existingEntity) {
-			viewer.entities.remove(existingEntity)
-		}
-		if (addressPointEntity) {
-			viewer.entities.remove(addressPointEntity)
-		}
-
-		viewer.entities.removeAll()
-
-		// 重置所有变量
-		currentEntity = null
-		polygonEntity = null
-		existingEntity = null
-		addressPointEntity.value = null
-	}
-}
-
-onBeforeUnmount(() => {
-	removeMap()
-	removeEvent()
-	// 移除所有实体并销毁viewer
-	viewer.destroy()
-	viewer = null
-})
-
-onMounted(() => {
-	inputSelect()
-	nextTick(() => {
-		init()
-	})
-})
-</script>
-<style scoped lang="scss">
-#taskMap {
-	position: relative;
-	height: 100%;
-	.select-down-list {
-		position: absolute;
-		top: 50px;
-		left: 42%;
-		transform: translateX(-40%);
-		width: 230px;
-		height: 256px;
-		overflow-y: auto;
-		background: linear-gradient(180deg, #0d3556 0%, #012350 100%);
-		border-radius: 0px 0px 8px 8px;
-		border: 1px solid;
-		border-image: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(115, 192, 255, 1)) 1 1;
-		font-size: 14px;
-		color: #ffffff;
-		// opacity: 0.8;
-		&::-webkit-scrollbar {
-			width: 0;
-			display: none;
-		}
-		-ms-overflow-style: none; /* IE and Edge */
-		scrollbar-width: none; /* Firefox */
-		.item {
-			color: #ffffff;
-			height: 32px;
-			line-height: 32px;
-			text-align: center;
-			cursor: pointer;
-			white-space: nowrap;
-			overflow: hidden;
-			text-overflow: ellipsis;
-			&:hover {
-				background: linear-gradient(
-					90deg,
-					rgba(0, 122, 255, 0) 0%,
-					rgba(0, 98, 204, 0.6) 50%,
-					rgba(0, 73, 153, 0) 100%
-				);
-				border: 1px solid;
-				border-image: linear-gradient(90deg, rgba(0, 199, 190, 0), rgba(48, 176, 199, 1), rgba(0, 199, 190, 0)) 1 1;
-			}
-		}
-	}
-	.new-task-region {
-		width: 350px;
-		height: 43px;
-		position: absolute;
-		top: 10px;
-		left: 50%;
-		transform: translateX(-50%);
-		display: flex;
-		.el-select {
-			width: 100px;
-			height: 100%;
-
-			:deep() {
-				.el-select__wrapper {
-					background: transparent;
-					border: none;
-					box-shadow: none;
-					height: 100%;
-					padding-left: 20px;
-				}
-
-				.el-select__suffix {
-					display: none;
-				}
-
-				.el-select__selected-item {
-					font-family: Source Han Sans CN, Source Han Sans CN, serif;
-					font-weight: 400;
-					font-size: 14px;
-					color: #ffffff;
-					line-height: 18px;
-				}
-			}
-		}
-		.searchInput {
-			width: 243px;
-			height: 100%;
-			// background: url('@/assets/images/home/searchBox/searchBg1.png') no-repeat center / 100% 100%;
-			display: flex;
-
-			.el-input {
-				height: 100%;
-
-				:deep() {
-					.el-input__wrapper {
-						background: transparent;
-						border: none;
-						box-shadow: none;
-						height: 100%;
-					}
-
-					.el-input__inner {
-						font-family: Source Han Sans CN, Source Han Sans CN, serif;
-						font-weight: 400;
-						font-size: 14px;
-						color: #ffffff;
-						line-height: 18px;
-						white-space: nowrap; /* 禁止换行 */
-						overflow: hidden; /* 隐藏溢出内容 */
-						text-overflow: ellipsis; /* 使用省略号显示 */
-					}
-				}
-			}
-		}
-	}
-	:deep() {
-		.cesium-viewer {
-			height: 100%;
-			overflow: hidden;
-
-			.cesium-viewer-cesiumWidgetContainer {
-				width: 100%;
-				height: 100%;
-
-				.cesium-widget {
-					width: 100%;
-					height: 100%;
-
-					canvas {
-						width: 100%;
-						height: 100%;
-					}
-				}
-			}
-		}
-
-		.cesium-viewer-bottom {
-			display: none;
-		}
-	}
-
-	:deep(.context-menu) {
-		position: absolute;
-		background: rgba(0, 21, 41, 0.9);
-		border-radius: 4px;
-		padding: 8px 0;
-		min-width: 120px;
-		box-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);
-
-		.menu-item {
-			padding: 8px 16px;
-			color: #fff;
-			cursor: pointer;
-			transition: all 0.3s;
-			font-size: 14px;
-
-			&:hover {
-				background: rgba(255, 255, 255, 0.1);
-			}
-		}
-	}
-}
-</style>

--
Gitblit v1.9.3